Regenerated with a mostly empty directory

This commit is contained in:
Luke Hagar
2024-07-01 16:00:34 +00:00
parent 1be6dc2bfd
commit 981d3b0315
219 changed files with 5251 additions and 25822 deletions

View File

@@ -1,22 +0,0 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/java
{
"name": "Java SDK",
"image": "mcr.microsoft.com/devcontainers/java:1-17-bullseye",
"features": {
"ghcr.io/devcontainers/features/java:1": {
"version": "none",
"installMaven": "true",
"installGradle": "false"
}
},
"postCreateCommand": "mvn install && mvn -f examples/pom.xml install",
"customizations": {
"codespaces": {
"openFiles": [
"examples/src/main/java/47/one0/examples/Main.java",
"README.md"
]
}
}
}

View File

@@ -1,2 +0,0 @@
PLEXSDK_API_KEY=
PLEXSDK_API_KEY_HEADER=

View File

@@ -1,23 +0,0 @@
# This workflow was added by CodeSee. Learn more at https://codesee.io/
# This is v2.0 of this workflow file
on:
push:
branches:
- main
pull_request_target:
types: [opened, synchronize, reopened]
name: CodeSee
permissions: read-all
jobs:
codesee:
runs-on: ubuntu-latest
continue-on-error: true
name: Analyze the repo with CodeSee
steps:
- uses: Codesee-io/codesee-action@v2
with:
codesee-token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }}
codesee-url: https://app.codesee.io

19
.gitignore vendored
View File

@@ -7,22 +7,3 @@ bin/
.project .project
.settings/ .settings/
.DS_Store .DS_Store
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*

View File

@@ -1,17 +1,17 @@
lockVersion: 2.0.0 lockVersion: 2.0.0
id: ff6658aa-ae09-4bec-b500-5ba8bcd3a069 id: d74213ba-4eeb-4de9-a309-6b70cf5c4bd4
management: management:
docChecksum: e73920abd3a55e8d249592f2e3090574 docChecksum: e73920abd3a55e8d249592f2e3090574
docVersion: 0.0.3 docVersion: 0.0.3
speakeasyVersion: 1.321.0 speakeasyVersion: 1.323.0
generationVersion: 2.354.2 generationVersion: 2.356.0
releaseVersion: 0.1.1 releaseVersion: 0.1.1
configChecksum: 32d07b03c4a1b8364852e49423957f33 configChecksum: 32d07b03c4a1b8364852e49423957f33
features: features:
java: java:
additionalDependencies: 0.1.0 additionalDependencies: 0.1.0
constsAndDefaults: 0.1.1 constsAndDefaults: 0.1.1
core: 3.26.0 core: 3.26.1
flattening: 2.81.1 flattening: 2.81.1
globalSecurity: 2.82.5 globalSecurity: 2.82.5
globalSecurityCallbacks: 0.1.0 globalSecurityCallbacks: 0.1.0
@@ -1052,4 +1052,21 @@ generatedFiles:
- docs/models/errors/GetWatchlistErrors.md - docs/models/errors/GetWatchlistErrors.md
- docs/models/errors/GetWatchlistResponseBody.md - docs/models/errors/GetWatchlistResponseBody.md
- docs/models/shared/Security.md - docs/models/shared/Security.md
- docs/sdks/plexapi/README.md
- docs/sdks/server/README.md
- docs/sdks/media/README.md
- docs/sdks/video/README.md
- docs/sdks/activities/README.md
- docs/sdks/butler/README.md
- docs/sdks/plex/README.md
- docs/sdks/hubs/README.md
- docs/sdks/search/README.md
- docs/sdks/library/README.md
- docs/sdks/log/README.md
- docs/sdks/playlists/README.md
- docs/sdks/authentication/README.md
- docs/sdks/statistics/README.md
- docs/sdks/sessions/README.md
- docs/sdks/updater/README.md
- docs/sdks/watchlist/README.md
- USAGE.md - USAGE.md

View File

@@ -1,17 +1,17 @@
speakeasyVersion: 1.321.0 speakeasyVersion: 1.323.0
sources: sources:
my-source: my-source:
sourceNamespace: my-source sourceNamespace: my-source
sourceRevisionDigest: sha256:7bed80d5d81c0501209a4de7a65ad0bd438a89f9e8f6eba59701704e3fb11ead sourceRevisionDigest: sha256:b4ee5010d8a55049aa655b056e12618e038d75f8a8381ec498e97a413cb9f0f9
sourceBlobDigest: sha256:ab8481086bfdae5fd1aa42a674434b35061177c23040cf48c9247708594ce134 sourceBlobDigest: sha256:cb332c62f2f70662406a011c9561382d0721b12faf89259fcc8bd7c41ddd4faa
tags: tags:
- latest - latest
targets: targets:
plexjava: plexjava:
source: my-source source: my-source
sourceNamespace: my-source sourceNamespace: my-source
sourceRevisionDigest: sha256:7bed80d5d81c0501209a4de7a65ad0bd438a89f9e8f6eba59701704e3fb11ead sourceRevisionDigest: sha256:b4ee5010d8a55049aa655b056e12618e038d75f8a8381ec498e97a413cb9f0f9
sourceBlobDigest: sha256:ab8481086bfdae5fd1aa42a674434b35061177c23040cf48c9247708594ce134 sourceBlobDigest: sha256:cb332c62f2f70662406a011c9561382d0721b12faf89259fcc8bd7c41ddd4faa
outLocation: /home/luke/github/plexjava outLocation: /home/luke/github/plexjava
workflow: workflow:
workflowVersion: 1.0.0 workflowVersion: 1.0.0

19
LICENSE
View File

@@ -1,19 +0,0 @@
Copyright (c) 2023
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2023 LukeHagar
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,26 +0,0 @@
.PHONY: *
all: speakeasy
speakeasy: check-speakeasy
speakeasy generate sdk --lang java -o . -s ./openapi.yaml
speakeasy-validate: check-speakeasy
speakeasy validate openapi -s ./openapi.yaml
openapi:
curl https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml > ./openapi.yaml
# This will replace the generation source in your workflow file with your local schema path
generate-from-local:
@if ! which sed >/dev/null; then \
echo "sed is not installed. Please install it using the following command:"; \
echo "For Ubuntu/Debian: apt-get install sed"; \
echo "For macOS: sed is pre-installed"; \
exit 1; \
fi
@sed -i '' '/openapi_docs: |/{n;s|-.*|- ./openapi.yaml|;}' ./.github/workflows/speakeasy_sdk_generation.yml
check-speakeasy:
@command -v speakeasy >/dev/null 2>&1 || { echo >&2 "speakeasy CLI is not installed. Please install before continuing."; exit 1; }

451
README.md
View File

@@ -1,140 +1,291 @@
# plexapi
# PlexSDK Java SDK 0.0.1 <div align="left">
<a href="https://speakeasyapi.dev/"><img src="https://custom-icon-badges.demolab.com/badge/-Built%20By%20Speakeasy-212015?style=for-the-badge&logoColor=FBE331&logo=speakeasy&labelColor=545454" /></a>
<a href="https://mit-license.org/">
<img src="https://img.shields.io/badge/License-MIT-blue.svg" style="width: 100px; height: 28px;" />
</a>
</div>
A Java SDK for PlexSDK. <!-- Start SDK Installation [installation] -->
## SDK Installation
An Open API Spec for interacting with Plex.tv and Plex Servers ### Getting started
- API version: 0.0.1 JDK 11 or later is required.
- SDK version: 0.0.1
## Table of Contents The samples below show how a published SDK artifact is used:
- [PlexSDK Java SDK 0.0.1](#plexsdk-java-sdk-001) Gradle:
- [Table of Contents](#table-of-contents) ```groovy
- [Requirements](#requirements) implementation 'lukehagar.plexapi:plexapi:0.1.1'
- [Installation](#installation) ```
- [Authentication](#authentication)
- [API Key](#api-key)
- [API Endpoint Services](#api-endpoint-services)
- [API Models](#api-models)
- [Testing](#testing)
- [Configuration](#configuration)
- [Sample Usage](#sample-usage)
- [License](#license)
## Requirements Maven:
```xml
- Java 8
- Maven
## Installation
If you use Maven, place the following within the `<dependencies>` tag in your pom.xml file:
```XML
<dependency> <dependency>
<groupId>47.one0</groupId> <groupId>lukehagar.plexapi</groupId>
<artifactId>plex-sdk</artifactId> <artifactId>plexapi</artifactId>
<version>0.0.1</version> <version>0.1.1</version>
</dependency> </dependency>
``` ```
If you use Gradle, paste the next line inside the dependencies block of your build.gradle file: ### How to build
After cloning the git repository to your file system you can build the SDK artifact from source to the `build` directory by running `./gradlew build` on *nix systems or `gradlew.bat` on Windows systems.
```Gradle If you wish to build from source and publish the SDK artifact to your local Maven repository (on your filesystem) then use the following command (after cloning the git repo locally):
implementation group: "47.one0", name: "PlexSDK", version: "0.0.1"
On *nix:
```bash
./gradlew publishToMavenLocal -Pskip.signing
``` ```
On Windows:
## Authentication ```bash
gradlew.bat publishToMavenLocal -Pskip.signing
To see whether an endpoint needs a specific type of authentication check the endpoint's documentation.
### API Key
The PlexSDK API uses API keys as a form of authentication.
An API key is a unique identifier used to authenticate a user, developer, or calling program to an API.
The API key can be set for the SDK through:
```Java
PlexSDK sdk = new PlexSDK("YOUR_API_KEY", "YOUR_API_KEY_HEADER");
``` ```
<!-- End SDK Installation [installation] -->
## API Endpoint Services <!-- Start SDK Example Usage [usage] -->
## SDK Example Usage
All URIs are relative to http://10.10.10.47:32400. ### Example
Click the service name for a full list of the service methods. ```java
package hello.world;
| Service | import java.math.BigDecimal;
| :------ | import java.math.BigDecimal;
|[ServerService](src/main/java/47/one0/services/README.md#serverservice)| import java.math.BigInteger;
|[MediaService](src/main/java/47/one0/services/README.md#mediaservice)| import java.time.LocalDate;
|[ActivitiesService](src/main/java/47/one0/services/README.md#activitiesservice)| import java.time.OffsetDateTime;
|[ButlerService](src/main/java/47/one0/services/README.md#butlerservice)| import java.util.Optional;
|[HubsService](src/main/java/47/one0/services/README.md#hubsservice)| import lukehagar.plexapi.plexapi.PlexAPI;
|[SearchService](src/main/java/47/one0/services/README.md#searchservice)| import lukehagar.plexapi.plexapi.models.operations.*;
|[LibraryService](src/main/java/47/one0/services/README.md#libraryservice)| import lukehagar.plexapi.plexapi.models.shared.*;
|[LogService](src/main/java/47/one0/services/README.md#logservice)| import lukehagar.plexapi.plexapi.models.shared.Security;
|[PlaylistsService](src/main/java/47/one0/services/README.md#playlistsservice)| import lukehagar.plexapi.plexapi.utils.EventStream;
|[SecurityService](src/main/java/47/one0/services/README.md#securityservice)| import org.openapitools.jackson.nullable.JsonNullable;
|[SessionsService](src/main/java/47/one0/services/README.md#sessionsservice)| import static java.util.Map.entry;
|[UpdaterService](src/main/java/47/one0/services/README.md#updaterservice)|
|[VideoService](src/main/java/47/one0/services/README.md#videoservice)|
## API Models public class Application {
[A list documenting all API models for this SDK](src/main/java/47/one0//models/README.md#plexsdk-models). public static void main(String[] args) throws Exception {
## Testing
Unit tests aren't available yet. When they are, you'll be able to run them with this command:
```Bash
mvn clean test
```
## Configuration
Your SDK may require some configuration changes.
This API is configured to use a security token for authorization. You should edit `examples/src/main/java/47/one0/examples/Main.java` and paste your own tokens in place of `PLEXSDK_API_KEY` & `PLEXSDK_API_KEY_HEADER`.
## Sample Usage
```Java
package 47.one0.examples;
import 47.one0.exceptions.ApiException;
import 47.one0.PlexSDK;
public class Main {
public static void main(String[] args) {
PlexSDK client = new PlexSDK(System.getenv("PLEXSDK_API_KEY"), System.getenv("PLEXSDK_API_KEY_HEADER"));
try { try {
Object response = client.serverService.getServerCapabilities(); PlexAPI sdk = PlexAPI.builder()
System.out.println(response); .accessToken("<YOUR_API_KEY_HERE>")
} catch(ApiException e) { .xPlexClientIdentifier("Postman")
e.printStackTrace(); .build();
GetServerCapabilitiesResponse res = sdk.server().getServerCapabilities()
.call();
if (res.object().isPresent()) {
// handle response
} }
} catch (lukehagar.plexapi.plexapi.models.errors.GetServerCapabilitiesResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
} }
} }
``` ```
<!-- End SDK Example Usage [usage] -->
Inside this directory is `examples/src/main/java/47/one0/examples/Main.java`. It's a simple, "hello, world" level program to demonstate this SDK. Run `install.sh` to prepare the SDK for use. <!-- Start Available Resources and Operations [operations] -->
## Available Resources and Operations
To see what other functions this SDK is capable of, look inside `src/main/java/47/one0/http/*Client.java`. ### [server()](docs/sdks/server/README.md)
## License * [getServerCapabilities](docs/sdks/server/README.md#getservercapabilities) - Get Server Capabilities
* [getServerPreferences](docs/sdks/server/README.md#getserverpreferences) - Get Server Preferences
* [getAvailableClients](docs/sdks/server/README.md#getavailableclients) - Get Available Clients
* [getDevices](docs/sdks/server/README.md#getdevices) - Get Devices
* [getServerIdentity](docs/sdks/server/README.md#getserveridentity) - Get Server Identity
* [getMyPlexAccount](docs/sdks/server/README.md#getmyplexaccount) - Get MyPlex Account
* [getResizedPhoto](docs/sdks/server/README.md#getresizedphoto) - Get a Resized Photo
* [getServerList](docs/sdks/server/README.md#getserverlist) - Get Server List
License: MIT. See license in LICENSE. ### [media()](docs/sdks/media/README.md)
* [markPlayed](docs/sdks/media/README.md#markplayed) - Mark Media Played
* [markUnplayed](docs/sdks/media/README.md#markunplayed) - Mark Media Unplayed
* [updatePlayProgress](docs/sdks/media/README.md#updateplayprogress) - Update Media Play Progress
### [video()](docs/sdks/video/README.md)
* [getTimeline](docs/sdks/video/README.md#gettimeline) - Get the timeline for a media item
* [startUniversalTranscode](docs/sdks/video/README.md#startuniversaltranscode) - Start Universal Transcode
### [activities()](docs/sdks/activities/README.md)
* [getServerActivities](docs/sdks/activities/README.md#getserveractivities) - Get Server Activities
* [cancelServerActivities](docs/sdks/activities/README.md#cancelserveractivities) - Cancel Server Activities
### [butler()](docs/sdks/butler/README.md)
* [getButlerTasks](docs/sdks/butler/README.md#getbutlertasks) - Get Butler tasks
* [startAllTasks](docs/sdks/butler/README.md#startalltasks) - Start all Butler tasks
* [stopAllTasks](docs/sdks/butler/README.md#stopalltasks) - Stop all Butler tasks
* [startTask](docs/sdks/butler/README.md#starttask) - Start a single Butler task
* [stopTask](docs/sdks/butler/README.md#stoptask) - Stop a single Butler task
### [plex()](docs/sdks/plex/README.md)
* [getHomeData](docs/sdks/plex/README.md#gethomedata) - Get Plex Home Data
* [getPin](docs/sdks/plex/README.md#getpin) - Get a Pin
* [getToken](docs/sdks/plex/README.md#gettoken) - Get Access Token
### [hubs()](docs/sdks/hubs/README.md)
* [getGlobalHubs](docs/sdks/hubs/README.md#getglobalhubs) - Get Global Hubs
* [getLibraryHubs](docs/sdks/hubs/README.md#getlibraryhubs) - Get library specific hubs
### [search()](docs/sdks/search/README.md)
* [performSearch](docs/sdks/search/README.md#performsearch) - Perform a search
* [performVoiceSearch](docs/sdks/search/README.md#performvoicesearch) - Perform a voice search
* [getSearchResults](docs/sdks/search/README.md#getsearchresults) - Get Search Results
### [library()](docs/sdks/library/README.md)
* [getFileHash](docs/sdks/library/README.md#getfilehash) - Get Hash Value
* [getRecentlyAdded](docs/sdks/library/README.md#getrecentlyadded) - Get Recently Added
* [getLibraries](docs/sdks/library/README.md#getlibraries) - Get All Libraries
* [getLibrary](docs/sdks/library/README.md#getlibrary) - Get Library Details
* [deleteLibrary](docs/sdks/library/README.md#deletelibrary) - Delete Library Section
* [getLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get Library Items
* [refreshLibrary](docs/sdks/library/README.md#refreshlibrary) - Refresh Library
* [searchLibrary](docs/sdks/library/README.md#searchlibrary) - Search Library
* [getMetadata](docs/sdks/library/README.md#getmetadata) - Get Items Metadata
* [getMetadataChildren](docs/sdks/library/README.md#getmetadatachildren) - Get Items Children
* [getTopWatchedContent](docs/sdks/library/README.md#gettopwatchedcontent) - Get Top Watched Content
* [getOnDeck](docs/sdks/library/README.md#getondeck) - Get On Deck
### [log()](docs/sdks/log/README.md)
* [logLine](docs/sdks/log/README.md#logline) - Logging a single line message.
* [logMultiLine](docs/sdks/log/README.md#logmultiline) - Logging a multi-line message
* [enablePaperTrail](docs/sdks/log/README.md#enablepapertrail) - Enabling Papertrail
### [playlists()](docs/sdks/playlists/README.md)
* [createPlaylist](docs/sdks/playlists/README.md#createplaylist) - Create a Playlist
* [getPlaylists](docs/sdks/playlists/README.md#getplaylists) - Get All Playlists
* [getPlaylist](docs/sdks/playlists/README.md#getplaylist) - Retrieve Playlist
* [deletePlaylist](docs/sdks/playlists/README.md#deleteplaylist) - Deletes a Playlist
* [updatePlaylist](docs/sdks/playlists/README.md#updateplaylist) - Update a Playlist
* [getPlaylistContents](docs/sdks/playlists/README.md#getplaylistcontents) - Retrieve Playlist Contents
* [clearPlaylistContents](docs/sdks/playlists/README.md#clearplaylistcontents) - Delete Playlist Contents
* [addPlaylistContents](docs/sdks/playlists/README.md#addplaylistcontents) - Adding to a Playlist
* [uploadPlaylist](docs/sdks/playlists/README.md#uploadplaylist) - Upload Playlist
### [authentication()](docs/sdks/authentication/README.md)
* [getTransientToken](docs/sdks/authentication/README.md#gettransienttoken) - Get a Transient Token.
* [getSourceConnectionInformation](docs/sdks/authentication/README.md#getsourceconnectioninformation) - Get Source Connection Information
### [statistics()](docs/sdks/statistics/README.md)
* [getStatistics](docs/sdks/statistics/README.md#getstatistics) - Get Media Statistics
* [getResourcesStatistics](docs/sdks/statistics/README.md#getresourcesstatistics) - Get Resources Statistics
* [getBandwidthStatistics](docs/sdks/statistics/README.md#getbandwidthstatistics) - Get Bandwidth Statistics
### [sessions()](docs/sdks/sessions/README.md)
* [getSessions](docs/sdks/sessions/README.md#getsessions) - Get Active Sessions
* [getSessionHistory](docs/sdks/sessions/README.md#getsessionhistory) - Get Session History
* [getTranscodeSessions](docs/sdks/sessions/README.md#gettranscodesessions) - Get Transcode Sessions
* [stopTranscodeSession](docs/sdks/sessions/README.md#stoptranscodesession) - Stop a Transcode Session
### [updater()](docs/sdks/updater/README.md)
* [getUpdateStatus](docs/sdks/updater/README.md#getupdatestatus) - Querying status of updates
* [checkForUpdates](docs/sdks/updater/README.md#checkforupdates) - Checking for updates
* [applyUpdates](docs/sdks/updater/README.md#applyupdates) - Apply Updates
### [watchlist()](docs/sdks/watchlist/README.md)
* [getWatchlist](docs/sdks/watchlist/README.md#getwatchlist) - Get User Watchlist
<!-- End Available Resources and Operations [operations] -->
<!-- Start Global Parameters [global-parameters] -->
## Global Parameters
A parameter is configured globally. This parameter may be set on the SDK client instance itself during initialization. When configured as an option during SDK initialization, This global value will be used as the default on the operations that use it. When such operations are called, there is a place in each to override the global value, if needed.
For example, you can set `X-Plex-Client-Identifier` to `"Postman"` at SDK initialization and then you do not have to pass the same value on calls to operations like `getPin`. But if you want to do so you may, which will locally override the global setting. See the example code below for a demonstration.
### Available Globals
The following global parameter is available.
| Name | Type | Required | Description |
| ---- | ---- |:--------:| ----------- |
| xPlexClientIdentifier | String | | The unique identifier for the client application
This is used to track the client application and its usage
(UUID, serial number, or other number unique per device)
|
### Example
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.xPlexClientIdentifier("Postman")
.build();
GetPinResponse res = sdk.plex().getPin()
.strong(false)
.xPlexClientIdentifier("Postman")
.xPlexProduct("Postman")
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetPinResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
<!-- End Global Parameters [global-parameters] -->
<!-- No SDK Installation -->
<!-- No SDK Example Usage -->
<!-- No SDK Available Operations -->
<!-- Start Error Handling [errors] --> <!-- Start Error Handling [errors] -->
## Error Handling ## Error Handling
@@ -143,7 +294,7 @@ Handling errors in this SDK should largely match your expectations. All operati
| Error Object | Status Code | Content Type | | Error Object | Status Code | Content Type |
| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- |
| models/errors/GetServerCapabilitiesResponseBody | 401 | application/json | | models/errors/GetServerCapabilitiesResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | */* | | models/errors/SDKError | 4xx-5xx | \*\/* |
### Example ### Example
@@ -427,77 +578,19 @@ public class Application {
``` ```
<!-- End Authentication [security] --> <!-- End Authentication [security] -->
<!-- Start Global Parameters [global-parameters] -->
## Global Parameters
A parameter is configured globally. This parameter may be set on the SDK client instance itself during initialization. When configured as an option during SDK initialization, This global value will be used as the default on the operations that use it. When such operations are called, there is a place in each to override the global value, if needed.
For example, you can set `X-Plex-Client-Identifier` to `"Postman"` at SDK initialization and then you do not have to pass the same value on calls to operations like `getPin`. But if you want to do so you may, which will locally override the global setting. See the example code below for a demonstration.
### Available Globals
The following global parameter is available.
| Name | Type | Required | Description |
| ---- | ---- |:--------:| ----------- |
| xPlexClientIdentifier | String | | The unique identifier for the client application
This is used to track the client application and its usage
(UUID, serial number, or other number unique per device)
|
### Example
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.xPlexClientIdentifier("Postman")
.build();
GetPinResponse res = sdk.plex().getPin()
.strong(false)
.xPlexClientIdentifier("Postman")
.xPlexProduct("Postman")
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetPinResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
<!-- End Global Parameters [global-parameters] -->
<!-- Placeholder for Future Speakeasy SDK Sections --> <!-- Placeholder for Future Speakeasy SDK Sections -->
# Development
## Maturity
This SDK is in beta, and there may be breaking changes between versions without a major version update. Therefore, we recommend pinning usage
to a specific package version. This way, you can install the same version each time without breaking changes unless you are intentionally
looking for the latest version.
## Contributions
While we value open-source contributions to this SDK, this library is generated programmatically. Any manual changes added to internal files will be overwritten on the next generation.
We look forward to hearing your feedback. Feel free to open a PR or an issue with a proof of concept and we'll do our best to include it in a future release.
### SDK Created by [Speakeasy](https://docs.speakeasyapi.dev/docs/using-speakeasy/client-sdks)

View File

@@ -0,0 +1,151 @@
# Activities
(*activities()*)
## Overview
Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity.
Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details:
- They can contain a `progress` (from 0 to 100) marking the percent completion of the activity.
- They must contain an `type` which is used by clients to distinguish the specific activity.
- They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.)
- The may contain a `Response` object which attributes which represent the result of the asynchronous operation.
### Available Operations
* [getServerActivities](#getserveractivities) - Get Server Activities
* [cancelServerActivities](#cancelserveractivities) - Cancel Server Activities
## getServerActivities
Get Server Activities
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetServerActivitiesResponse res = sdk.activities().getServerActivities()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetServerActivitiesResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetServerActivitiesResponse](../../models/operations/GetServerActivitiesResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- |
| models/errors/GetServerActivitiesResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## cancelServerActivities
Cancel Server Activities
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
CancelServerActivitiesResponse res = sdk.activities().cancelServerActivities()
.activityUUID("25b71ed5-0f9d-461c-baa7-d404e9e10d3e")
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.CancelServerActivitiesResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ |
| `activityUUID` | *String* | :heavy_check_mark: | The UUID of the activity to cancel. | 25b71ed5-0f9d-461c-baa7-d404e9e10d3e |
### Response
**[lukehagar.plexapi.plexapi.models.operations.CancelServerActivitiesResponse](../../models/operations/CancelServerActivitiesResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ |
| models/errors/CancelServerActivitiesResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

View File

@@ -0,0 +1,155 @@
# Authentication
(*authentication()*)
## Overview
API Calls regarding authentication for Plex Media Server
### Available Operations
* [getTransientToken](#gettransienttoken) - Get a Transient Token.
* [getSourceConnectionInformation](#getsourceconnectioninformation) - Get Source Connection Information
## getTransientToken
This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetTransientTokenResponse res = sdk.authentication().getTransientToken()
.type(GetTransientTokenQueryParamType.DELEGATION)
.scope(Scope.ALL)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.GetTransientTokenResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `type` | [lukehagar.plexapi.plexapi.models.operations.GetTransientTokenQueryParamType](../../models/operations/GetTransientTokenQueryParamType.md) | :heavy_check_mark: | `delegation` - This is the only supported `type` parameter. |
| `scope` | [lukehagar.plexapi.plexapi.models.operations.Scope](../../models/operations/Scope.md) | :heavy_check_mark: | `all` - This is the only supported `scope` parameter. |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetTransientTokenResponse](../../models/operations/GetTransientTokenResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- |
| models/errors/GetTransientTokenResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getSourceConnectionInformation
If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token.
Note: requires Plex Media Server >= 1.15.4.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetSourceConnectionInformationResponse res = sdk.authentication().getSourceConnectionInformation()
.source("server://client-identifier")
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.GetSourceConnectionInformationResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- |
| `source` | *String* | :heavy_check_mark: | The source identifier with an included prefix. | server://client-identifier |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetSourceConnectionInformationResponse](../../models/operations/GetSourceConnectionInformationResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- |
| models/errors/GetSourceConnectionInformationResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

353
docs/sdks/butler/README.md Normal file
View File

@@ -0,0 +1,353 @@
# Butler
(*butler()*)
## Overview
Butler is the task manager of the Plex Media Server Ecosystem.
### Available Operations
* [getButlerTasks](#getbutlertasks) - Get Butler tasks
* [startAllTasks](#startalltasks) - Start all Butler tasks
* [stopAllTasks](#stopalltasks) - Stop all Butler tasks
* [startTask](#starttask) - Start a single Butler task
* [stopTask](#stoptask) - Stop a single Butler task
## getButlerTasks
Returns a list of butler tasks
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetButlerTasksResponse res = sdk.butler().getButlerTasks()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetButlerTasksResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetButlerTasksResponse](../../models/operations/GetButlerTasksResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| models/errors/GetButlerTasksResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## startAllTasks
This endpoint will attempt to start all Butler tasks that are enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria:
1. Any tasks not scheduled to run on the current day will be skipped.
2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately.
3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window.
4. If we are outside the configured window, the task will start immediately.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
StartAllTasksResponse res = sdk.butler().startAllTasks()
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.StartAllTasksResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.StartAllTasksResponse](../../models/operations/StartAllTasksResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------- | --------------------------------------- | --------------------------------------- |
| models/errors/StartAllTasksResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## stopAllTasks
This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
StopAllTasksResponse res = sdk.butler().stopAllTasks()
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.StopAllTasksResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.StopAllTasksResponse](../../models/operations/StopAllTasksResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| -------------------------------------- | -------------------------------------- | -------------------------------------- |
| models/errors/StopAllTasksResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## startTask
This endpoint will attempt to start a single Butler task that is enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria:
1. Any tasks not scheduled to run on the current day will be skipped.
2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately.
3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window.
4. If we are outside the configured window, the task will start immediately.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
StartTaskResponse res = sdk.butler().startTask()
.taskName(TaskName.CLEAN_OLD_BUNDLES)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.StartTaskResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `taskName` | [lukehagar.plexapi.plexapi.models.operations.TaskName](../../models/operations/TaskName.md) | :heavy_check_mark: | the name of the task to be started. |
### Response
**[lukehagar.plexapi.plexapi.models.operations.StartTaskResponse](../../models/operations/StartTaskResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ----------------------------------- | ----------------------------------- | ----------------------------------- |
| models/errors/StartTaskResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## stopTask
This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists. See the section above for a list of task names for this endpoint.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
StopTaskResponse res = sdk.butler().stopTask()
.taskName(PathParamTaskName.BACKUP_DATABASE)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.StopTaskResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `taskName` | [lukehagar.plexapi.plexapi.models.operations.PathParamTaskName](../../models/operations/PathParamTaskName.md) | :heavy_check_mark: | The name of the task to be started. |
### Response
**[lukehagar.plexapi.plexapi.models.operations.StopTaskResponse](../../models/operations/StopTaskResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------- | ---------------------------------- | ---------------------------------- |
| models/errors/StopTaskResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

161
docs/sdks/hubs/README.md Normal file
View File

@@ -0,0 +1,161 @@
# Hubs
(*hubs()*)
## Overview
Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows.
### Available Operations
* [getGlobalHubs](#getglobalhubs) - Get Global Hubs
* [getLibraryHubs](#getlibraryhubs) - Get library specific hubs
## getGlobalHubs
Get Global Hubs filtered by the parameters provided.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetGlobalHubsResponse res = sdk.hubs().getGlobalHubs()
.count(1262.49d)
.onlyTransient(OnlyTransient.ONE)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetGlobalHubsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `count` | *Optional<? extends Double>* | :heavy_minus_sign: | The number of items to return with each hub. |
| `onlyTransient` | [Optional<? extends lukehagar.plexapi.plexapi.models.operations.OnlyTransient>](../../models/operations/OnlyTransient.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetGlobalHubsResponse](../../models/operations/GetGlobalHubsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------- | --------------------------------------- | --------------------------------------- |
| models/errors/GetGlobalHubsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getLibraryHubs
This endpoint will return a list of library specific hubs
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetLibraryHubsResponse res = sdk.hubs().getLibraryHubs()
.sectionId(6728.76d)
.count(9010.22d)
.onlyTransient(QueryParamOnlyTransient.ZERO)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetLibraryHubsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `sectionId` | *double* | :heavy_check_mark: | the Id of the library to query |
| `count` | *Optional<? extends Double>* | :heavy_minus_sign: | The number of items to return with each hub. |
| `onlyTransient` | [Optional<? extends lukehagar.plexapi.plexapi.models.operations.QueryParamOnlyTransient>](../../models/operations/QueryParamOnlyTransient.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetLibraryHubsResponse](../../models/operations/GetLibraryHubsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| models/errors/GetLibraryHubsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

946
docs/sdks/library/README.md Normal file
View File

@@ -0,0 +1,946 @@
# Library
(*library()*)
## Overview
API Calls interacting with Plex Media Server Libraries
### Available Operations
* [getFileHash](#getfilehash) - Get Hash Value
* [getRecentlyAdded](#getrecentlyadded) - Get Recently Added
* [getLibraries](#getlibraries) - Get All Libraries
* [getLibrary](#getlibrary) - Get Library Details
* [deleteLibrary](#deletelibrary) - Delete Library Section
* [getLibraryItems](#getlibraryitems) - Get Library Items
* [refreshLibrary](#refreshlibrary) - Refresh Library
* [searchLibrary](#searchlibrary) - Search Library
* [getMetadata](#getmetadata) - Get Items Metadata
* [getMetadataChildren](#getmetadatachildren) - Get Items Children
* [getTopWatchedContent](#gettopwatchedcontent) - Get Top Watched Content
* [getOnDeck](#getondeck) - Get On Deck
## getFileHash
This resource returns hash values for local files
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetFileHashResponse res = sdk.library().getFileHash()
.url("file://C:\Image.png&type=13")
.type(4462.17d)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.GetFileHashResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- |
| `url` | *String* | :heavy_check_mark: | This is the path to the local file, must be prefixed by `file://` | file://C:\Image.png&type=13 |
| `type` | *Optional<? extends Double>* | :heavy_minus_sign: | Item type | |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetFileHashResponse](../../models/operations/GetFileHashResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------- | ------------------------------------- | ------------------------------------- |
| models/errors/GetFileHashResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getRecentlyAdded
This endpoint will return the recently added content.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetRecentlyAddedResponse res = sdk.library().getRecentlyAdded()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetRecentlyAddedResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetRecentlyAddedResponse](../../models/operations/GetRecentlyAddedResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ |
| models/errors/GetRecentlyAddedResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getLibraries
A library section (commonly referred to as just a library) is a collection of media.
Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media.
For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat.
Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts.
This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year).
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetLibrariesResponse res = sdk.library().getLibraries()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetLibrariesResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetLibrariesResponse](../../models/operations/GetLibrariesResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| -------------------------------------- | -------------------------------------- | -------------------------------------- |
| models/errors/GetLibrariesResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getLibrary
## Library Details Endpoint
This endpoint provides comprehensive details about the library, focusing on organizational aspects rather than the content itself.
The details include:
### Directories
Organized into three categories:
- **Primary Directories**:
- Used in some clients for quick access to media subsets (e.g., "All", "On Deck").
- Most can be replicated via media queries.
- Customizable by users.
- **Secondary Directories**:
- Marked with `secondary="1"`.
- Used in older clients for structured navigation.
- **Special Directories**:
- Includes a "By Folder" entry for filesystem-based browsing.
- Contains an obsolete `search="1"` entry for on-the-fly search dialog creation.
### Types
Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls:
- **Type Object Attributes**:
- `key`: Endpoint for the media list of this type.
- `type`: Metadata type (if standard Plex type).
- `title`: Title for this content type (e.g., "Movies").
- **Filter Objects**:
- Subset of the media query language.
- Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`.
- **Sort Objects**:
- Description of sort fields.
- Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`.
> **Note**: Filters and sorts are optional; without them, no filtering controls are rendered.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetLibraryResponse res = sdk.library().getLibrary()
.sectionId(1000d)
.includeDetails(IncludeDetails.ZERO)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetLibraryResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `sectionId` | *double* | :heavy_check_mark: | the Id of the library to query | 1000 |
| `includeDetails` | [Optional<? extends lukehagar.plexapi.plexapi.models.operations.IncludeDetails>](../../models/operations/IncludeDetails.md) | :heavy_minus_sign: | Whether or not to include details for a section (types, filters, and sorts). <br/>Only exists for backwards compatibility, media providers other than the server libraries have it on always.<br/> | |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetLibraryResponse](../../models/operations/GetLibraryResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------ | ------------------------------------ | ------------------------------------ |
| models/errors/GetLibraryResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## deleteLibrary
Delate a library using a specific section
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
DeleteLibraryResponse res = sdk.library().deleteLibrary()
.sectionId(1000d)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.DeleteLibraryResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ |
| `sectionId` | *double* | :heavy_check_mark: | the Id of the library to query | 1000 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.DeleteLibraryResponse](../../models/operations/DeleteLibraryResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------- | --------------------------------------- | --------------------------------------- |
| models/errors/DeleteLibraryResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getLibraryItems
Fetches details from a specific section of the library identified by a section key and a tag. The tag parameter accepts the following values:
- `all`: All items in the section.
- `unwatched`: Items that have not been played.
- `newest`: Items that are recently released.
- `recentlyAdded`: Items that are recently added to the library.
- `recentlyViewed`: Items that were recently viewed.
- `onDeck`: Items to continue watching.
- `collection`: Items categorized by collection.
- `edition`: Items categorized by edition.
- `genre`: Items categorized by genre.
- `year`: Items categorized by year of release.
- `decade`: Items categorized by decade.
- `director`: Items categorized by director.
- `actor`: Items categorized by starring actor.
- `country`: Items categorized by country of origin.
- `contentRating`: Items categorized by content rating.
- `rating`: Items categorized by rating.
- `resolution`: Items categorized by resolution.
- `firstCharacter`: Items categorized by the first letter.
- `folder`: Items categorized by folder.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetLibraryItemsResponse res = sdk.library().getLibraryItems()
.sectionId("<value>")
.tag(Tag.GENRE)
.includeGuids(1L)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetLibraryItemsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| `sectionId` | *java.lang.Object* | :heavy_check_mark: | the Id of the library to query | |
| `tag` | [lukehagar.plexapi.plexapi.models.operations.Tag](../../models/operations/Tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. | |
| `includeGuids` | *Optional<? extends Long>* | :heavy_minus_sign: | Adds the Guids object to the response<br/> | 1 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetLibraryItemsResponse](../../models/operations/GetLibraryItemsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- |
| models/errors/GetLibraryItemsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## refreshLibrary
This endpoint Refreshes the library.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
RefreshLibraryResponse res = sdk.library().refreshLibrary()
.sectionId(934.16d)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.RefreshLibraryResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- |
| `sectionId` | *double* | :heavy_check_mark: | the Id of the library to refresh |
### Response
**[lukehagar.plexapi.plexapi.models.operations.RefreshLibraryResponse](../../models/operations/RefreshLibraryResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| models/errors/RefreshLibraryResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## searchLibrary
Search for content within a specific section of the library.
### Types
Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls:
- **Type Object Attributes**:
- `type`: Metadata type (if standard Plex type).
- `title`: Title for this content type (e.g., "Movies").
- **Filter Objects**:
- Subset of the media query language.
- Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`.
- **Sort Objects**:
- Description of sort fields.
- Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`.
> **Note**: Filters and sorts are optional; without them, no filtering controls are rendered.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
SearchLibraryResponse res = sdk.library().searchLibrary()
.sectionId(933505L)
.type(Type.FOUR)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.SearchLibraryResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `sectionId` | *long* | :heavy_check_mark: | the Id of the library to query |
| `type` | [lukehagar.plexapi.plexapi.models.operations.Type](../../models/operations/Type.md) | :heavy_check_mark: | Plex content type to search for |
### Response
**[lukehagar.plexapi.plexapi.models.operations.SearchLibraryResponse](../../models/operations/SearchLibraryResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------- | --------------------------------------- | --------------------------------------- |
| models/errors/SearchLibraryResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getMetadata
This endpoint will return the metadata of a library item specified with the ratingKey.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetMetadataResponse res = sdk.library().getMetadata()
.ratingKey(8382.31d)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetMetadataResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- |
| `ratingKey` | *double* | :heavy_check_mark: | the id of the library item to return the children of. |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetMetadataResponse](../../models/operations/GetMetadataResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------- | ------------------------------------- | ------------------------------------- |
| models/errors/GetMetadataResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getMetadataChildren
This endpoint will return the children of of a library item specified with the ratingKey.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetMetadataChildrenResponse res = sdk.library().getMetadataChildren()
.ratingKey(1539.14d)
.includeElements("<value>")
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetMetadataChildrenResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| `ratingKey` | *double* | :heavy_check_mark: | the id of the library item to return the children of. |
| `includeElements` | *Optional<? extends String>* | :heavy_minus_sign: | Adds additional elements to the response. Supported types are (Stream)<br/> |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetMetadataChildrenResponse](../../models/operations/GetMetadataChildrenResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- |
| models/errors/GetMetadataChildrenResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getTopWatchedContent
This endpoint will return the top watched content from libraries of a certain type
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetTopWatchedContentResponse res = sdk.library().getTopWatchedContent()
.type(505531L)
.includeGuids(1L)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- |
| `type` | *long* | :heavy_check_mark: | the library type (1 - movies, 2 - shows, 3 - music) | |
| `includeGuids` | *Optional<? extends Long>* | :heavy_minus_sign: | Adds the Guids object to the response<br/> | 1 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetTopWatchedContentResponse](../../models/operations/GetTopWatchedContentResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------- | ---------------------- | ---------------------- |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getOnDeck
This endpoint will return the on deck content.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetOnDeckResponse res = sdk.library().getOnDeck()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetOnDeckResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetOnDeckResponse](../../models/operations/GetOnDeckResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ----------------------------------- | ----------------------------------- | ----------------------------------- |
| models/errors/GetOnDeckResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

244
docs/sdks/log/README.md Normal file
View File

@@ -0,0 +1,244 @@
# Log
(*log()*)
## Overview
Submit logs to the Log Handler for Plex Media Server
### Available Operations
* [logLine](#logline) - Logging a single line message.
* [logMultiLine](#logmultiline) - Logging a multi-line message
* [enablePaperTrail](#enablepapertrail) - Enabling Papertrail
## logLine
This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
LogLineResponse res = sdk.log().logLine()
.level(Level.THREE)
.message("Test log message")
.source("Postman")
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.LogLineResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `level` | [lukehagar.plexapi.plexapi.models.operations.Level](../../models/operations/Level.md) | :heavy_check_mark: | An integer log level to write to the PMS log with. <br/>0: Error <br/>1: Warning <br/>2: Info <br/>3: Debug <br/>4: Verbose<br/> | |
| `message` | *String* | :heavy_check_mark: | The text of the message to write to the log. | Test log message |
| `source` | *String* | :heavy_check_mark: | a string indicating the source of the message. | Postman |
### Response
**[lukehagar.plexapi.plexapi.models.operations.LogLineResponse](../../models/operations/LogLineResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------- | --------------------------------- | --------------------------------- |
| models/errors/LogLineResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## logMultiLine
This endpoint allows for the batch addition of log entries to the main Plex Media Server log.
It accepts a text/plain request body, where each line represents a distinct log entry.
Each log entry consists of URL-encoded key-value pairs, specifying log attributes such as 'level', 'message', and 'source'.
Log entries are separated by a newline character (`\n`).
Each entry's parameters should be URL-encoded to ensure accurate parsing and handling of special characters.
This method is efficient for logging multiple entries in a single API call, reducing the overhead of multiple individual requests.
The 'level' parameter specifies the log entry's severity or importance, with the following integer values:
- `0`: Error - Critical issues that require immediate attention.
- `1`: Warning - Important events that are not critical but may indicate potential issues.
- `2`: Info - General informational messages about system operation.
- `3`: Debug - Detailed information useful for debugging purposes.
- `4`: Verbose - Highly detailed diagnostic information for in-depth analysis.
The 'message' parameter contains the log text, and 'source' identifies the log message's origin (e.g., an application name or module).
Example of a single log entry format:
`level=4&message=Sample%20log%20entry&source=applicationName`
Ensure each parameter is properly URL-encoded to avoid interpretation issues.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
String req = "level=4&message=Test%20message%201&source=postman
level=3&message=Test%20message%202&source=postman
level=1&message=Test%20message%203&source=postman";
LogMultiLineResponse res = sdk.log().logMultiLine()
.request(req)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.LogMultiLineResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ |
| `request` | [String](../../models//.md) | :heavy_check_mark: | The request object to use for the request. |
### Response
**[lukehagar.plexapi.plexapi.models.operations.LogMultiLineResponse](../../models/operations/LogMultiLineResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| -------------------------------------- | -------------------------------------- | -------------------------------------- |
| models/errors/LogMultiLineResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## enablePaperTrail
This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail networked logging site for a period of time.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
EnablePaperTrailResponse res = sdk.log().enablePaperTrail()
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.EnablePaperTrailResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.EnablePaperTrailResponse](../../models/operations/EnablePaperTrailResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ |
| models/errors/EnablePaperTrailResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

225
docs/sdks/media/README.md Normal file
View File

@@ -0,0 +1,225 @@
# Media
(*media()*)
## Overview
API Calls interacting with Plex Media Server Media
### Available Operations
* [markPlayed](#markplayed) - Mark Media Played
* [markUnplayed](#markunplayed) - Mark Media Unplayed
* [updatePlayProgress](#updateplayprogress) - Update Media Play Progress
## markPlayed
This will mark the provided media key as Played.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
MarkPlayedResponse res = sdk.media().markPlayed()
.key(59398d)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.MarkPlayedResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- |
| `key` | *double* | :heavy_check_mark: | The media key to mark as played | 59398 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.MarkPlayedResponse](../../models/operations/MarkPlayedResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------ | ------------------------------------ | ------------------------------------ |
| models/errors/MarkPlayedResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## markUnplayed
This will mark the provided media key as Unplayed.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
MarkUnplayedResponse res = sdk.media().markUnplayed()
.key(59398d)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.MarkUnplayedResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- |
| `key` | *double* | :heavy_check_mark: | The media key to mark as Unplayed | 59398 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.MarkUnplayedResponse](../../models/operations/MarkUnplayedResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| -------------------------------------- | -------------------------------------- | -------------------------------------- |
| models/errors/MarkUnplayedResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## updatePlayProgress
This API command can be used to update the play progress of a media item.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
UpdatePlayProgressResponse res = sdk.media().updatePlayProgress()
.key("<value>")
.time(90000d)
.state("played")
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.UpdatePlayProgressResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- |
| `key` | *String* | :heavy_check_mark: | the media key | |
| `time` | *double* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. | 90000 |
| `state` | *String* | :heavy_check_mark: | The playback state of the media item. | played |
### Response
**[lukehagar.plexapi.plexapi.models.operations.UpdatePlayProgressResponse](../../models/operations/UpdatePlayProgressResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- |
| models/errors/UpdatePlayProgressResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

View File

@@ -0,0 +1,689 @@
# Playlists
(*playlists()*)
## Overview
Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as "all albums from 2017").
They can be organized in (optionally nesting) folders.
Retrieving a playlist, or its items, will trigger a refresh of its metadata.
This may cause the duration and number of items to change.
### Available Operations
* [createPlaylist](#createplaylist) - Create a Playlist
* [getPlaylists](#getplaylists) - Get All Playlists
* [getPlaylist](#getplaylist) - Retrieve Playlist
* [deletePlaylist](#deleteplaylist) - Deletes a Playlist
* [updatePlaylist](#updateplaylist) - Update a Playlist
* [getPlaylistContents](#getplaylistcontents) - Retrieve Playlist Contents
* [clearPlaylistContents](#clearplaylistcontents) - Delete Playlist Contents
* [addPlaylistContents](#addplaylistcontents) - Adding to a Playlist
* [uploadPlaylist](#uploadplaylist) - Upload Playlist
## createPlaylist
Create a new playlist. By default the playlist is blank. To create a playlist along with a first item, pass:
- `uri` - The content URI for what we're playing (e.g. `server://1234/com.plexapp.plugins.library/library/metadata/1`).
- `playQueueID` - To create a playlist from an existing play queue.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
CreatePlaylistRequest req = CreatePlaylistRequest.builder()
.title("<value>")
.type(QueryParamType.PHOTO)
.smart(Smart.ONE)
.uri("<value>")
.build();
CreatePlaylistResponse res = sdk.playlists().createPlaylist()
.request(req)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.CreatePlaylistResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| `request` | [lukehagar.plexapi.plexapi.models.operations.CreatePlaylistRequest](../../models/operations/CreatePlaylistRequest.md) | :heavy_check_mark: | The request object to use for the request. |
### Response
**[lukehagar.plexapi.plexapi.models.operations.CreatePlaylistResponse](../../models/operations/CreatePlaylistResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| models/errors/CreatePlaylistResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getPlaylists
Get All Playlists given the specified filters.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetPlaylistsResponse res = sdk.playlists().getPlaylists()
.playlistType(PlaylistType.AUDIO)
.smart(QueryParamSmart.ZERO)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetPlaylistsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `playlistType` | [Optional<? extends lukehagar.plexapi.plexapi.models.operations.PlaylistType>](../../models/operations/PlaylistType.md) | :heavy_minus_sign: | limit to a type of playlist. |
| `smart` | [Optional<? extends lukehagar.plexapi.plexapi.models.operations.QueryParamSmart>](../../models/operations/QueryParamSmart.md) | :heavy_minus_sign: | type of playlists to return (default is all). |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetPlaylistsResponse](../../models/operations/GetPlaylistsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| -------------------------------------- | -------------------------------------- | -------------------------------------- |
| models/errors/GetPlaylistsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getPlaylist
Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item:
Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetPlaylistResponse res = sdk.playlists().getPlaylist()
.playlistID(4109.48d)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetPlaylistResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ---------------------- | ---------------------- | ---------------------- | ---------------------- |
| `playlistID` | *double* | :heavy_check_mark: | the ID of the playlist |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetPlaylistResponse](../../models/operations/GetPlaylistResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------- | ------------------------------------- | ------------------------------------- |
| models/errors/GetPlaylistResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## deletePlaylist
This endpoint will delete a playlist
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
DeletePlaylistResponse res = sdk.playlists().deletePlaylist()
.playlistID(216.22d)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.DeletePlaylistResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ---------------------- | ---------------------- | ---------------------- | ---------------------- |
| `playlistID` | *double* | :heavy_check_mark: | the ID of the playlist |
### Response
**[lukehagar.plexapi.plexapi.models.operations.DeletePlaylistResponse](../../models/operations/DeletePlaylistResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| models/errors/DeletePlaylistResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## updatePlaylist
From PMS version 1.9.1 clients can also edit playlist metadata using this endpoint as they would via `PUT /library/metadata/{playlistID}`
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
UpdatePlaylistResponse res = sdk.playlists().updatePlaylist()
.playlistID(3915d)
.title("<value>")
.summary("<value>")
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.UpdatePlaylistResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- |
| `playlistID` | *double* | :heavy_check_mark: | the ID of the playlist |
| `title` | *Optional<? extends String>* | :heavy_minus_sign: | name of the playlist |
| `summary` | *Optional<? extends String>* | :heavy_minus_sign: | summary description of the playlist |
### Response
**[lukehagar.plexapi.plexapi.models.operations.UpdatePlaylistResponse](../../models/operations/UpdatePlaylistResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| models/errors/UpdatePlaylistResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getPlaylistContents
Gets the contents of a playlist. Should be paged by clients via standard mechanisms.
By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter.
For example, you could use this to display a list of recently added albums vis a smart playlist.
Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetPlaylistContentsResponse res = sdk.playlists().getPlaylistContents()
.playlistID(5004.46d)
.type(9403.59d)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetPlaylistContentsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- |
| `playlistID` | *double* | :heavy_check_mark: | the ID of the playlist |
| `type` | *double* | :heavy_check_mark: | the metadata type of the item to return |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetPlaylistContentsResponse](../../models/operations/GetPlaylistContentsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- |
| models/errors/GetPlaylistContentsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## clearPlaylistContents
Clears a playlist, only works with dumb playlists. Returns the playlist.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
ClearPlaylistContentsResponse res = sdk.playlists().clearPlaylistContents()
.playlistID(1893.18d)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.ClearPlaylistContentsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ---------------------- | ---------------------- | ---------------------- | ---------------------- |
| `playlistID` | *double* | :heavy_check_mark: | the ID of the playlist |
### Response
**[lukehagar.plexapi.plexapi.models.operations.ClearPlaylistContentsResponse](../../models/operations/ClearPlaylistContentsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- |
| models/errors/ClearPlaylistContentsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## addPlaylistContents
Adds a generator to a playlist, same parameters as the POST to create. With a dumb playlist, this adds the specified items to the playlist.
With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
AddPlaylistContentsResponse res = sdk.playlists().addPlaylistContents()
.playlistID(8502.01d)
.uri("server://12345/com.plexapp.plugins.library/library/metadata/1")
.playQueueID(123d)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.AddPlaylistContentsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- |
| `playlistID` | *double* | :heavy_check_mark: | the ID of the playlist | |
| `uri` | *String* | :heavy_check_mark: | the content URI for the playlist | server://12345/com.plexapp.plugins.library/library/metadata/1 |
| `playQueueID` | *Optional<? extends Double>* | :heavy_minus_sign: | the play queue to add to a playlist | 123 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.AddPlaylistContentsResponse](../../models/operations/AddPlaylistContentsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- |
| models/errors/AddPlaylistContentsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## uploadPlaylist
Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
UploadPlaylistResponse res = sdk.playlists().uploadPlaylist()
.path("/home/barkley/playlist.m3u")
.force(Force.ZERO)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.UploadPlaylistResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `path` | *String* | :heavy_check_mark: | absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. <br/>If the `path` argument is a directory, that path will be scanned for playlist files to be processed. <br/>Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. <br/>The GUID of each playlist is based on the filename. <br/>If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. <br/>The GUID of each playlist is based on the filename.<br/> | /home/barkley/playlist.m3u |
| `force` | [lukehagar.plexapi.plexapi.models.operations.Force](../../models/operations/Force.md) | :heavy_check_mark: | Force overwriting of duplicate playlists. <br/>By default, a playlist file uploaded with the same path will overwrite the existing playlist. <br/>The `force` argument is used to disable overwriting. <br/>If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.<br/> | |
### Response
**[lukehagar.plexapi.plexapi.models.operations.UploadPlaylistResponse](../../models/operations/UploadPlaylistResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| models/errors/UploadPlaylistResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

223
docs/sdks/plex/README.md Normal file
View File

@@ -0,0 +1,223 @@
# Plex
(*plex()*)
## Overview
API Calls that perform operations directly against https://Plex.tv
### Available Operations
* [getHomeData](#gethomedata) - Get Plex Home Data
* [getPin](#getpin) - Get a Pin
* [getToken](#gettoken) - Get Access Token
## getHomeData
Retrieves the home data for the authenticated user, including details like home ID, name, guest access information, and subscription status.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetHomeDataResponse res = sdk.plex().getHomeData()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetHomeDataResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetHomeDataResponse](../../models/operations/GetHomeDataResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------- | ------------------------------------- | ------------------------------------- |
| models/errors/GetHomeDataResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getPin
Retrieve a Pin from Plex.tv for authentication flows
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.xPlexClientIdentifier("Postman")
.build();
GetPinResponse res = sdk.plex().getPin()
.strong(false)
.xPlexClientIdentifier("Postman")
.xPlexProduct("Postman")
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetPinResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `strong` | *Optional<? extends Boolean>* | :heavy_minus_sign: | Determines the kind of code returned by the API call<br/>Strong codes are used for Pin authentication flows<br/>Non-Strong codes are used for `Plex.tv/link`<br/> | |
| `xPlexClientIdentifier` | *Optional<? extends String>* | :heavy_minus_sign: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> | Postman |
| `xPlexProduct` | *String* | :heavy_check_mark: | Product name of the application shown in the list of devices<br/> | Postman |
| `serverURL` | *String* | :heavy_minus_sign: | An optional server URL to use. | http://localhost:8080 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetPinResponse](../../models/operations/GetPinResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| -------------------------------- | -------------------------------- | -------------------------------- |
| models/errors/GetPinResponseBody | 400 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getToken
Retrieve an Access Token from Plex.tv after the Pin has already been authenticated
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.xPlexClientIdentifier("Postman")
.build();
GetTokenResponse res = sdk.plex().getToken()
.pinID("<value>")
.xPlexClientIdentifier("Postman")
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetTokenResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pinID` | *String* | :heavy_check_mark: | The PinID to retrieve an access token for | |
| `xPlexClientIdentifier` | *Optional<? extends String>* | :heavy_minus_sign: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> | Postman |
| `serverURL` | *String* | :heavy_minus_sign: | An optional server URL to use. | http://localhost:8080 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetTokenResponse](../../models/operations/GetTokenResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------- | ---------------------------------- | ---------------------------------- |
| models/errors/GetTokenResponseBody | 400 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

View File

@@ -0,0 +1,9 @@
# PlexAPI SDK
## Overview
An Open API Spec for interacting with Plex.tv and Plex Servers
### Available Operations

246
docs/sdks/search/README.md Normal file
View File

@@ -0,0 +1,246 @@
# Search
(*search()*)
## Overview
API Calls that perform search operations with Plex Media Server
### Available Operations
* [performSearch](#performsearch) - Perform a search
* [performVoiceSearch](#performvoicesearch) - Perform a voice search
* [getSearchResults](#getsearchresults) - Get Search Results
## performSearch
This endpoint performs a search across all library sections, or a single section, and returns matches as hubs, split up by type. It performs spell checking, looks for partial matches, and orders the hubs based on quality of results. In addition, based on matches, it will return other related matches (e.g. for a genre match, it may return movies in that genre, or for an actor match, movies with that actor).
In the response's items, the following extra attributes are returned to further describe or disambiguate the result:
- `reason`: The reason for the result, if not because of a direct search term match; can be either:
- `section`: There are multiple identical results from different sections.
- `originalTitle`: There was a search term match from the original title field (sometimes those can be very different or in a foreign language).
- `<hub identifier>`: If the reason for the result is due to a result in another hub, the source hub identifier is returned. For example, if the search is for "dylan" then Bob Dylan may be returned as an artist result, an a few of his albums returned as album results with a reason code of `artist` (the identifier of that particular hub). Or if the search is for "arnold", there might be movie results returned with a reason of `actor`
- `reasonTitle`: The string associated with the reason code. For a section reason, it'll be the section name; For a hub identifier, it'll be a string associated with the match (e.g. `Arnold Schwarzenegger` for movies which were returned because the search was for "arnold").
- `reasonID`: The ID of the item associated with the reason for the result. This might be a section ID, a tag ID, an artist ID, or a show ID.
This request is intended to be very fast, and called as the user types.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
PerformSearchResponse res = sdk.search().performSearch()
.query("dylan")
.sectionId(1516.53d)
.limit(5d)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.PerformSearchResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| `query` | *String* | :heavy_check_mark: | The query term | arnold |
| `sectionId` | *Optional<? extends Double>* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs | |
| `limit` | *Optional<? extends Double>* | :heavy_minus_sign: | The number of items to return per hub | 5 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.PerformSearchResponse](../../models/operations/PerformSearchResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------- | --------------------------------------- | --------------------------------------- |
| models/errors/PerformSearchResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## performVoiceSearch
This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint.
It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint.
Whenever possible, clients should limit the search to the appropriate type.
Results, as well as their containing per-type hubs, contain a `distance` attribute which can be used to judge result quality.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
PerformVoiceSearchResponse res = sdk.search().performVoiceSearch()
.query("dead+poop")
.sectionId(4094.8d)
.limit(5d)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.PerformVoiceSearchResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| `query` | *String* | :heavy_check_mark: | The query term | dead+poop |
| `sectionId` | *Optional<? extends Double>* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs | |
| `limit` | *Optional<? extends Double>* | :heavy_minus_sign: | The number of items to return per hub | 5 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.PerformVoiceSearchResponse](../../models/operations/PerformVoiceSearchResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- |
| models/errors/PerformVoiceSearchResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getSearchResults
This will search the database for the string provided.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetSearchResultsResponse res = sdk.search().getSearchResults()
.query("110")
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetSearchResultsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ |
| `query` | *String* | :heavy_check_mark: | The search query string to use | 110 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetSearchResultsResponse](../../models/operations/GetSearchResultsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ |
| models/errors/GetSearchResultsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

546
docs/sdks/server/README.md Normal file
View File

@@ -0,0 +1,546 @@
# Server
(*server()*)
## Overview
Operations against the Plex Media Server System.
### Available Operations
* [getServerCapabilities](#getservercapabilities) - Get Server Capabilities
* [getServerPreferences](#getserverpreferences) - Get Server Preferences
* [getAvailableClients](#getavailableclients) - Get Available Clients
* [getDevices](#getdevices) - Get Devices
* [getServerIdentity](#getserveridentity) - Get Server Identity
* [getMyPlexAccount](#getmyplexaccount) - Get MyPlex Account
* [getResizedPhoto](#getresizedphoto) - Get a Resized Photo
* [getServerList](#getserverlist) - Get Server List
## getServerCapabilities
Get Server Capabilities
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetServerCapabilitiesResponse res = sdk.server().getServerCapabilities()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetServerCapabilitiesResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetServerCapabilitiesResponse](../../models/operations/GetServerCapabilitiesResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- |
| models/errors/GetServerCapabilitiesResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getServerPreferences
Get Server Preferences
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetServerPreferencesResponse res = sdk.server().getServerPreferences()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetServerPreferencesResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetServerPreferencesResponse](../../models/operations/GetServerPreferencesResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- |
| models/errors/GetServerPreferencesResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getAvailableClients
Get Available Clients
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetAvailableClientsResponse res = sdk.server().getAvailableClients()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetAvailableClientsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetAvailableClientsResponse](../../models/operations/GetAvailableClientsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- |
| models/errors/GetAvailableClientsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getDevices
Get Devices
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetDevicesResponse res = sdk.server().getDevices()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetDevicesResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetDevicesResponse](../../models/operations/GetDevicesResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------ | ------------------------------------ | ------------------------------------ |
| models/errors/GetDevicesResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getServerIdentity
Get Server Identity
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetServerIdentityResponse res = sdk.server().getServerIdentity()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetServerIdentityResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetServerIdentityResponse](../../models/operations/GetServerIdentityResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- |
| models/errors/GetServerIdentityResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getMyPlexAccount
Returns MyPlex Account Information
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetMyPlexAccountResponse res = sdk.server().getMyPlexAccount()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetMyPlexAccountResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetMyPlexAccountResponse](../../models/operations/GetMyPlexAccountResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ |
| models/errors/GetMyPlexAccountResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getResizedPhoto
Plex's Photo transcoder is used throughout the service to serve images at specified sizes.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetResizedPhotoRequest req = GetResizedPhotoRequest.builder()
.width(110d)
.height(165d)
.opacity(643869L)
.blur(4000d)
.minSize(MinSize.ZERO)
.upscale(Upscale.ZERO)
.url("/library/metadata/49564/thumb/1654258204")
.build();
GetResizedPhotoResponse res = sdk.server().getResizedPhoto()
.request(req)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.GetResizedPhotoResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `request` | [lukehagar.plexapi.plexapi.models.operations.GetResizedPhotoRequest](../../models/operations/GetResizedPhotoRequest.md) | :heavy_check_mark: | The request object to use for the request. |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetResizedPhotoResponse](../../models/operations/GetResizedPhotoResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- |
| models/errors/GetResizedPhotoResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getServerList
Get Server List
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetServerListResponse res = sdk.server().getServerList()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetServerListResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetServerListResponse](../../models/operations/GetServerListResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------- | --------------------------------------- | --------------------------------------- |
| models/errors/GetServerListResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

View File

@@ -0,0 +1,289 @@
# Sessions
(*sessions()*)
## Overview
API Calls that perform search operations with Plex Media Server Sessions
### Available Operations
* [getSessions](#getsessions) - Get Active Sessions
* [getSessionHistory](#getsessionhistory) - Get Session History
* [getTranscodeSessions](#gettranscodesessions) - Get Transcode Sessions
* [stopTranscodeSession](#stoptranscodesession) - Stop a Transcode Session
## getSessions
This will retrieve the "Now Playing" Information of the PMS.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetSessionsResponse res = sdk.sessions().getSessions()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetSessionsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetSessionsResponse](../../models/operations/GetSessionsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------- | ------------------------------------- | ------------------------------------- |
| models/errors/GetSessionsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getSessionHistory
This will Retrieve a listing of all history views.
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetSessionHistoryResponse res = sdk.sessions().getSessionHistory()
.sort("<value>")
.accountId(1L)
.filter(Filter.builder()
.build())
.librarySectionID(12L)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetSessionHistoryResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `sort` | *Optional<? extends String>* | :heavy_minus_sign: | Sorts the results by the specified field followed by the direction (asc, desc)<br/> | |
| `accountId` | *Optional<? extends Long>* | :heavy_minus_sign: | Filter results by those that are related to a specific users id<br/> | 1 |
| `filter` | [Optional<? extends lukehagar.plexapi.plexapi.models.operations.Filter>](../../models/operations/Filter.md) | :heavy_minus_sign: | Filters content by field and direction/equality<br/>(Unknown if viewedAt is the only supported column)<br/> | {<br/>"viewed-at-greater-than": {<br/>"value": "viewedAt\u003e"<br/>},<br/>"viewed-at-greater-than-or-equal-to": {<br/>"value": "viewedAt\u003e=\u003e"<br/>},<br/>"viewed-at-less-than": {<br/>"value": "viewedAt\u003c"<br/>}<br/>} |
| `librarySectionID` | *Optional<? extends Long>* | :heavy_minus_sign: | Filters the results based on the id of a valid library section<br/> | 12 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetSessionHistoryResponse](../../models/operations/GetSessionHistoryResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- |
| models/errors/GetSessionHistoryResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getTranscodeSessions
Get Transcode Sessions
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetTranscodeSessionsResponse res = sdk.sessions().getTranscodeSessions()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetTranscodeSessionsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetTranscodeSessionsResponse](../../models/operations/GetTranscodeSessionsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- |
| models/errors/GetTranscodeSessionsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## stopTranscodeSession
Stop a Transcode Session
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
StopTranscodeSessionResponse res = sdk.sessions().stopTranscodeSession()
.sessionKey("zz7llzqlx8w9vnrsbnwhbmep")
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.StopTranscodeSessionResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| `sessionKey` | *String* | :heavy_check_mark: | the Key of the transcode session to stop | zz7llzqlx8w9vnrsbnwhbmep |
### Response
**[lukehagar.plexapi.plexapi.models.operations.StopTranscodeSessionResponse](../../models/operations/StopTranscodeSessionResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- |
| models/errors/StopTranscodeSessionResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

View File

@@ -0,0 +1,226 @@
# Statistics
(*statistics()*)
## Overview
API Calls that perform operations with Plex Media Server Statistics
### Available Operations
* [getStatistics](#getstatistics) - Get Media Statistics
* [getResourcesStatistics](#getresourcesstatistics) - Get Resources Statistics
* [getBandwidthStatistics](#getbandwidthstatistics) - Get Bandwidth Statistics
## getStatistics
This will return the media statistics for the server
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetStatisticsResponse res = sdk.statistics().getStatistics()
.timespan(4L)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetStatisticsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `timespan` | *Optional<? extends Long>* | :heavy_minus_sign: | The timespan to retrieve statistics for<br/>the exact meaning of this parameter is not known<br/> | 4 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetStatisticsResponse](../../models/operations/GetStatisticsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| --------------------------------------- | --------------------------------------- | --------------------------------------- |
| models/errors/GetStatisticsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getResourcesStatistics
This will return the resources for the server
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetResourcesStatisticsResponse res = sdk.statistics().getResourcesStatistics()
.timespan(4L)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetResourcesStatisticsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `timespan` | *Optional<? extends Long>* | :heavy_minus_sign: | The timespan to retrieve statistics for<br/>the exact meaning of this parameter is not known<br/> | 4 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetResourcesStatisticsResponse](../../models/operations/GetResourcesStatisticsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ |
| models/errors/GetResourcesStatisticsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## getBandwidthStatistics
This will return the bandwidth statistics for the server
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetBandwidthStatisticsResponse res = sdk.statistics().getBandwidthStatistics()
.timespan(4L)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetBandwidthStatisticsResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `timespan` | *Optional<? extends Long>* | :heavy_minus_sign: | The timespan to retrieve statistics for<br/>the exact meaning of this parameter is not known<br/> | 4 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetBandwidthStatisticsResponse](../../models/operations/GetBandwidthStatisticsResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ |
| models/errors/GetBandwidthStatisticsResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

219
docs/sdks/updater/README.md Normal file
View File

@@ -0,0 +1,219 @@
# Updater
(*updater()*)
## Overview
This describes the API for searching and applying updates to the Plex Media Server.
Updates to the status can be observed via the Event API.
### Available Operations
* [getUpdateStatus](#getupdatestatus) - Querying status of updates
* [checkForUpdates](#checkforupdates) - Checking for updates
* [applyUpdates](#applyupdates) - Apply Updates
## getUpdateStatus
Querying status of updates
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetUpdateStatusResponse res = sdk.updater().getUpdateStatus()
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetUpdateStatusResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetUpdateStatusResponse](../../models/operations/GetUpdateStatusResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- |
| models/errors/GetUpdateStatusResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## checkForUpdates
Checking for updates
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
CheckForUpdatesResponse res = sdk.updater().checkForUpdates()
.download(Download.ONE)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.CheckForUpdatesResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| `download` | [Optional<? extends lukehagar.plexapi.plexapi.models.operations.Download>](../../models/operations/Download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | 1 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.CheckForUpdatesResponse](../../models/operations/CheckForUpdatesResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- |
| models/errors/CheckForUpdatesResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## applyUpdates
Note that these two parameters are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
ApplyUpdatesResponse res = sdk.updater().applyUpdates()
.tonight(Tonight.ONE)
.skip(Skip.ONE)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.ApplyUpdatesResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description | Example |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tonight` | [Optional<? extends lukehagar.plexapi.plexapi.models.operations.Tonight>](../../models/operations/Tonight.md) | :heavy_minus_sign: | Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install | 1 |
| `skip` | [Optional<? extends lukehagar.plexapi.plexapi.models.operations.Skip>](../../models/operations/Skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The <Release> entry for this version will have the `state` set to `skipped`. | 1 |
### Response
**[lukehagar.plexapi.plexapi.models.operations.ApplyUpdatesResponse](../../models/operations/ApplyUpdatesResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| -------------------------------------- | -------------------------------------- | -------------------------------------- |
| models/errors/ApplyUpdatesResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

182
docs/sdks/video/README.md Normal file
View File

@@ -0,0 +1,182 @@
# Video
(*video()*)
## Overview
API Calls that perform operations with Plex Media Server Videos
### Available Operations
* [getTimeline](#gettimeline) - Get the timeline for a media item
* [startUniversalTranscode](#startuniversaltranscode) - Start Universal Transcode
## getTimeline
Get the timeline for a media item
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetTimelineRequest req = GetTimelineRequest.builder()
.ratingKey(23409d)
.key("/library/metadata/23409")
.state(State.PLAYING)
.hasMDE(1d)
.time(2000d)
.duration(10000d)
.context("home:hub.continueWatching")
.playQueueItemID(1d)
.playBackTime(2000d)
.row(1d)
.build();
GetTimelineResponse res = sdk.video().getTimeline()
.request(req)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.GetTimelineResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| `request` | [lukehagar.plexapi.plexapi.models.operations.GetTimelineRequest](../../models/operations/GetTimelineRequest.md) | :heavy_check_mark: | The request object to use for the request. |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetTimelineResponse](../../models/operations/GetTimelineResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------- | ------------------------------------- | ------------------------------------- |
| models/errors/GetTimelineResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |
## startUniversalTranscode
Begin a Universal Transcode Session
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
StartUniversalTranscodeRequest req = StartUniversalTranscodeRequest.builder()
.hasMDE(1d)
.path("/library/metadata/23409")
.mediaIndex(0d)
.partIndex(0d)
.protocol("hls")
.fastSeek(0d)
.directPlay(0d)
.directStream(0d)
.subtitleSize(100d)
.subtites("burn")
.audioBoost(100d)
.location("lan")
.mediaBufferSize(102400d)
.session("zvcage8b7rkioqcm8f4uns4c")
.addDebugOverlay(0d)
.autoAdjustQuality(0d)
.build();
StartUniversalTranscodeResponse res = sdk.video().startUniversalTranscode()
.request(req)
.call();
// handle response
} catch (lukehagar.plexapi.plexapi.models.errors.StartUniversalTranscodeResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `request` | [lukehagar.plexapi.plexapi.models.operations.StartUniversalTranscodeRequest](../../models/operations/StartUniversalTranscodeRequest.md) | :heavy_check_mark: | The request object to use for the request. |
### Response
**[lukehagar.plexapi.plexapi.models.operations.StartUniversalTranscodeResponse](../../models/operations/StartUniversalTranscodeResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- |
| models/errors/StartUniversalTranscodeResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

View File

@@ -0,0 +1,88 @@
# Watchlist
(*watchlist()*)
## Overview
API Calls that perform operations with Plex Media Server Watchlists
### Available Operations
* [getWatchlist](#getwatchlist) - Get User Watchlist
## getWatchlist
Get User Watchlist
### Example Usage
```java
package hello.world;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.Optional;
import lukehagar.plexapi.plexapi.PlexAPI;
import lukehagar.plexapi.plexapi.models.operations.*;
import lukehagar.plexapi.plexapi.models.shared.*;
import lukehagar.plexapi.plexapi.models.shared.Security;
import lukehagar.plexapi.plexapi.utils.EventStream;
import org.openapitools.jackson.nullable.JsonNullable;
import static java.util.Map.entry;
public class Application {
public static void main(String[] args) throws Exception {
try {
PlexAPI sdk = PlexAPI.builder()
.accessToken("<YOUR_API_KEY_HERE>")
.xPlexClientIdentifier("Postman")
.build();
GetWatchlistRequest req = GetWatchlistRequest.builder()
.filter(PathParamFilter.RELEASED)
.xPlexToken("<value>")
.build();
GetWatchlistResponse res = sdk.watchlist().getWatchlist()
.request(req)
.call();
if (res.object().isPresent()) {
// handle response
}
} catch (lukehagar.plexapi.plexapi.models.errors.GetWatchlistResponseBody e) {
// handle exception
throw e;
} catch (lukehagar.plexapi.plexapi.models.errors.SDKError e) {
// handle exception
throw e;
} catch (Exception e) {
// handle exception
throw e;
}
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `request` | [lukehagar.plexapi.plexapi.models.operations.GetWatchlistRequest](../../models/operations/GetWatchlistRequest.md) | :heavy_check_mark: | The request object to use for the request. |
| `serverURL` | *String* | :heavy_minus_sign: | An optional server URL to use. |
### Response
**[lukehagar.plexapi.plexapi.models.operations.GetWatchlistResponse](../../models/operations/GetWatchlistResponse.md)**
### Errors
| Error Object | Status Code | Content Type |
| -------------------------------------- | -------------------------------------- | -------------------------------------- |
| models/errors/GetWatchlistResponseBody | 401 | application/json |
| models/errors/SDKError | 4xx-5xx | \*\/* |

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>47.one0</groupId>
<artifactId>examples</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.14.0-rc1</version>
</dependency>
<dependency>
<groupId>47.one0</groupId>
<artifactId>PlexSDK</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,17 +0,0 @@
package 47.one0.examples;
import 47.one0.exceptions.ApiException;
import 47.one0.PlexSDK;
public class Main {
public static void main(String[] args) {
PlexSDK client = new PlexSDK(System.getenv("PLEXSDK_API_KEY"), System.getenv("PLEXSDK_API_KEY_HEADER"));
try {
Object response = client.serverService.getServerCapabilities();
System.out.println(response);
} catch(ApiException e) {
e.printStackTrace();
}
}
}

View File

@@ -1,20 +0,0 @@
package com.plexsdk.examples;
import com.plexsdk.PlexSDK;
import com.plexsdk.exceptions.ApiException;
public class Main {
public static void main(String[] args) {
PlexSDK client = new PlexSDK(
System.getenv("PLEXSDK_API_KEY"),
System.getenv("PLEXSDK_API_KEY_HEADER")
);
try {
Object response = client.serverService.getServerCapabilities();
System.out.println(response);
} catch (ApiException e) {
e.printStackTrace();
}
}
}

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@@ -1 +0,0 @@
mvn install

254
pom.xml
View File

@@ -1,254 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>
47.one0
</groupId>
<artifactId>
plex-sdk
</artifactId>
<version>
0.0.1
</version>
<!-- See https://central.sonatype.org/publish/requirements/#project-name-description-and-url -->
<name>${project.groupId}:${project.artifactId}</name>
<description>A Java SDK for PlexSDK.</description>
<url><!-- Eg. https://liblab.com/ -->
</url>
<!-- See https://central.sonatype.org/publish/requirements/#scm-information -->
<scm>
<connection><!-- Eg. scm:git:git://github.com/username/repo.git -->
</connection>
<developerConnection><!-- Eg. scm:git:ssh://github.com:username/repo.git -->
</developerConnection>
<url><!-- Eg. http://github.com/username/repo/tree/main -->
</url>
</scm>
<!-- See https://central.sonatype.org/publish/requirements/#developer-information -->
<developers>
<developer>
<name>Liblab</name>
<email>contact@liblab.com</email>
<organization>Liblab</organization>
<organizationUrl>https://liblab.com/</organizationUrl>
</developer>
</developers>
<licenses>
<license>
<name>
MIT
</name>
<url>
https://opensource.org/licenses/MIT
</url>
</license>
</licenses>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.7.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.1</version>
</dependency>
</dependencies>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<profiles>
<profile>
<id>release-sign-artifacts</id>
<activation>
<property>
<name>performRelease</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<!-- Maven deployment, see https://central.sonatype.org/publish/publish-maven -->
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.13</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<pluginManagement>
<!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent
pom) -->
<plugins>
<!-- clean lifecycle, see
https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see
https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.2</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see
https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.19.0</version>
<configuration>
<rulesets>
<ruleset>/category/java/bestpractices.xml</ruleset>
<ruleset>/category/java/codestyle.xml</ruleset>
<ruleset>/category/java/design.xml</ruleset>
<ruleset>/category/java/performance.xml</ruleset>
</rulesets>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.19.0</version>
</plugin>
</plugins>
</reporting>
</project>

View File

@@ -1,9 +0,0 @@
package 47.one0;
public class Configuration {
public static final String USER_AGENT = "liblab/0.1.25 PlexSDK/0.0.1 java/1.8";
public static final String DEFAULT_API_KEY_HEADER = "X-Plex-Token";
}

View File

@@ -1,14 +0,0 @@
package 47.one0;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public enum Environment {
DEFAULT("http://10.10.10.47:32400");
private final String url;
public String getUrl() {
return this.url;
}
}

View File

@@ -1,92 +0,0 @@
package 47.one0;
import java.util.Map;
import 47.one0.services.*;
import 47.one0.Environment;
import okhttp3.OkHttpClient;
import 47.one0.http.interceptors.DefaultHeadersInterceptor;
import 47.one0.http.interceptors.ApiKeyInterceptor;
import 47.one0.http.interceptors.RetryInterceptor;
public class PlexSDK {
public ActivitiesService activitiesService;
public ButlerService butlerService;
public HubsService hubsService;
public LibraryService libraryService;
public LogService logService;
public MediaService mediaService;
public PlaylistsService playlistsService;
public SearchService searchService;
public SecurityService securityService;
public ServerService serverService;
public SessionsService sessionsService;
public UpdaterService updaterService;
public VideoService videoService;
private final ApiKeyInterceptor apiKeyInterceptor = new ApiKeyInterceptor();
public PlexSDK() {
final String serverUrl = Environment.DEFAULT.getUrl();
final OkHttpClient httpClient = new OkHttpClient.Builder()
.addInterceptor(new DefaultHeadersInterceptor())
.addInterceptor(new RetryInterceptor())
.addInterceptor(apiKeyInterceptor)
.build();
this.activitiesService = new ActivitiesService(httpClient, serverUrl);
this.butlerService = new ButlerService(httpClient, serverUrl);
this.hubsService = new HubsService(httpClient, serverUrl);
this.libraryService = new LibraryService(httpClient, serverUrl);
this.logService = new LogService(httpClient, serverUrl);
this.mediaService = new MediaService(httpClient, serverUrl);
this.playlistsService = new PlaylistsService(httpClient, serverUrl);
this.searchService = new SearchService(httpClient, serverUrl);
this.securityService = new SecurityService(httpClient, serverUrl);
this.serverService = new ServerService(httpClient, serverUrl);
this.sessionsService = new SessionsService(httpClient, serverUrl);
this.updaterService = new UpdaterService(httpClient, serverUrl);
this.videoService = new VideoService(httpClient, serverUrl);
}
public PlexSDK(String apiKey) {
this(apiKey, null);
}
public PlexSDK(String apiKey, String apiKeyHeader) {
this();
setApiKey(apiKey);
setApiKeyHeader(apiKeyHeader);
}
public void setBaseUrl(String url) {
this.activitiesService.setBaseUrl(url);
this.butlerService.setBaseUrl(url);
this.hubsService.setBaseUrl(url);
this.libraryService.setBaseUrl(url);
this.logService.setBaseUrl(url);
this.mediaService.setBaseUrl(url);
this.playlistsService.setBaseUrl(url);
this.searchService.setBaseUrl(url);
this.securityService.setBaseUrl(url);
this.serverService.setBaseUrl(url);
this.sessionsService.setBaseUrl(url);
this.updaterService.setBaseUrl(url);
this.videoService.setBaseUrl(url);
}
public void setApiKey(String apiKey) {
this.apiKeyInterceptor.setApiKey(apiKey);
}
public void setApiKeyHeader(String apiKeyHeader) {
this.apiKeyInterceptor.setApiKeyHeader(apiKeyHeader);
}
}

View File

@@ -1,56 +0,0 @@
package 47.one0.exceptions;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* This is the base class for all exceptions that represent an error response from the server.
*/
public class ApiException extends RuntimeException {
private static final Map<Integer, String> ERROR_MAP = Collections.unmodifiableMap(new HashMap<Integer, String>() {
{
put(401, "Unauthorized");
put(403, "Forbidden");
put(404, "Not Found");
put(405, "Method Not Allowed");
put(406, "Not Acceptable");
put(409, "Conflict");
put(410, "Gone");
put(500, "Internal Server Error");
put(502, "Bad Gateway");
put(503, "Service Unavailable");
put(504, "Gateway Timeout");
}
});
private final int statusCode;
public ApiException(int code) {
super(getExceptionMessage(code));
this.statusCode = code;
}
public ApiException(String message) {
super(message);
this.statusCode = 0;
}
public ApiException(String message, Throwable t) {
super(message, t);
this.statusCode = 0;
}
public ApiException(int code, String message) {
super(message);
this.statusCode = code;
}
public int getStatusCode() {
return this.statusCode;
}
static String getExceptionMessage(int code) {
return ERROR_MAP.getOrDefault(code, "Unknown Error");
}
}

View File

@@ -1,19 +0,0 @@
package 47.one0.exceptions;
/**
* Thrown to indicate that a service method has been passed an illegal or inappropriate argument.
* For example, if a required argument is being passed as null.
*/
public class ArgumentCannotBeNullException extends RuntimeException {
private static final String ARGUMENT_NAME_MESSAGE_FORMAT = "Required argument %s cannot be null.";
private static final String DEFAULT_MESSAGE = "Required argument cannot be null.";
public ArgumentCannotBeNullException() {
super(DEFAULT_MESSAGE);
}
public ArgumentCannotBeNullException(String argumentName) {
super(String.format(ARGUMENT_NAME_MESSAGE_FORMAT, argumentName));
}
}

View File

@@ -1 +0,0 @@

View File

@@ -1,27 +0,0 @@
package 47.one0.hooks.model;
/**
* Liblab Hook interface
*/
public interface Hook {
/**
* Is called before the request is made to the API
* @param request the request about to be made by the SDK
*/
void beforeRequest(Request request);
/**
* Is called after the response has returned
* @param request the request that was made by the SDK
* @param response the response coming back from the API the SDK has called
*/
void afterResponse(Request request, Response response);
/**
* Is called when an error occurs in the SDK
* @param request the request that was made by the SDK
* @param exception The Exception thrown
*/
void onError(Request request, Exception exception);
}

View File

@@ -1,89 +0,0 @@
package 47.one0.hooks.model;
import 47.one0.http.ModelConverter;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import okhttp3.Headers;
import okhttp3.RequestBody;
/**
* Liblab's representation of a request
*/
public class Request {
private String method;
private String url;
private String body;
private Map<String, String> headers;
public Request(String method, String url, String body, Map<String, String> headers) {
this.method = method;
this.url = url;
this.body = body;
this.headers = headers;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public Map<String, String> getHeaders() {
return headers;
}
public void setHeaders(Map<String, String> headers) {
this.headers = headers;
}
public static Request toHookRequest(okhttp3.Request request) {
Map<String, String> hookHeaders = request
.headers()
.toMultimap()
.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().get(0)));
return new Request(
request.method(),
request.url().toString(),
request.body() != null ? Objects.requireNonNull(request.body()).toString() : "",
hookHeaders
);
}
public static okhttp3.Request toOkHttpRequest(Request hookRequest) {
Headers.Builder headersBuilder = new Headers.Builder();
hookRequest.getHeaders().forEach(headersBuilder::add);
if (hookRequest.getBody() != null && !hookRequest.getBody().isEmpty()) {
RequestBody requestBody = RequestBody.create(
Objects.requireNonNull(ModelConverter.modelToJson(hookRequest.getBody())),
okhttp3.MediaType.parse("application/json; charset=utf-8")
);
return new okhttp3.Request.Builder().method(hookRequest.getMethod(), requestBody).headers(headersBuilder.build()).url(hookRequest.url).build();
} else {
return new okhttp3.Request.Builder().method(hookRequest.getMethod(), null).headers(headersBuilder.build()).url(hookRequest.url).build();
}
}
}

View File

@@ -1,62 +0,0 @@
package 47.one0.hooks.model;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* Liblab's representation of a response
*/
public class Response {
private int statusCode;
private String body;
private Map<String, String> headers;
public Response(int statusCode, String body, Map<String, String> headers) {
this.statusCode = statusCode;
this.body = body;
this.headers = headers;
}
public int getStatusCode() {
return statusCode;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public Map<String, String> getHeaders() {
return headers;
}
public void setHeaders(Map<String, String> headers) {
this.headers = headers;
}
public static Response toHookResponse(okhttp3.Response response) {
Map<String, String> responseHeaders = response
.headers()
.toMultimap()
.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().get(0)));
return new Response(
response.code(),
response.body() != null ? Objects.requireNonNull(response.body()).toString() : null,
responseHeaders
);
}
}

View File

@@ -1,13 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface ActivitiesClient {
ResponseWithHeaders<47.one0.models.GetServerActivitiesResponse> getServerActivities() throws ApiException;
ResponseWithHeaders<String> cancelServerActivities(String activityUUID) throws ApiException;
}

View File

@@ -1,16 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface ButlerClient {
ResponseWithHeaders<47.one0.models.GetButlerTasksResponse> getButlerTasks() throws ApiException;
ResponseWithHeaders<String> startAllTasks() throws ApiException;
ResponseWithHeaders<String> stopAllTasks() throws ApiException;
ResponseWithHeaders<String> startTask(String taskName) throws ApiException;
ResponseWithHeaders<String> stopTask(String taskName) throws ApiException;
}

View File

@@ -1,13 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface HubsClient {
ResponseWithHeaders<String> getGlobalHubs(Float count, Float onlyTransient) throws ApiException;
ResponseWithHeaders<String> getLibraryHubs(Float sectionId, Float count, Float onlyTransient) throws ApiException;
}

View File

@@ -1,23 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface LibraryClient {
ResponseWithHeaders<String> getFileHash(String url, Float type) throws ApiException;
ResponseWithHeaders<47.one0.models.GetRecentlyAddedResponse> getRecentlyAdded() throws ApiException;
ResponseWithHeaders<String> getLibraries() throws ApiException;
ResponseWithHeaders<String> getLibrary(Float sectionId, Float includeDetails) throws ApiException;
ResponseWithHeaders<String> deleteLibrary(Float sectionId) throws ApiException;
ResponseWithHeaders<String> getLibraryItems(Float sectionId, Float type, String filter) throws ApiException;
ResponseWithHeaders<String> refreshLibrary(Float sectionId) throws ApiException;
ResponseWithHeaders<String> getLatestLibraryItems(Float sectionId, Float type, String filter) throws ApiException;
ResponseWithHeaders<String> getCommonLibraryItems(Float sectionId, Float type, String filter) throws ApiException;
ResponseWithHeaders<String> getMetadata(Float ratingKey) throws ApiException;
ResponseWithHeaders<String> getMetadataChildren(Float ratingKey) throws ApiException;
ResponseWithHeaders<47.one0.models.GetOnDeckResponse> getOnDeck() throws ApiException;
}

View File

@@ -1,14 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface LogClient {
ResponseWithHeaders<String> logLine(Float level, String message, String source) throws ApiException;
ResponseWithHeaders<String> logMultiLine() throws ApiException;
ResponseWithHeaders<String> enablePaperTrail() throws ApiException;
}

View File

@@ -1,14 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface MediaClient {
ResponseWithHeaders<String> markPlayed(Float key) throws ApiException;
ResponseWithHeaders<String> markUnplayed(Float key) throws ApiException;
ResponseWithHeaders<String> updatePlayProgress(String key, Float time, String state) throws ApiException;
}

View File

@@ -1,76 +0,0 @@
package 47.one0.http;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import okhttp3.Response;
import okhttp3.ResponseBody;
public final class ModelConverter {
private final static ObjectMapper mapper = new ObjectMapper();
static {
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
}
private ModelConverter() {
}
public static <T> T convert(final Response response, final Class<T> clazz) {
final ResponseBody body = response.body();
try {
return mapper.readValue(body.string(), clazz);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static <T> T convert(final String response, final Class<T> clazz) {
try {
return mapper.readValue(response, clazz);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static <T> T convert(Response response, TypeReference<T> typeReference) {
try {
return convert(response.body().string(), typeReference);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static <T> T convert(String response, TypeReference<T> typeReference) {
try {
return mapper.readValue(response, typeReference);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String modelToJson(final Object model) {
try {
return mapper.writeValueAsString(model);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

View File

@@ -1,20 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface PlaylistsClient {
ResponseWithHeaders<String> createPlaylist(String title, String type, Float smart, String uri, Float playQueueID) throws ApiException;
ResponseWithHeaders<String> getPlaylists(String playlistType, Float smart) throws ApiException;
ResponseWithHeaders<String> getPlaylist(Float playlistID) throws ApiException;
ResponseWithHeaders<String> updatePlaylist(Float playlistID) throws ApiException;
ResponseWithHeaders<String> deletePlaylist(Float playlistID) throws ApiException;
ResponseWithHeaders<String> getPlaylistContents(Float playlistID, Float type) throws ApiException;
ResponseWithHeaders<String> addPlaylistContents(Float playlistID, String uri, Float playQueueID) throws ApiException;
ResponseWithHeaders<String> clearPlaylistContents(Float playlistID) throws ApiException;
ResponseWithHeaders<String> uploadPlaylist(String path, Float force) throws ApiException;
}

View File

@@ -1,22 +0,0 @@
package 47.one0.http;
import okhttp3.Headers;
public class ResponseWithHeaders<T> {
private T data;
private Headers headers;
public ResponseWithHeaders(T data, Headers headers) {
this.data = data;
this.headers = headers;
}
public T getData() {
return data;
}
public Headers getHeaders() {
return headers;
}
}

View File

@@ -1,14 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface SearchClient {
ResponseWithHeaders<String> performSearch(String query, Float sectionId, Float limit) throws ApiException;
ResponseWithHeaders<String> performVoiceSearch(String query, Float sectionId, Float limit) throws ApiException;
ResponseWithHeaders<47.one0.models.GetSearchResultsResponse> getSearchResults(String query) throws ApiException;
}

View File

@@ -1,13 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface SecurityClient {
ResponseWithHeaders<String> getTransientToken(String type, String scope) throws ApiException;
ResponseWithHeaders<String> getSourceConnectionInformation(String source) throws ApiException;
}

View File

@@ -1,19 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface ServerClient {
ResponseWithHeaders<47.one0.models.GetServerCapabilitiesResponse> getServerCapabilities() throws ApiException;
ResponseWithHeaders<String> getServerPreferences() throws ApiException;
ResponseWithHeaders<java.util.List<47.one0.models.GetAvailableClientsResponse>> getAvailableClients() throws ApiException;
ResponseWithHeaders<47.one0.models.GetDevicesResponse> getDevices() throws ApiException;
ResponseWithHeaders<47.one0.models.GetServerIdentityResponse> getServerIdentity() throws ApiException;
ResponseWithHeaders<47.one0.models.GetMyPlexAccountResponse> getMyPlexAccount() throws ApiException;
ResponseWithHeaders<String> getResizedPhoto(Float width, Float height, Integer opacity, Float blur, Float minSize, Float upscale, String url) throws ApiException;
ResponseWithHeaders<47.one0.models.GetServerListResponse> getServerList() throws ApiException;
}

View File

@@ -1,15 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface SessionsClient {
ResponseWithHeaders<String> getSessions() throws ApiException;
ResponseWithHeaders<String> getSessionHistory() throws ApiException;
ResponseWithHeaders<47.one0.models.GetTranscodeSessionsResponse> getTranscodeSessions() throws ApiException;
ResponseWithHeaders<String> stopTranscodeSession(String sessionKey) throws ApiException;
}

View File

@@ -1,14 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface UpdaterClient {
ResponseWithHeaders<String> getUpdateStatus() throws ApiException;
ResponseWithHeaders<String> checkForUpdates(String download) throws ApiException;
ResponseWithHeaders<String> applyUpdates(String tonight, String skip) throws ApiException;
}

View File

@@ -1,13 +0,0 @@
package 47.one0.http;
import java.util.List;
import 47.one0.exceptions.ApiException;
public interface VideoClient {
ResponseWithHeaders<String> startUniversalTranscode(Float hasMDE, String path, Float mediaIndex, Float partIndex, String protocol, Float fastSeek, Float directPlay, Float directStream, Float subtitleSize, String subtites, Float audioBoost, String location, Float mediaBufferSize, String session, Float addDebugOverlay, Float autoAdjustQuality) throws ApiException;
ResponseWithHeaders<String> getTimeline(Float ratingKey, String key, String state, Float hasMDE, Float time, Float duration, String context, Float playQueueItemID, Float playBackTime, Float row) throws ApiException;
}

View File

@@ -1,37 +0,0 @@
package 47.one0.http.interceptors;
import 47.one0.Configuration;
import java.io.IOException;
import lombok.Getter;
import lombok.Setter;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
public class ApiKeyInterceptor implements Interceptor {
@Getter
@Setter
private String apiKey;
@Getter
@Setter
private String apiKeyHeader;
@Override
public Response intercept(Chain chain) throws IOException {
return chain.proceed(addApiKeyToRequest(chain.request()));
}
private Request addApiKeyToRequest(Request request) {
return this.apiKey != null && !this.apiKey.isEmpty()
? request.newBuilder().addHeader(resolveHeader(), this.apiKey).build()
: request;
}
private String resolveHeader() {
return this.apiKeyHeader != null && !this.apiKeyHeader.isEmpty()
? this.apiKeyHeader
: Configuration.DEFAULT_API_KEY_HEADER;
}
}

View File

@@ -1,36 +0,0 @@
package 47.one0.http.interceptors;
import 47.one0.Configuration;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Request.Builder;
import okhttp3.Response;
public class DefaultHeadersInterceptor implements Interceptor {
private final Map<String, String> defaultHeaders = new HashMap<>();
public DefaultHeadersInterceptor() {
defaultHeaders.put("User-Agent", Configuration.USER_AGENT);
}
@Override
public Response intercept(Chain chain) throws IOException {
return chain.proceed(addDefaultHeadersToRequest(chain.request()));
}
private Request addDefaultHeadersToRequest(Request request) {
if (defaultHeaders.isEmpty()) {
return request;
}
Builder requestBuilder = request.newBuilder();
defaultHeaders.forEach(requestBuilder::addHeader);
return requestBuilder.build();
}
}

View File

@@ -1,37 +0,0 @@
package 47.one0.http.interceptors;
import java.io.IOException;
import java.util.stream.IntStream;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
public class RetryInterceptor implements Interceptor {
private static final int MAX_RETRIES = 3;
private static final double RETRY_DELAY = 150;
private static final int[] RETRYABLE_CODES = { 500, 503, 504 };
@Override
public Response intercept(Chain chain) throws IOException {
// Try the request and if it fails use exponential backoff to retry
Request request = chain.request();
Response response = chain.proceed(request);
int tryCount = 1;
while (!response.isSuccessful() && isRetryable(response) && tryCount-1 < MAX_RETRIES) {
try {
Thread.sleep((long) Math.pow(RETRY_DELAY, tryCount-1));
} catch (InterruptedException e) {
e.printStackTrace();
}
response.close();
response = chain.proceed(request);
tryCount++;
}
return response;
}
private boolean isRetryable(Response response) {
final int statusCode = response.code();
return IntStream.of(RETRYABLE_CODES).anyMatch(x -> x == statusCode);
}
}

View File

@@ -1,42 +0,0 @@
package 47.one0.http.util;
import static 47.one0.http.ModelConverter.modelToJson;
import java.util.List;
import java.util.stream.Collectors;
/**
* Provides static methods to convert values (object, array, boxed types) into string representation for http url.
* Usually used for converting objects to be http url friendly (e.g. query or header parameters)
*/
public class HttpArgumentConverter {
/**
* Converts any value (object, array, primitive) into a string representation.
*
* @param value The value (object, array or primitive) to be converted.
* @return A string representation of the input value in a format that can be used as url query or header parameter value.
*/
public static String toStringArgument(final Object value) {
if (value == null) {
return "";
}
if (
value instanceof String ||
value instanceof Number ||
value instanceof Boolean ||
value instanceof Enum<?>
) {
return String.valueOf(value);
}
if (value instanceof List<?>) {
List<?> list = (List<?>) value;
return list
.stream()
.map(HttpArgumentConverter::toStringArgument)
.collect(Collectors.joining(","));
}
return modelToJson(value);
}
}

View File

@@ -1,84 +0,0 @@
package 47.one0.http.util;
import static 47.one0.http.util.HttpArgumentConverter.toStringArgument;
import 47.one0.exceptions.ArgumentCannotBeNullException;
import okhttp3.Headers;
/**
* HttpHeaders represents a utility class for building HTTP headers.
*/
public class HttpHeaders {
/**
* Private constructor to prevent direct instantiation of the class.
*/
private HttpHeaders() {
}
/**
* Creates a new instance of the HttpHeaders.Builder.
*
* @return A new instance of HttpHeaders.Builder.
*/
public static Builder builder() {
return new Builder();
}
/**
* Builder class for constructing HTTP headers.
*/
public static class Builder {
private final Headers.Builder headersBuilder;
/**
* Constructs a new instance of the Builder.
*/
private Builder() {
this.headersBuilder = new Headers.Builder();
}
/**
* Adds a required header with the specified name and value to the headers' builder.
*
* @param name The name of the header.
* @param value The value of the header.
* @return The current Builder instance.
* @throws ArgumentCannotBeNullException If the value is null.
*/
public Builder addRequiredHeader(String name, Object value)
throws ArgumentCannotBeNullException {
if (value == null) {
throw new ArgumentCannotBeNullException(name);
}
this.headersBuilder.add(name, toStringArgument(value));
return this;
}
/**
* Adds an optional header with the specified name and value to the headers' builder.
*
* @param name The name of the header.
* @param value The value of the header.
* @return The current Builder instance.
*/
public Builder addOptionalHeader(String name, Object value) {
if (value != null) {
this.headersBuilder.add(name, toStringArgument(value));
}
return this;
}
/**
* Builds the headers using the configured values in the builder.
*
* @return The constructed Headers object.
*/
public Headers build() {
return this.headersBuilder.build();
}
}
}

View File

@@ -1,102 +0,0 @@
package 47.one0.http.util;
import static 47.one0.http.util.HttpArgumentConverter.toStringArgument;
import 47.one0.exceptions.ArgumentCannotBeNullException;
import java.util.Objects;
/**
* The HttpUrl class provides a convenient way to construct HTTP URLs with query parameters and path parameters.
*/
public class HttpUrl {
/**
* Private constructor to prevent direct instantiation of the class.
*/
private HttpUrl() {
}
/**
* Creates a new instance of the Builder class to start constructing an HTTP URL.
*
* @param url The base URL for the HTTP request.
* @return A new instance of the Builder class.
*/
public static Builder builder(String url) {
return new Builder(url);
}
/**
* The Builder class provides methods to add query parameters and path parameters to an HTTP URL.
*/
public static class Builder {
private final okhttp3.HttpUrl.Builder httpUrlBuilder;
/**
* Constructs a new Builder instance with the specified base URL.
*
* @param url The base URL for the HTTP request.
*/
private Builder(String url) {
this.httpUrlBuilder = Objects.requireNonNull(okhttp3.HttpUrl.parse(url)).newBuilder();
}
/**
* Adds a required query parameter to the HTTP URL.
*
* @param name The name of the query parameter.
* @param value The value of the query parameter.
* @return The Builder instance.
* @throws ArgumentCannotBeNullException If the value is null.
*/
public Builder addRequiredQueryParameter(String name, Object value) throws ArgumentCannotBeNullException {
if (value == null) {
throw new ArgumentCannotBeNullException(name);
}
this.httpUrlBuilder.addQueryParameter(name, toStringArgument(value));
return this;
}
/**
* Adds an optional query parameter to the HTTP URL.
*
* @param name The name of the query parameter.
* @param value The value of the query parameter.
* @return The Builder instance.
*/
public Builder addOptionalQueryParameter(String name, Object value) {
if (value != null) {
this.httpUrlBuilder.addQueryParameter(name, toStringArgument(value));
}
return this;
}
/**
* Adds a path parameter to the HTTP URL.
*
* @param value The value of the path parameter.
* @return The Builder instance.
* @throws ArgumentCannotBeNullException If the value is null.
*/
public Builder addPathParameter(String value) throws ArgumentCannotBeNullException {
if (value == null || value.isEmpty()) {
throw new ArgumentCannotBeNullException();
}
this.httpUrlBuilder.addPathSegment(value);
return this;
}
/**
* Builds the final HTTP URL.
*
* @return The constructed HTTP URL as a string.
*/
public String build() {
return this.httpUrlBuilder.build().toString();
}
}
}

View File

@@ -1,75 +0,0 @@
package 47.one0.models;
import java.util.Collection;
import java.util.Set;
import java.util.stream.Collectors;
import 47.one0.http.ModelConverter;
public abstract class BaseModel {
public abstract static class Builder {
protected static enum ValidationType {
ALL_OF,
ANY_OF,
ONE_OF,
NONE
};
private final ValidationType _validationType;
protected Builder(ValidationType validationType) {
this._validationType = validationType;
}
protected abstract Set<String> getNonNullInstanceFieldNames();
protected abstract Set<Set<String>> getRequiredFieldsGroups();
protected boolean isValidAllOf() {
// Check if all of the required field groups are a subset of the non-null, non-static fields.
return getNonNullInstanceFieldNames().containsAll(
getRequiredFieldsGroups().stream()
.flatMap(Collection::stream)
.collect(Collectors.toSet()));
}
protected boolean isValidAnyOf() {
// Check if any of the required field groups are a subset of the non-null, non-static fields.
return getRequiredFieldsGroups().stream().anyMatch(
(group) -> getNonNullInstanceFieldNames().containsAll(group));
}
protected boolean isValidOneOf() {
// Check if the set of non-null fields match one of the required field groups.
return getRequiredFieldsGroups().contains(getNonNullInstanceFieldNames());
}
protected String validate() {
if (getRequiredFieldsGroups().isEmpty()) {
// Nothing to validate since there are no required fields groups.
return null;
}
switch (this._validationType) {
case ALL_OF:
return !isValidAllOf() ? "Object fails AllOf validation." : null;
case ANY_OF:
return !isValidAnyOf() ? "Object fails AnyOf validation." : null;
case ONE_OF:
return !isValidOneOf() ? "Object fails OneOf validation." : null;
case NONE:
default:
return !isValidOneOf() ? "Object fails required fields validation." : null;
}
}
}
public BaseModel() {
}
protected BaseModel(Builder builder) {
}
public String toJson() {
return ModelConverter.modelToJson(this);
}
}

View File

@@ -1,11 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum Download {
V1("1");
public final String label;
}

View File

@@ -1,11 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum Force {
V1(1);
public final Float label;
}

View File

@@ -1,272 +0,0 @@
package 47.one0.models;
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetButlerTasksResponse.Builder.class)
public class GetButlerTasksResponse extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetButlerTasksResponse.ButlerTasks.Builder.class)
public static class ButlerTasks extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetButlerTasksResponse.ButlerTasks.ButlerTask.Builder.class)
public static class ButlerTask extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("description") private java.lang.String description;
@com.fasterxml.jackson.annotation.JsonProperty("enabled") private java.lang.Boolean enabled;
@com.fasterxml.jackson.annotation.JsonProperty("interval") private java.lang.Double interval;
@com.fasterxml.jackson.annotation.JsonProperty("name") private java.lang.String name;
@com.fasterxml.jackson.annotation.JsonProperty("scheduleRandomized") private java.lang.Boolean scheduleRandomized;
@com.fasterxml.jackson.annotation.JsonProperty("title") private java.lang.String title;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetButlerTasksResponse.ButlerTasks.ButlerTask build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetButlerTasksResponse.ButlerTasks.ButlerTask buildWithoutValidation() {
return new GetButlerTasksResponse.ButlerTasks.ButlerTask(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("description") private final java.lang.String description;
@com.fasterxml.jackson.annotation.JsonProperty("enabled") private final java.lang.Boolean enabled;
@com.fasterxml.jackson.annotation.JsonProperty("interval") private final java.lang.Double interval;
@com.fasterxml.jackson.annotation.JsonProperty("name") private final java.lang.String name;
@com.fasterxml.jackson.annotation.JsonProperty("scheduleRandomized") private final java.lang.Boolean scheduleRandomized;
@com.fasterxml.jackson.annotation.JsonProperty("title") private final java.lang.String title;
ButlerTask(Builder builder) {
super(builder);
this.description = builder.getDescription();
this.enabled = builder.getEnabled();
this.interval = builder.getInterval();
this.name = builder.getName();
this.scheduleRandomized = builder.getScheduleRandomized();
this.title = builder.getTitle();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("ButlerTask") private java.util.List<GetButlerTasksResponse.ButlerTasks.ButlerTask> butlerTask;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetButlerTasksResponse.ButlerTasks build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetButlerTasksResponse.ButlerTasks buildWithoutValidation() {
return new GetButlerTasksResponse.ButlerTasks(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("ButlerTask") private final java.util.List<GetButlerTasksResponse.ButlerTasks.ButlerTask> butlerTask;
ButlerTasks(Builder builder) {
super(builder);
this.butlerTask = builder.getButlerTask();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("ButlerTasks") private GetButlerTasksResponse.ButlerTasks butlerTasks;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetButlerTasksResponse build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetButlerTasksResponse buildWithoutValidation() {
return new GetButlerTasksResponse(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.stream(this.getClass().getDeclaredFields())
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("ButlerTasks") private final GetButlerTasksResponse.ButlerTasks butlerTasks;
GetButlerTasksResponse(Builder builder) {
super(builder);
this.butlerTasks = builder.getButlerTasks();
}
}

View File

@@ -1,275 +0,0 @@
package 47.one0.models;
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetDevicesResponse.Builder.class)
public class GetDevicesResponse extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetDevicesResponse.MediaContainer.Builder.class)
public static class MediaContainer extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetDevicesResponse.MediaContainer.Device.Builder.class)
public static class Device extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("clientIdentifier") private java.lang.String clientIdentifier;
@com.fasterxml.jackson.annotation.JsonProperty("createdAt") private java.lang.Double createdAt;
@com.fasterxml.jackson.annotation.JsonProperty("id") private java.lang.Double id;
@com.fasterxml.jackson.annotation.JsonProperty("name") private java.lang.String name;
@com.fasterxml.jackson.annotation.JsonProperty("platform") private java.lang.String platform;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetDevicesResponse.MediaContainer.Device build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetDevicesResponse.MediaContainer.Device buildWithoutValidation() {
return new GetDevicesResponse.MediaContainer.Device(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("clientIdentifier") private final java.lang.String clientIdentifier;
@com.fasterxml.jackson.annotation.JsonProperty("createdAt") private final java.lang.Double createdAt;
@com.fasterxml.jackson.annotation.JsonProperty("id") private final java.lang.Double id;
@com.fasterxml.jackson.annotation.JsonProperty("name") private final java.lang.String name;
@com.fasterxml.jackson.annotation.JsonProperty("platform") private final java.lang.String platform;
Device(Builder builder) {
super(builder);
this.clientIdentifier = builder.getClientIdentifier();
this.createdAt = builder.getCreatedAt();
this.id = builder.getId();
this.name = builder.getName();
this.platform = builder.getPlatform();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("Device") private java.util.List<GetDevicesResponse.MediaContainer.Device> device;
@com.fasterxml.jackson.annotation.JsonProperty("identifier") private java.lang.String identifier;
@com.fasterxml.jackson.annotation.JsonProperty("size") private java.lang.Double size;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetDevicesResponse.MediaContainer build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetDevicesResponse.MediaContainer buildWithoutValidation() {
return new GetDevicesResponse.MediaContainer(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("Device") private final java.util.List<GetDevicesResponse.MediaContainer.Device> device;
@com.fasterxml.jackson.annotation.JsonProperty("identifier") private final java.lang.String identifier;
@com.fasterxml.jackson.annotation.JsonProperty("size") private final java.lang.Double size;
MediaContainer(Builder builder) {
super(builder);
this.device = builder.getDevice();
this.identifier = builder.getIdentifier();
this.size = builder.getSize();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private GetDevicesResponse.MediaContainer mediaContainer;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetDevicesResponse build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetDevicesResponse buildWithoutValidation() {
return new GetDevicesResponse(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.stream(this.getClass().getDeclaredFields())
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private final GetDevicesResponse.MediaContainer mediaContainer;
GetDevicesResponse(Builder builder) {
super(builder);
this.mediaContainer = builder.getMediaContainer();
}
}

View File

@@ -1,205 +0,0 @@
package 47.one0.models;
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetMyPlexAccountResponse.Builder.class)
public class GetMyPlexAccountResponse extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetMyPlexAccountResponse.MyPlex.Builder.class)
public static class MyPlex extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("authToken") private java.lang.String authToken;
@com.fasterxml.jackson.annotation.JsonProperty("mappingError") private java.lang.String mappingError;
@com.fasterxml.jackson.annotation.JsonProperty("mappingState") private java.lang.String mappingState;
@com.fasterxml.jackson.annotation.JsonProperty("privateAddress") private java.lang.String privateAddress;
@com.fasterxml.jackson.annotation.JsonProperty("privatePort") private java.lang.Double privatePort;
@com.fasterxml.jackson.annotation.JsonProperty("publicAddress") private java.lang.String publicAddress;
@com.fasterxml.jackson.annotation.JsonProperty("publicPort") private java.lang.Double publicPort;
@com.fasterxml.jackson.annotation.JsonProperty("signInState") private java.lang.String signInState;
@com.fasterxml.jackson.annotation.JsonProperty("subscriptionActive") private java.lang.Boolean subscriptionActive;
@com.fasterxml.jackson.annotation.JsonProperty("subscriptionFeatures") private java.lang.String subscriptionFeatures;
@com.fasterxml.jackson.annotation.JsonProperty("subscriptionState") private java.lang.String subscriptionState;
@com.fasterxml.jackson.annotation.JsonProperty("username") private java.lang.String username;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetMyPlexAccountResponse.MyPlex build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetMyPlexAccountResponse.MyPlex buildWithoutValidation() {
return new GetMyPlexAccountResponse.MyPlex(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("authToken") private final java.lang.String authToken;
@com.fasterxml.jackson.annotation.JsonProperty("mappingError") private final java.lang.String mappingError;
@com.fasterxml.jackson.annotation.JsonProperty("mappingState") private final java.lang.String mappingState;
@com.fasterxml.jackson.annotation.JsonProperty("privateAddress") private final java.lang.String privateAddress;
@com.fasterxml.jackson.annotation.JsonProperty("privatePort") private final java.lang.Double privatePort;
@com.fasterxml.jackson.annotation.JsonProperty("publicAddress") private final java.lang.String publicAddress;
@com.fasterxml.jackson.annotation.JsonProperty("publicPort") private final java.lang.Double publicPort;
@com.fasterxml.jackson.annotation.JsonProperty("signInState") private final java.lang.String signInState;
@com.fasterxml.jackson.annotation.JsonProperty("subscriptionActive") private final java.lang.Boolean subscriptionActive;
@com.fasterxml.jackson.annotation.JsonProperty("subscriptionFeatures") private final java.lang.String subscriptionFeatures;
@com.fasterxml.jackson.annotation.JsonProperty("subscriptionState") private final java.lang.String subscriptionState;
@com.fasterxml.jackson.annotation.JsonProperty("username") private final java.lang.String username;
MyPlex(Builder builder) {
super(builder);
this.authToken = builder.getAuthToken();
this.mappingError = builder.getMappingError();
this.mappingState = builder.getMappingState();
this.privateAddress = builder.getPrivateAddress();
this.privatePort = builder.getPrivatePort();
this.publicAddress = builder.getPublicAddress();
this.publicPort = builder.getPublicPort();
this.signInState = builder.getSignInState();
this.subscriptionActive = builder.getSubscriptionActive();
this.subscriptionFeatures = builder.getSubscriptionFeatures();
this.subscriptionState = builder.getSubscriptionState();
this.username = builder.getUsername();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("MyPlex") private GetMyPlexAccountResponse.MyPlex myPlex;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetMyPlexAccountResponse build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetMyPlexAccountResponse buildWithoutValidation() {
return new GetMyPlexAccountResponse(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.stream(this.getClass().getDeclaredFields())
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("MyPlex") private final GetMyPlexAccountResponse.MyPlex myPlex;
GetMyPlexAccountResponse(Builder builder) {
super(builder);
this.myPlex = builder.getMyPlex();
}
}

View File

@@ -1,851 +0,0 @@
package 47.one0.models;
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetOnDeckResponse.Builder.class)
public class GetOnDeckResponse extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetOnDeckResponse.MediaContainer.Builder.class)
public static class MediaContainer extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetOnDeckResponse.MediaContainer.Metadata.Builder.class)
public static class Metadata extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetOnDeckResponse.MediaContainer.Metadata.Guid.Builder.class)
public static class Guid extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("id") private java.lang.String id;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetOnDeckResponse.MediaContainer.Metadata.Guid build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetOnDeckResponse.MediaContainer.Metadata.Guid buildWithoutValidation() {
return new GetOnDeckResponse.MediaContainer.Metadata.Guid(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("id") private final java.lang.String id;
Guid(Builder builder) {
super(builder);
this.id = builder.getId();
}
}
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetOnDeckResponse.MediaContainer.Metadata.Media.Builder.class)
public static class Media extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetOnDeckResponse.MediaContainer.Metadata.Media.Part.Builder.class)
public static class Part extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetOnDeckResponse.MediaContainer.Metadata.Media.Part.Stream.Builder.class)
public static class Stream extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("default_") private java.lang.Boolean _default;
@com.fasterxml.jackson.annotation.JsonProperty("bitDepth") private java.lang.Double bitDepth;
@com.fasterxml.jackson.annotation.JsonProperty("bitrate") private java.lang.Double bitrate;
@com.fasterxml.jackson.annotation.JsonProperty("chromaLocation") private java.lang.String chromaLocation;
@com.fasterxml.jackson.annotation.JsonProperty("chromaSubsampling") private java.lang.String chromaSubsampling;
@com.fasterxml.jackson.annotation.JsonProperty("codec") private java.lang.String codec;
@com.fasterxml.jackson.annotation.JsonProperty("codedHeight") private java.lang.Double codedHeight;
@com.fasterxml.jackson.annotation.JsonProperty("codedWidth") private java.lang.Double codedWidth;
@com.fasterxml.jackson.annotation.JsonProperty("colorRange") private java.lang.String colorRange;
@com.fasterxml.jackson.annotation.JsonProperty("displayTitle") private java.lang.String displayTitle;
@com.fasterxml.jackson.annotation.JsonProperty("extendedDisplayTitle") private java.lang.String extendedDisplayTitle;
@com.fasterxml.jackson.annotation.JsonProperty("frameRate") private java.lang.Double frameRate;
@com.fasterxml.jackson.annotation.JsonProperty("height") private java.lang.Double height;
@com.fasterxml.jackson.annotation.JsonProperty("id") private java.lang.Double id;
@com.fasterxml.jackson.annotation.JsonProperty("index") private java.lang.Double index;
@com.fasterxml.jackson.annotation.JsonProperty("language") private java.lang.String language;
@com.fasterxml.jackson.annotation.JsonProperty("languageCode") private java.lang.String languageCode;
@com.fasterxml.jackson.annotation.JsonProperty("languageTag") private java.lang.String languageTag;
@com.fasterxml.jackson.annotation.JsonProperty("level") private java.lang.Double level;
@com.fasterxml.jackson.annotation.JsonProperty("profile") private java.lang.String profile;
@com.fasterxml.jackson.annotation.JsonProperty("refFrames") private java.lang.Double refFrames;
@com.fasterxml.jackson.annotation.JsonProperty("streamType") private java.lang.Double streamType;
@com.fasterxml.jackson.annotation.JsonProperty("width") private java.lang.Double width;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetOnDeckResponse.MediaContainer.Metadata.Media.Part.Stream build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetOnDeckResponse.MediaContainer.Metadata.Media.Part.Stream buildWithoutValidation() {
return new GetOnDeckResponse.MediaContainer.Metadata.Media.Part.Stream(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("default_") private final java.lang.Boolean _default;
@com.fasterxml.jackson.annotation.JsonProperty("bitDepth") private final java.lang.Double bitDepth;
@com.fasterxml.jackson.annotation.JsonProperty("bitrate") private final java.lang.Double bitrate;
@com.fasterxml.jackson.annotation.JsonProperty("chromaLocation") private final java.lang.String chromaLocation;
@com.fasterxml.jackson.annotation.JsonProperty("chromaSubsampling") private final java.lang.String chromaSubsampling;
@com.fasterxml.jackson.annotation.JsonProperty("codec") private final java.lang.String codec;
@com.fasterxml.jackson.annotation.JsonProperty("codedHeight") private final java.lang.Double codedHeight;
@com.fasterxml.jackson.annotation.JsonProperty("codedWidth") private final java.lang.Double codedWidth;
@com.fasterxml.jackson.annotation.JsonProperty("colorRange") private final java.lang.String colorRange;
@com.fasterxml.jackson.annotation.JsonProperty("displayTitle") private final java.lang.String displayTitle;
@com.fasterxml.jackson.annotation.JsonProperty("extendedDisplayTitle") private final java.lang.String extendedDisplayTitle;
@com.fasterxml.jackson.annotation.JsonProperty("frameRate") private final java.lang.Double frameRate;
@com.fasterxml.jackson.annotation.JsonProperty("height") private final java.lang.Double height;
@com.fasterxml.jackson.annotation.JsonProperty("id") private final java.lang.Double id;
@com.fasterxml.jackson.annotation.JsonProperty("index") private final java.lang.Double index;
@com.fasterxml.jackson.annotation.JsonProperty("language") private final java.lang.String language;
@com.fasterxml.jackson.annotation.JsonProperty("languageCode") private final java.lang.String languageCode;
@com.fasterxml.jackson.annotation.JsonProperty("languageTag") private final java.lang.String languageTag;
@com.fasterxml.jackson.annotation.JsonProperty("level") private final java.lang.Double level;
@com.fasterxml.jackson.annotation.JsonProperty("profile") private final java.lang.String profile;
@com.fasterxml.jackson.annotation.JsonProperty("refFrames") private final java.lang.Double refFrames;
@com.fasterxml.jackson.annotation.JsonProperty("streamType") private final java.lang.Double streamType;
@com.fasterxml.jackson.annotation.JsonProperty("width") private final java.lang.Double width;
Stream(Builder builder) {
super(builder);
this._default = builder.get_default();
this.bitDepth = builder.getBitDepth();
this.bitrate = builder.getBitrate();
this.chromaLocation = builder.getChromaLocation();
this.chromaSubsampling = builder.getChromaSubsampling();
this.codec = builder.getCodec();
this.codedHeight = builder.getCodedHeight();
this.codedWidth = builder.getCodedWidth();
this.colorRange = builder.getColorRange();
this.displayTitle = builder.getDisplayTitle();
this.extendedDisplayTitle = builder.getExtendedDisplayTitle();
this.frameRate = builder.getFrameRate();
this.height = builder.getHeight();
this.id = builder.getId();
this.index = builder.getIndex();
this.language = builder.getLanguage();
this.languageCode = builder.getLanguageCode();
this.languageTag = builder.getLanguageTag();
this.level = builder.getLevel();
this.profile = builder.getProfile();
this.refFrames = builder.getRefFrames();
this.streamType = builder.getStreamType();
this.width = builder.getWidth();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("audioProfile") private java.lang.String audioProfile;
@com.fasterxml.jackson.annotation.JsonProperty("container") private java.lang.String container;
@com.fasterxml.jackson.annotation.JsonProperty("duration") private java.lang.Double duration;
@com.fasterxml.jackson.annotation.JsonProperty("file") private java.lang.String file;
@com.fasterxml.jackson.annotation.JsonProperty("id") private java.lang.Double id;
@com.fasterxml.jackson.annotation.JsonProperty("key") private java.lang.String key;
@com.fasterxml.jackson.annotation.JsonProperty("size") private java.lang.Double size;
@com.fasterxml.jackson.annotation.JsonProperty("Stream") private java.util.List<GetOnDeckResponse.MediaContainer.Metadata.Media.Part.Stream> stream;
@com.fasterxml.jackson.annotation.JsonProperty("videoProfile") private java.lang.String videoProfile;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetOnDeckResponse.MediaContainer.Metadata.Media.Part build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetOnDeckResponse.MediaContainer.Metadata.Media.Part buildWithoutValidation() {
return new GetOnDeckResponse.MediaContainer.Metadata.Media.Part(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("audioProfile") private final java.lang.String audioProfile;
@com.fasterxml.jackson.annotation.JsonProperty("container") private final java.lang.String container;
@com.fasterxml.jackson.annotation.JsonProperty("duration") private final java.lang.Double duration;
@com.fasterxml.jackson.annotation.JsonProperty("file") private final java.lang.String file;
@com.fasterxml.jackson.annotation.JsonProperty("id") private final java.lang.Double id;
@com.fasterxml.jackson.annotation.JsonProperty("key") private final java.lang.String key;
@com.fasterxml.jackson.annotation.JsonProperty("size") private final java.lang.Double size;
@com.fasterxml.jackson.annotation.JsonProperty("Stream") private final java.util.List<GetOnDeckResponse.MediaContainer.Metadata.Media.Part.Stream> stream;
@com.fasterxml.jackson.annotation.JsonProperty("videoProfile") private final java.lang.String videoProfile;
Part(Builder builder) {
super(builder);
this.audioProfile = builder.getAudioProfile();
this.container = builder.getContainer();
this.duration = builder.getDuration();
this.file = builder.getFile();
this.id = builder.getId();
this.key = builder.getKey();
this.size = builder.getSize();
this.stream = builder.getStream();
this.videoProfile = builder.getVideoProfile();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("aspectRatio") private java.lang.Double aspectRatio;
@com.fasterxml.jackson.annotation.JsonProperty("audioChannels") private java.lang.Double audioChannels;
@com.fasterxml.jackson.annotation.JsonProperty("audioCodec") private java.lang.String audioCodec;
@com.fasterxml.jackson.annotation.JsonProperty("audioProfile") private java.lang.String audioProfile;
@com.fasterxml.jackson.annotation.JsonProperty("bitrate") private java.lang.Double bitrate;
@com.fasterxml.jackson.annotation.JsonProperty("container") private java.lang.String container;
@com.fasterxml.jackson.annotation.JsonProperty("duration") private java.lang.Double duration;
@com.fasterxml.jackson.annotation.JsonProperty("height") private java.lang.Double height;
@com.fasterxml.jackson.annotation.JsonProperty("id") private java.lang.Double id;
@com.fasterxml.jackson.annotation.JsonProperty("Part") private java.util.List<GetOnDeckResponse.MediaContainer.Metadata.Media.Part> part;
@com.fasterxml.jackson.annotation.JsonProperty("videoCodec") private java.lang.String videoCodec;
@com.fasterxml.jackson.annotation.JsonProperty("videoFrameRate") private java.lang.String videoFrameRate;
@com.fasterxml.jackson.annotation.JsonProperty("videoProfile") private java.lang.String videoProfile;
@com.fasterxml.jackson.annotation.JsonProperty("videoResolution") private java.lang.String videoResolution;
@com.fasterxml.jackson.annotation.JsonProperty("width") private java.lang.Double width;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetOnDeckResponse.MediaContainer.Metadata.Media build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetOnDeckResponse.MediaContainer.Metadata.Media buildWithoutValidation() {
return new GetOnDeckResponse.MediaContainer.Metadata.Media(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("aspectRatio") private final java.lang.Double aspectRatio;
@com.fasterxml.jackson.annotation.JsonProperty("audioChannels") private final java.lang.Double audioChannels;
@com.fasterxml.jackson.annotation.JsonProperty("audioCodec") private final java.lang.String audioCodec;
@com.fasterxml.jackson.annotation.JsonProperty("audioProfile") private final java.lang.String audioProfile;
@com.fasterxml.jackson.annotation.JsonProperty("bitrate") private final java.lang.Double bitrate;
@com.fasterxml.jackson.annotation.JsonProperty("container") private final java.lang.String container;
@com.fasterxml.jackson.annotation.JsonProperty("duration") private final java.lang.Double duration;
@com.fasterxml.jackson.annotation.JsonProperty("height") private final java.lang.Double height;
@com.fasterxml.jackson.annotation.JsonProperty("id") private final java.lang.Double id;
@com.fasterxml.jackson.annotation.JsonProperty("Part") private final java.util.List<GetOnDeckResponse.MediaContainer.Metadata.Media.Part> part;
@com.fasterxml.jackson.annotation.JsonProperty("videoCodec") private final java.lang.String videoCodec;
@com.fasterxml.jackson.annotation.JsonProperty("videoFrameRate") private final java.lang.String videoFrameRate;
@com.fasterxml.jackson.annotation.JsonProperty("videoProfile") private final java.lang.String videoProfile;
@com.fasterxml.jackson.annotation.JsonProperty("videoResolution") private final java.lang.String videoResolution;
@com.fasterxml.jackson.annotation.JsonProperty("width") private final java.lang.Double width;
Media(Builder builder) {
super(builder);
this.aspectRatio = builder.getAspectRatio();
this.audioChannels = builder.getAudioChannels();
this.audioCodec = builder.getAudioCodec();
this.audioProfile = builder.getAudioProfile();
this.bitrate = builder.getBitrate();
this.container = builder.getContainer();
this.duration = builder.getDuration();
this.height = builder.getHeight();
this.id = builder.getId();
this.part = builder.getPart();
this.videoCodec = builder.getVideoCodec();
this.videoFrameRate = builder.getVideoFrameRate();
this.videoProfile = builder.getVideoProfile();
this.videoResolution = builder.getVideoResolution();
this.width = builder.getWidth();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("addedAt") private java.lang.Double addedAt;
@com.fasterxml.jackson.annotation.JsonProperty("allowSync") private java.lang.Boolean allowSync;
@com.fasterxml.jackson.annotation.JsonProperty("art") private java.lang.String art;
@com.fasterxml.jackson.annotation.JsonProperty("contentRating") private java.lang.String contentRating;
@com.fasterxml.jackson.annotation.JsonProperty("duration") private java.lang.Double duration;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentArt") private java.lang.String grandparentArt;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentGuid") private java.lang.String grandparentGuid;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentKey") private java.lang.String grandparentKey;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentRatingKey") private java.lang.Double grandparentRatingKey;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentTheme") private java.lang.String grandparentTheme;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentThumb") private java.lang.String grandparentThumb;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentTitle") private java.lang.String grandparentTitle;
@com.fasterxml.jackson.annotation.JsonProperty("Guid") private java.util.List<GetOnDeckResponse.MediaContainer.Metadata.Guid> guid;
@com.fasterxml.jackson.annotation.JsonProperty("index") private java.lang.Double index;
@com.fasterxml.jackson.annotation.JsonProperty("key") private java.lang.String key;
@com.fasterxml.jackson.annotation.JsonProperty("lastViewedAt") private java.lang.Double lastViewedAt;
@com.fasterxml.jackson.annotation.JsonProperty("librarySectionID") private java.lang.Double librarySectionId;
@com.fasterxml.jackson.annotation.JsonProperty("librarySectionKey") private java.lang.String librarySectionKey;
@com.fasterxml.jackson.annotation.JsonProperty("librarySectionTitle") private java.lang.String librarySectionTitle;
@com.fasterxml.jackson.annotation.JsonProperty("librarySectionUUID") private java.lang.String librarySectionUuid;
@com.fasterxml.jackson.annotation.JsonProperty("Media") private java.util.List<GetOnDeckResponse.MediaContainer.Metadata.Media> media;
@com.fasterxml.jackson.annotation.JsonProperty("originallyAvailableAt") private java.lang.String originallyAvailableAt;
@com.fasterxml.jackson.annotation.JsonProperty("parentGuid") private java.lang.String parentGuid;
@com.fasterxml.jackson.annotation.JsonProperty("parentIndex") private java.lang.Double parentIndex;
@com.fasterxml.jackson.annotation.JsonProperty("parentKey") private java.lang.String parentKey;
@com.fasterxml.jackson.annotation.JsonProperty("parentRatingKey") private java.lang.Double parentRatingKey;
@com.fasterxml.jackson.annotation.JsonProperty("parentThumb") private java.lang.String parentThumb;
@com.fasterxml.jackson.annotation.JsonProperty("parentTitle") private java.lang.String parentTitle;
@com.fasterxml.jackson.annotation.JsonProperty("ratingKey") private java.lang.Double ratingKey;
@com.fasterxml.jackson.annotation.JsonProperty("summary") private java.lang.String summary;
@com.fasterxml.jackson.annotation.JsonProperty("thumb") private java.lang.String thumb;
@com.fasterxml.jackson.annotation.JsonProperty("title") private java.lang.String title;
@com.fasterxml.jackson.annotation.JsonProperty("type") private java.lang.String type;
@com.fasterxml.jackson.annotation.JsonProperty("updatedAt") private java.lang.Double updatedAt;
@com.fasterxml.jackson.annotation.JsonProperty("year") private java.lang.Double year;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetOnDeckResponse.MediaContainer.Metadata build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetOnDeckResponse.MediaContainer.Metadata buildWithoutValidation() {
return new GetOnDeckResponse.MediaContainer.Metadata(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("addedAt") private final java.lang.Double addedAt;
@com.fasterxml.jackson.annotation.JsonProperty("allowSync") private final java.lang.Boolean allowSync;
@com.fasterxml.jackson.annotation.JsonProperty("art") private final java.lang.String art;
@com.fasterxml.jackson.annotation.JsonProperty("contentRating") private final java.lang.String contentRating;
@com.fasterxml.jackson.annotation.JsonProperty("duration") private final java.lang.Double duration;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentArt") private final java.lang.String grandparentArt;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentGuid") private final java.lang.String grandparentGuid;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentKey") private final java.lang.String grandparentKey;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentRatingKey") private final java.lang.Double grandparentRatingKey;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentTheme") private final java.lang.String grandparentTheme;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentThumb") private final java.lang.String grandparentThumb;
@com.fasterxml.jackson.annotation.JsonProperty("grandparentTitle") private final java.lang.String grandparentTitle;
@com.fasterxml.jackson.annotation.JsonProperty("Guid") private final java.util.List<GetOnDeckResponse.MediaContainer.Metadata.Guid> guid;
@com.fasterxml.jackson.annotation.JsonProperty("index") private final java.lang.Double index;
@com.fasterxml.jackson.annotation.JsonProperty("key") private final java.lang.String key;
@com.fasterxml.jackson.annotation.JsonProperty("lastViewedAt") private final java.lang.Double lastViewedAt;
@com.fasterxml.jackson.annotation.JsonProperty("librarySectionID") private final java.lang.Double librarySectionId;
@com.fasterxml.jackson.annotation.JsonProperty("librarySectionKey") private final java.lang.String librarySectionKey;
@com.fasterxml.jackson.annotation.JsonProperty("librarySectionTitle") private final java.lang.String librarySectionTitle;
@com.fasterxml.jackson.annotation.JsonProperty("librarySectionUUID") private final java.lang.String librarySectionUuid;
@com.fasterxml.jackson.annotation.JsonProperty("Media") private final java.util.List<GetOnDeckResponse.MediaContainer.Metadata.Media> media;
@com.fasterxml.jackson.annotation.JsonProperty("originallyAvailableAt") private final java.lang.String originallyAvailableAt;
@com.fasterxml.jackson.annotation.JsonProperty("parentGuid") private final java.lang.String parentGuid;
@com.fasterxml.jackson.annotation.JsonProperty("parentIndex") private final java.lang.Double parentIndex;
@com.fasterxml.jackson.annotation.JsonProperty("parentKey") private final java.lang.String parentKey;
@com.fasterxml.jackson.annotation.JsonProperty("parentRatingKey") private final java.lang.Double parentRatingKey;
@com.fasterxml.jackson.annotation.JsonProperty("parentThumb") private final java.lang.String parentThumb;
@com.fasterxml.jackson.annotation.JsonProperty("parentTitle") private final java.lang.String parentTitle;
@com.fasterxml.jackson.annotation.JsonProperty("ratingKey") private final java.lang.Double ratingKey;
@com.fasterxml.jackson.annotation.JsonProperty("summary") private final java.lang.String summary;
@com.fasterxml.jackson.annotation.JsonProperty("thumb") private final java.lang.String thumb;
@com.fasterxml.jackson.annotation.JsonProperty("title") private final java.lang.String title;
@com.fasterxml.jackson.annotation.JsonProperty("type") private final java.lang.String type;
@com.fasterxml.jackson.annotation.JsonProperty("updatedAt") private final java.lang.Double updatedAt;
@com.fasterxml.jackson.annotation.JsonProperty("year") private final java.lang.Double year;
Metadata(Builder builder) {
super(builder);
this.addedAt = builder.getAddedAt();
this.allowSync = builder.getAllowSync();
this.art = builder.getArt();
this.contentRating = builder.getContentRating();
this.duration = builder.getDuration();
this.grandparentArt = builder.getGrandparentArt();
this.grandparentGuid = builder.getGrandparentGuid();
this.grandparentKey = builder.getGrandparentKey();
this.grandparentRatingKey = builder.getGrandparentRatingKey();
this.grandparentTheme = builder.getGrandparentTheme();
this.grandparentThumb = builder.getGrandparentThumb();
this.grandparentTitle = builder.getGrandparentTitle();
this.guid = builder.getGuid();
this.index = builder.getIndex();
this.key = builder.getKey();
this.lastViewedAt = builder.getLastViewedAt();
this.librarySectionId = builder.getLibrarySectionId();
this.librarySectionKey = builder.getLibrarySectionKey();
this.librarySectionTitle = builder.getLibrarySectionTitle();
this.librarySectionUuid = builder.getLibrarySectionUuid();
this.media = builder.getMedia();
this.originallyAvailableAt = builder.getOriginallyAvailableAt();
this.parentGuid = builder.getParentGuid();
this.parentIndex = builder.getParentIndex();
this.parentKey = builder.getParentKey();
this.parentRatingKey = builder.getParentRatingKey();
this.parentThumb = builder.getParentThumb();
this.parentTitle = builder.getParentTitle();
this.ratingKey = builder.getRatingKey();
this.summary = builder.getSummary();
this.thumb = builder.getThumb();
this.title = builder.getTitle();
this.type = builder.getType();
this.updatedAt = builder.getUpdatedAt();
this.year = builder.getYear();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("allowSync") private java.lang.Boolean allowSync;
@com.fasterxml.jackson.annotation.JsonProperty("identifier") private java.lang.String identifier;
@com.fasterxml.jackson.annotation.JsonProperty("mediaTagPrefix") private java.lang.String mediaTagPrefix;
@com.fasterxml.jackson.annotation.JsonProperty("mediaTagVersion") private java.lang.Double mediaTagVersion;
@com.fasterxml.jackson.annotation.JsonProperty("Metadata") private java.util.List<GetOnDeckResponse.MediaContainer.Metadata> metadata;
@com.fasterxml.jackson.annotation.JsonProperty("mixedParents") private java.lang.Boolean mixedParents;
@com.fasterxml.jackson.annotation.JsonProperty("size") private java.lang.Double size;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetOnDeckResponse.MediaContainer build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetOnDeckResponse.MediaContainer buildWithoutValidation() {
return new GetOnDeckResponse.MediaContainer(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("allowSync") private final java.lang.Boolean allowSync;
@com.fasterxml.jackson.annotation.JsonProperty("identifier") private final java.lang.String identifier;
@com.fasterxml.jackson.annotation.JsonProperty("mediaTagPrefix") private final java.lang.String mediaTagPrefix;
@com.fasterxml.jackson.annotation.JsonProperty("mediaTagVersion") private final java.lang.Double mediaTagVersion;
@com.fasterxml.jackson.annotation.JsonProperty("Metadata") private final java.util.List<GetOnDeckResponse.MediaContainer.Metadata> metadata;
@com.fasterxml.jackson.annotation.JsonProperty("mixedParents") private final java.lang.Boolean mixedParents;
@com.fasterxml.jackson.annotation.JsonProperty("size") private final java.lang.Double size;
MediaContainer(Builder builder) {
super(builder);
this.allowSync = builder.getAllowSync();
this.identifier = builder.getIdentifier();
this.mediaTagPrefix = builder.getMediaTagPrefix();
this.mediaTagVersion = builder.getMediaTagVersion();
this.metadata = builder.getMetadata();
this.mixedParents = builder.getMixedParents();
this.size = builder.getSize();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private GetOnDeckResponse.MediaContainer mediaContainer;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetOnDeckResponse build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetOnDeckResponse buildWithoutValidation() {
return new GetOnDeckResponse(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.stream(this.getClass().getDeclaredFields())
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private final GetOnDeckResponse.MediaContainer mediaContainer;
GetOnDeckResponse(Builder builder) {
super(builder);
this.mediaContainer = builder.getMediaContainer();
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,366 +0,0 @@
package 47.one0.models;
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerActivitiesResponse.Builder.class)
public class GetServerActivitiesResponse extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerActivitiesResponse.MediaContainer.Builder.class)
public static class MediaContainer extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerActivitiesResponse.MediaContainer.Activity.Builder.class)
public static class Activity extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerActivitiesResponse.MediaContainer.Activity.Context.Builder.class)
public static class Context extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("librarySectionID") private java.lang.String librarySectionId;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerActivitiesResponse.MediaContainer.Activity.Context build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerActivitiesResponse.MediaContainer.Activity.Context buildWithoutValidation() {
return new GetServerActivitiesResponse.MediaContainer.Activity.Context(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("librarySectionID") private final java.lang.String librarySectionId;
Context(Builder builder) {
super(builder);
this.librarySectionId = builder.getLibrarySectionId();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("cancellable") private java.lang.Boolean cancellable;
@com.fasterxml.jackson.annotation.JsonProperty("Context") private GetServerActivitiesResponse.MediaContainer.Activity.Context context;
@com.fasterxml.jackson.annotation.JsonProperty("progress") private java.lang.Double progress;
@com.fasterxml.jackson.annotation.JsonProperty("subtitle") private java.lang.String subtitle;
@com.fasterxml.jackson.annotation.JsonProperty("title") private java.lang.String title;
@com.fasterxml.jackson.annotation.JsonProperty("type") private java.lang.String type;
@com.fasterxml.jackson.annotation.JsonProperty("userID") private java.lang.Double userId;
@com.fasterxml.jackson.annotation.JsonProperty("uuid") private java.lang.String uuid;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerActivitiesResponse.MediaContainer.Activity build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerActivitiesResponse.MediaContainer.Activity buildWithoutValidation() {
return new GetServerActivitiesResponse.MediaContainer.Activity(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("cancellable") private final java.lang.Boolean cancellable;
@com.fasterxml.jackson.annotation.JsonProperty("Context") private final GetServerActivitiesResponse.MediaContainer.Activity.Context context;
@com.fasterxml.jackson.annotation.JsonProperty("progress") private final java.lang.Double progress;
@com.fasterxml.jackson.annotation.JsonProperty("subtitle") private final java.lang.String subtitle;
@com.fasterxml.jackson.annotation.JsonProperty("title") private final java.lang.String title;
@com.fasterxml.jackson.annotation.JsonProperty("type") private final java.lang.String type;
@com.fasterxml.jackson.annotation.JsonProperty("userID") private final java.lang.Double userId;
@com.fasterxml.jackson.annotation.JsonProperty("uuid") private final java.lang.String uuid;
Activity(Builder builder) {
super(builder);
this.cancellable = builder.getCancellable();
this.context = builder.getContext();
this.progress = builder.getProgress();
this.subtitle = builder.getSubtitle();
this.title = builder.getTitle();
this.type = builder.getType();
this.userId = builder.getUserId();
this.uuid = builder.getUuid();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("Activity") private java.util.List<GetServerActivitiesResponse.MediaContainer.Activity> activity;
@com.fasterxml.jackson.annotation.JsonProperty("size") private java.lang.Double size;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerActivitiesResponse.MediaContainer build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerActivitiesResponse.MediaContainer buildWithoutValidation() {
return new GetServerActivitiesResponse.MediaContainer(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("Activity") private final java.util.List<GetServerActivitiesResponse.MediaContainer.Activity> activity;
@com.fasterxml.jackson.annotation.JsonProperty("size") private final java.lang.Double size;
MediaContainer(Builder builder) {
super(builder);
this.activity = builder.getActivity();
this.size = builder.getSize();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private GetServerActivitiesResponse.MediaContainer mediaContainer;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerActivitiesResponse build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerActivitiesResponse buildWithoutValidation() {
return new GetServerActivitiesResponse(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.stream(this.getClass().getDeclaredFields())
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private final GetServerActivitiesResponse.MediaContainer mediaContainer;
GetServerActivitiesResponse(Builder builder) {
super(builder);
this.mediaContainer = builder.getMediaContainer();
}
}

View File

@@ -1,413 +0,0 @@
package 47.one0.models;
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerCapabilitiesResponse.Builder.class)
public class GetServerCapabilitiesResponse extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerCapabilitiesResponse.MediaContainer.Builder.class)
public static class MediaContainer extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerCapabilitiesResponse.MediaContainer.Directory.Builder.class)
public static class Directory extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("count") private java.lang.Double count;
@com.fasterxml.jackson.annotation.JsonProperty("key") private java.lang.String key;
@com.fasterxml.jackson.annotation.JsonProperty("title") private java.lang.String title;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerCapabilitiesResponse.MediaContainer.Directory build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerCapabilitiesResponse.MediaContainer.Directory buildWithoutValidation() {
return new GetServerCapabilitiesResponse.MediaContainer.Directory(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("count") private final java.lang.Double count;
@com.fasterxml.jackson.annotation.JsonProperty("key") private final java.lang.String key;
@com.fasterxml.jackson.annotation.JsonProperty("title") private final java.lang.String title;
Directory(Builder builder) {
super(builder);
this.count = builder.getCount();
this.key = builder.getKey();
this.title = builder.getTitle();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("allowCameraUpload") private java.lang.Boolean allowCameraUpload;
@com.fasterxml.jackson.annotation.JsonProperty("allowChannelAccess") private java.lang.Boolean allowChannelAccess;
@com.fasterxml.jackson.annotation.JsonProperty("allowMediaDeletion") private java.lang.Boolean allowMediaDeletion;
@com.fasterxml.jackson.annotation.JsonProperty("allowSharing") private java.lang.Boolean allowSharing;
@com.fasterxml.jackson.annotation.JsonProperty("allowSync") private java.lang.Boolean allowSync;
@com.fasterxml.jackson.annotation.JsonProperty("allowTuners") private java.lang.Boolean allowTuners;
@com.fasterxml.jackson.annotation.JsonProperty("backgroundProcessing") private java.lang.Boolean backgroundProcessing;
@com.fasterxml.jackson.annotation.JsonProperty("certificate") private java.lang.Boolean certificate;
@com.fasterxml.jackson.annotation.JsonProperty("companionProxy") private java.lang.Boolean companionProxy;
@com.fasterxml.jackson.annotation.JsonProperty("countryCode") private java.lang.String countryCode;
@com.fasterxml.jackson.annotation.JsonProperty("diagnostics") private java.lang.String diagnostics;
@com.fasterxml.jackson.annotation.JsonProperty("Directory") private java.util.List<GetServerCapabilitiesResponse.MediaContainer.Directory> directory;
@com.fasterxml.jackson.annotation.JsonProperty("eventStream") private java.lang.Boolean eventStream;
@com.fasterxml.jackson.annotation.JsonProperty("friendlyName") private java.lang.String friendlyName;
@com.fasterxml.jackson.annotation.JsonProperty("hubSearch") private java.lang.Boolean hubSearch;
@com.fasterxml.jackson.annotation.JsonProperty("itemClusters") private java.lang.Boolean itemClusters;
@com.fasterxml.jackson.annotation.JsonProperty("livetv") private java.lang.Double livetv;
@com.fasterxml.jackson.annotation.JsonProperty("machineIdentifier") private java.lang.String machineIdentifier;
@com.fasterxml.jackson.annotation.JsonProperty("mediaProviders") private java.lang.Boolean mediaProviders;
@com.fasterxml.jackson.annotation.JsonProperty("multiuser") private java.lang.Boolean multiuser;
@com.fasterxml.jackson.annotation.JsonProperty("musicAnalysis") private java.lang.Double musicAnalysis;
@com.fasterxml.jackson.annotation.JsonProperty("myPlex") private java.lang.Boolean myPlex;
@com.fasterxml.jackson.annotation.JsonProperty("myPlexMappingState") private java.lang.String myPlexMappingState;
@com.fasterxml.jackson.annotation.JsonProperty("myPlexSigninState") private java.lang.String myPlexSigninState;
@com.fasterxml.jackson.annotation.JsonProperty("myPlexSubscription") private java.lang.Boolean myPlexSubscription;
@com.fasterxml.jackson.annotation.JsonProperty("myPlexUsername") private java.lang.String myPlexUsername;
@com.fasterxml.jackson.annotation.JsonProperty("offlineTranscode") private java.lang.Double offlineTranscode;
@com.fasterxml.jackson.annotation.JsonProperty("ownerFeatures") private java.lang.String ownerFeatures;
@com.fasterxml.jackson.annotation.JsonProperty("photoAutoTag") private java.lang.Boolean photoAutoTag;
@com.fasterxml.jackson.annotation.JsonProperty("platform") private java.lang.String platform;
@com.fasterxml.jackson.annotation.JsonProperty("platformVersion") private java.lang.String platformVersion;
@com.fasterxml.jackson.annotation.JsonProperty("pluginHost") private java.lang.Boolean pluginHost;
@com.fasterxml.jackson.annotation.JsonProperty("pushNotifications") private java.lang.Boolean pushNotifications;
@com.fasterxml.jackson.annotation.JsonProperty("readOnlyLibraries") private java.lang.Boolean readOnlyLibraries;
@com.fasterxml.jackson.annotation.JsonProperty("size") private java.lang.Double size;
@com.fasterxml.jackson.annotation.JsonProperty("streamingBrainABRVersion") private java.lang.Double streamingBrainAbrversion;
@com.fasterxml.jackson.annotation.JsonProperty("streamingBrainVersion") private java.lang.Double streamingBrainVersion;
@com.fasterxml.jackson.annotation.JsonProperty("sync") private java.lang.Boolean sync;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderActiveVideoSessions") private java.lang.Double transcoderActiveVideoSessions;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderAudio") private java.lang.Boolean transcoderAudio;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderLyrics") private java.lang.Boolean transcoderLyrics;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderPhoto") private java.lang.Boolean transcoderPhoto;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderSubtitles") private java.lang.Boolean transcoderSubtitles;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderVideo") private java.lang.Boolean transcoderVideo;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderVideoBitrates") private java.lang.String transcoderVideoBitrates;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderVideoQualities") private java.lang.String transcoderVideoQualities;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderVideoResolutions") private java.lang.String transcoderVideoResolutions;
@com.fasterxml.jackson.annotation.JsonProperty("updatedAt") private java.lang.Double updatedAt;
@com.fasterxml.jackson.annotation.JsonProperty("updater") private java.lang.Boolean updater;
@com.fasterxml.jackson.annotation.JsonProperty("version") private java.lang.String version;
@com.fasterxml.jackson.annotation.JsonProperty("voiceSearch") private java.lang.Boolean voiceSearch;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerCapabilitiesResponse.MediaContainer build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerCapabilitiesResponse.MediaContainer buildWithoutValidation() {
return new GetServerCapabilitiesResponse.MediaContainer(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("allowCameraUpload") private final java.lang.Boolean allowCameraUpload;
@com.fasterxml.jackson.annotation.JsonProperty("allowChannelAccess") private final java.lang.Boolean allowChannelAccess;
@com.fasterxml.jackson.annotation.JsonProperty("allowMediaDeletion") private final java.lang.Boolean allowMediaDeletion;
@com.fasterxml.jackson.annotation.JsonProperty("allowSharing") private final java.lang.Boolean allowSharing;
@com.fasterxml.jackson.annotation.JsonProperty("allowSync") private final java.lang.Boolean allowSync;
@com.fasterxml.jackson.annotation.JsonProperty("allowTuners") private final java.lang.Boolean allowTuners;
@com.fasterxml.jackson.annotation.JsonProperty("backgroundProcessing") private final java.lang.Boolean backgroundProcessing;
@com.fasterxml.jackson.annotation.JsonProperty("certificate") private final java.lang.Boolean certificate;
@com.fasterxml.jackson.annotation.JsonProperty("companionProxy") private final java.lang.Boolean companionProxy;
@com.fasterxml.jackson.annotation.JsonProperty("countryCode") private final java.lang.String countryCode;
@com.fasterxml.jackson.annotation.JsonProperty("diagnostics") private final java.lang.String diagnostics;
@com.fasterxml.jackson.annotation.JsonProperty("Directory") private final java.util.List<GetServerCapabilitiesResponse.MediaContainer.Directory> directory;
@com.fasterxml.jackson.annotation.JsonProperty("eventStream") private final java.lang.Boolean eventStream;
@com.fasterxml.jackson.annotation.JsonProperty("friendlyName") private final java.lang.String friendlyName;
@com.fasterxml.jackson.annotation.JsonProperty("hubSearch") private final java.lang.Boolean hubSearch;
@com.fasterxml.jackson.annotation.JsonProperty("itemClusters") private final java.lang.Boolean itemClusters;
@com.fasterxml.jackson.annotation.JsonProperty("livetv") private final java.lang.Double livetv;
@com.fasterxml.jackson.annotation.JsonProperty("machineIdentifier") private final java.lang.String machineIdentifier;
@com.fasterxml.jackson.annotation.JsonProperty("mediaProviders") private final java.lang.Boolean mediaProviders;
@com.fasterxml.jackson.annotation.JsonProperty("multiuser") private final java.lang.Boolean multiuser;
@com.fasterxml.jackson.annotation.JsonProperty("musicAnalysis") private final java.lang.Double musicAnalysis;
@com.fasterxml.jackson.annotation.JsonProperty("myPlex") private final java.lang.Boolean myPlex;
@com.fasterxml.jackson.annotation.JsonProperty("myPlexMappingState") private final java.lang.String myPlexMappingState;
@com.fasterxml.jackson.annotation.JsonProperty("myPlexSigninState") private final java.lang.String myPlexSigninState;
@com.fasterxml.jackson.annotation.JsonProperty("myPlexSubscription") private final java.lang.Boolean myPlexSubscription;
@com.fasterxml.jackson.annotation.JsonProperty("myPlexUsername") private final java.lang.String myPlexUsername;
@com.fasterxml.jackson.annotation.JsonProperty("offlineTranscode") private final java.lang.Double offlineTranscode;
@com.fasterxml.jackson.annotation.JsonProperty("ownerFeatures") private final java.lang.String ownerFeatures;
@com.fasterxml.jackson.annotation.JsonProperty("photoAutoTag") private final java.lang.Boolean photoAutoTag;
@com.fasterxml.jackson.annotation.JsonProperty("platform") private final java.lang.String platform;
@com.fasterxml.jackson.annotation.JsonProperty("platformVersion") private final java.lang.String platformVersion;
@com.fasterxml.jackson.annotation.JsonProperty("pluginHost") private final java.lang.Boolean pluginHost;
@com.fasterxml.jackson.annotation.JsonProperty("pushNotifications") private final java.lang.Boolean pushNotifications;
@com.fasterxml.jackson.annotation.JsonProperty("readOnlyLibraries") private final java.lang.Boolean readOnlyLibraries;
@com.fasterxml.jackson.annotation.JsonProperty("size") private final java.lang.Double size;
@com.fasterxml.jackson.annotation.JsonProperty("streamingBrainABRVersion") private final java.lang.Double streamingBrainAbrversion;
@com.fasterxml.jackson.annotation.JsonProperty("streamingBrainVersion") private final java.lang.Double streamingBrainVersion;
@com.fasterxml.jackson.annotation.JsonProperty("sync") private final java.lang.Boolean sync;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderActiveVideoSessions") private final java.lang.Double transcoderActiveVideoSessions;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderAudio") private final java.lang.Boolean transcoderAudio;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderLyrics") private final java.lang.Boolean transcoderLyrics;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderPhoto") private final java.lang.Boolean transcoderPhoto;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderSubtitles") private final java.lang.Boolean transcoderSubtitles;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderVideo") private final java.lang.Boolean transcoderVideo;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderVideoBitrates") private final java.lang.String transcoderVideoBitrates;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderVideoQualities") private final java.lang.String transcoderVideoQualities;
@com.fasterxml.jackson.annotation.JsonProperty("transcoderVideoResolutions") private final java.lang.String transcoderVideoResolutions;
@com.fasterxml.jackson.annotation.JsonProperty("updatedAt") private final java.lang.Double updatedAt;
@com.fasterxml.jackson.annotation.JsonProperty("updater") private final java.lang.Boolean updater;
@com.fasterxml.jackson.annotation.JsonProperty("version") private final java.lang.String version;
@com.fasterxml.jackson.annotation.JsonProperty("voiceSearch") private final java.lang.Boolean voiceSearch;
MediaContainer(Builder builder) {
super(builder);
this.allowCameraUpload = builder.getAllowCameraUpload();
this.allowChannelAccess = builder.getAllowChannelAccess();
this.allowMediaDeletion = builder.getAllowMediaDeletion();
this.allowSharing = builder.getAllowSharing();
this.allowSync = builder.getAllowSync();
this.allowTuners = builder.getAllowTuners();
this.backgroundProcessing = builder.getBackgroundProcessing();
this.certificate = builder.getCertificate();
this.companionProxy = builder.getCompanionProxy();
this.countryCode = builder.getCountryCode();
this.diagnostics = builder.getDiagnostics();
this.directory = builder.getDirectory();
this.eventStream = builder.getEventStream();
this.friendlyName = builder.getFriendlyName();
this.hubSearch = builder.getHubSearch();
this.itemClusters = builder.getItemClusters();
this.livetv = builder.getLivetv();
this.machineIdentifier = builder.getMachineIdentifier();
this.mediaProviders = builder.getMediaProviders();
this.multiuser = builder.getMultiuser();
this.musicAnalysis = builder.getMusicAnalysis();
this.myPlex = builder.getMyPlex();
this.myPlexMappingState = builder.getMyPlexMappingState();
this.myPlexSigninState = builder.getMyPlexSigninState();
this.myPlexSubscription = builder.getMyPlexSubscription();
this.myPlexUsername = builder.getMyPlexUsername();
this.offlineTranscode = builder.getOfflineTranscode();
this.ownerFeatures = builder.getOwnerFeatures();
this.photoAutoTag = builder.getPhotoAutoTag();
this.platform = builder.getPlatform();
this.platformVersion = builder.getPlatformVersion();
this.pluginHost = builder.getPluginHost();
this.pushNotifications = builder.getPushNotifications();
this.readOnlyLibraries = builder.getReadOnlyLibraries();
this.size = builder.getSize();
this.streamingBrainAbrversion = builder.getStreamingBrainAbrversion();
this.streamingBrainVersion = builder.getStreamingBrainVersion();
this.sync = builder.getSync();
this.transcoderActiveVideoSessions = builder.getTranscoderActiveVideoSessions();
this.transcoderAudio = builder.getTranscoderAudio();
this.transcoderLyrics = builder.getTranscoderLyrics();
this.transcoderPhoto = builder.getTranscoderPhoto();
this.transcoderSubtitles = builder.getTranscoderSubtitles();
this.transcoderVideo = builder.getTranscoderVideo();
this.transcoderVideoBitrates = builder.getTranscoderVideoBitrates();
this.transcoderVideoQualities = builder.getTranscoderVideoQualities();
this.transcoderVideoResolutions = builder.getTranscoderVideoResolutions();
this.updatedAt = builder.getUpdatedAt();
this.updater = builder.getUpdater();
this.version = builder.getVersion();
this.voiceSearch = builder.getVoiceSearch();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private GetServerCapabilitiesResponse.MediaContainer mediaContainer;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerCapabilitiesResponse build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerCapabilitiesResponse buildWithoutValidation() {
return new GetServerCapabilitiesResponse(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.stream(this.getClass().getDeclaredFields())
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private final GetServerCapabilitiesResponse.MediaContainer mediaContainer;
GetServerCapabilitiesResponse(Builder builder) {
super(builder);
this.mediaContainer = builder.getMediaContainer();
}
}

View File

@@ -1,181 +0,0 @@
package 47.one0.models;
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerIdentityResponse.Builder.class)
public class GetServerIdentityResponse extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerIdentityResponse.MediaContainer.Builder.class)
public static class MediaContainer extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("claimed") private java.lang.Boolean claimed;
@com.fasterxml.jackson.annotation.JsonProperty("machineIdentifier") private java.lang.String machineIdentifier;
@com.fasterxml.jackson.annotation.JsonProperty("size") private java.lang.Double size;
@com.fasterxml.jackson.annotation.JsonProperty("version") private java.lang.String version;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerIdentityResponse.MediaContainer build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerIdentityResponse.MediaContainer buildWithoutValidation() {
return new GetServerIdentityResponse.MediaContainer(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("claimed") private final java.lang.Boolean claimed;
@com.fasterxml.jackson.annotation.JsonProperty("machineIdentifier") private final java.lang.String machineIdentifier;
@com.fasterxml.jackson.annotation.JsonProperty("size") private final java.lang.Double size;
@com.fasterxml.jackson.annotation.JsonProperty("version") private final java.lang.String version;
MediaContainer(Builder builder) {
super(builder);
this.claimed = builder.getClaimed();
this.machineIdentifier = builder.getMachineIdentifier();
this.size = builder.getSize();
this.version = builder.getVersion();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private GetServerIdentityResponse.MediaContainer mediaContainer;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerIdentityResponse build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerIdentityResponse buildWithoutValidation() {
return new GetServerIdentityResponse(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.stream(this.getClass().getDeclaredFields())
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private final GetServerIdentityResponse.MediaContainer mediaContainer;
GetServerIdentityResponse(Builder builder) {
super(builder);
this.mediaContainer = builder.getMediaContainer();
}
}

View File

@@ -1,275 +0,0 @@
package 47.one0.models;
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerListResponse.Builder.class)
public class GetServerListResponse extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerListResponse.MediaContainer.Builder.class)
public static class MediaContainer extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetServerListResponse.MediaContainer.Server.Builder.class)
public static class Server extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("address") private java.lang.String address;
@com.fasterxml.jackson.annotation.JsonProperty("host") private java.lang.String host;
@com.fasterxml.jackson.annotation.JsonProperty("machineIdentifier") private java.lang.String machineIdentifier;
@com.fasterxml.jackson.annotation.JsonProperty("name") private java.lang.String name;
@com.fasterxml.jackson.annotation.JsonProperty("port") private java.lang.Double port;
@com.fasterxml.jackson.annotation.JsonProperty("version") private java.lang.String version;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerListResponse.MediaContainer.Server build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerListResponse.MediaContainer.Server buildWithoutValidation() {
return new GetServerListResponse.MediaContainer.Server(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("address") private final java.lang.String address;
@com.fasterxml.jackson.annotation.JsonProperty("host") private final java.lang.String host;
@com.fasterxml.jackson.annotation.JsonProperty("machineIdentifier") private final java.lang.String machineIdentifier;
@com.fasterxml.jackson.annotation.JsonProperty("name") private final java.lang.String name;
@com.fasterxml.jackson.annotation.JsonProperty("port") private final java.lang.Double port;
@com.fasterxml.jackson.annotation.JsonProperty("version") private final java.lang.String version;
Server(Builder builder) {
super(builder);
this.address = builder.getAddress();
this.host = builder.getHost();
this.machineIdentifier = builder.getMachineIdentifier();
this.name = builder.getName();
this.port = builder.getPort();
this.version = builder.getVersion();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("Server") private java.util.List<GetServerListResponse.MediaContainer.Server> server;
@com.fasterxml.jackson.annotation.JsonProperty("size") private java.lang.Double size;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerListResponse.MediaContainer build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerListResponse.MediaContainer buildWithoutValidation() {
return new GetServerListResponse.MediaContainer(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("Server") private final java.util.List<GetServerListResponse.MediaContainer.Server> server;
@com.fasterxml.jackson.annotation.JsonProperty("size") private final java.lang.Double size;
MediaContainer(Builder builder) {
super(builder);
this.server = builder.getServer();
this.size = builder.getSize();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private GetServerListResponse.MediaContainer mediaContainer;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetServerListResponse build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetServerListResponse buildWithoutValidation() {
return new GetServerListResponse(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.stream(this.getClass().getDeclaredFields())
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private final GetServerListResponse.MediaContainer mediaContainer;
GetServerListResponse(Builder builder) {
super(builder);
this.mediaContainer = builder.getMediaContainer();
}
}

View File

@@ -1,323 +0,0 @@
package 47.one0.models;
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetTranscodeSessionsResponse.Builder.class)
public class GetTranscodeSessionsResponse extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetTranscodeSessionsResponse.MediaContainer.Builder.class)
public static class MediaContainer extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.EqualsAndHashCode(callSuper = false)
@lombok.ToString
@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL)
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = GetTranscodeSessionsResponse.MediaContainer.TranscodeSession.Builder.class)
public static class TranscodeSession extends 47.one0.models.BaseModel {
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("audioChannels") private java.lang.Double audioChannels;
@com.fasterxml.jackson.annotation.JsonProperty("audioCodec") private java.lang.String audioCodec;
@com.fasterxml.jackson.annotation.JsonProperty("audioDecision") private java.lang.String audioDecision;
@com.fasterxml.jackson.annotation.JsonProperty("complete") private java.lang.Boolean complete;
@com.fasterxml.jackson.annotation.JsonProperty("container") private java.lang.String container;
@com.fasterxml.jackson.annotation.JsonProperty("context") private java.lang.String context;
@com.fasterxml.jackson.annotation.JsonProperty("duration") private java.lang.Double duration;
@com.fasterxml.jackson.annotation.JsonProperty("error") private java.lang.Boolean error;
@com.fasterxml.jackson.annotation.JsonProperty("key") private java.lang.String key;
@com.fasterxml.jackson.annotation.JsonProperty("maxOffsetAvailable") private java.lang.Double maxOffsetAvailable;
@com.fasterxml.jackson.annotation.JsonProperty("minOffsetAvailable") private java.lang.Double minOffsetAvailable;
@com.fasterxml.jackson.annotation.JsonProperty("progress") private java.lang.Double progress;
@com.fasterxml.jackson.annotation.JsonProperty("protocol") private java.lang.String protocol;
@com.fasterxml.jackson.annotation.JsonProperty("size") private java.lang.Double size;
@com.fasterxml.jackson.annotation.JsonProperty("sourceAudioCodec") private java.lang.String sourceAudioCodec;
@com.fasterxml.jackson.annotation.JsonProperty("sourceVideoCodec") private java.lang.String sourceVideoCodec;
@com.fasterxml.jackson.annotation.JsonProperty("speed") private java.lang.Double speed;
@com.fasterxml.jackson.annotation.JsonProperty("throttled") private java.lang.Boolean throttled;
@com.fasterxml.jackson.annotation.JsonProperty("timeStamp") private java.lang.Double timeStamp;
@com.fasterxml.jackson.annotation.JsonProperty("transcodeHwRequested") private java.lang.Boolean transcodeHwRequested;
@com.fasterxml.jackson.annotation.JsonProperty("videoCodec") private java.lang.String videoCodec;
@com.fasterxml.jackson.annotation.JsonProperty("videoDecision") private java.lang.String videoDecision;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetTranscodeSessionsResponse.MediaContainer.TranscodeSession build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetTranscodeSessionsResponse.MediaContainer.TranscodeSession buildWithoutValidation() {
return new GetTranscodeSessionsResponse.MediaContainer.TranscodeSession(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("audioChannels") private final java.lang.Double audioChannels;
@com.fasterxml.jackson.annotation.JsonProperty("audioCodec") private final java.lang.String audioCodec;
@com.fasterxml.jackson.annotation.JsonProperty("audioDecision") private final java.lang.String audioDecision;
@com.fasterxml.jackson.annotation.JsonProperty("complete") private final java.lang.Boolean complete;
@com.fasterxml.jackson.annotation.JsonProperty("container") private final java.lang.String container;
@com.fasterxml.jackson.annotation.JsonProperty("context") private final java.lang.String context;
@com.fasterxml.jackson.annotation.JsonProperty("duration") private final java.lang.Double duration;
@com.fasterxml.jackson.annotation.JsonProperty("error") private final java.lang.Boolean error;
@com.fasterxml.jackson.annotation.JsonProperty("key") private final java.lang.String key;
@com.fasterxml.jackson.annotation.JsonProperty("maxOffsetAvailable") private final java.lang.Double maxOffsetAvailable;
@com.fasterxml.jackson.annotation.JsonProperty("minOffsetAvailable") private final java.lang.Double minOffsetAvailable;
@com.fasterxml.jackson.annotation.JsonProperty("progress") private final java.lang.Double progress;
@com.fasterxml.jackson.annotation.JsonProperty("protocol") private final java.lang.String protocol;
@com.fasterxml.jackson.annotation.JsonProperty("size") private final java.lang.Double size;
@com.fasterxml.jackson.annotation.JsonProperty("sourceAudioCodec") private final java.lang.String sourceAudioCodec;
@com.fasterxml.jackson.annotation.JsonProperty("sourceVideoCodec") private final java.lang.String sourceVideoCodec;
@com.fasterxml.jackson.annotation.JsonProperty("speed") private final java.lang.Double speed;
@com.fasterxml.jackson.annotation.JsonProperty("throttled") private final java.lang.Boolean throttled;
@com.fasterxml.jackson.annotation.JsonProperty("timeStamp") private final java.lang.Double timeStamp;
@com.fasterxml.jackson.annotation.JsonProperty("transcodeHwRequested") private final java.lang.Boolean transcodeHwRequested;
@com.fasterxml.jackson.annotation.JsonProperty("videoCodec") private final java.lang.String videoCodec;
@com.fasterxml.jackson.annotation.JsonProperty("videoDecision") private final java.lang.String videoDecision;
TranscodeSession(Builder builder) {
super(builder);
this.audioChannels = builder.getAudioChannels();
this.audioCodec = builder.getAudioCodec();
this.audioDecision = builder.getAudioDecision();
this.complete = builder.getComplete();
this.container = builder.getContainer();
this.context = builder.getContext();
this.duration = builder.getDuration();
this.error = builder.getError();
this.key = builder.getKey();
this.maxOffsetAvailable = builder.getMaxOffsetAvailable();
this.minOffsetAvailable = builder.getMinOffsetAvailable();
this.progress = builder.getProgress();
this.protocol = builder.getProtocol();
this.size = builder.getSize();
this.sourceAudioCodec = builder.getSourceAudioCodec();
this.sourceVideoCodec = builder.getSourceVideoCodec();
this.speed = builder.getSpeed();
this.throttled = builder.getThrottled();
this.timeStamp = builder.getTimeStamp();
this.transcodeHwRequested = builder.getTranscodeHwRequested();
this.videoCodec = builder.getVideoCodec();
this.videoDecision = builder.getVideoDecision();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("size") private java.lang.Double size;
@com.fasterxml.jackson.annotation.JsonProperty("TranscodeSession") private java.util.List<GetTranscodeSessionsResponse.MediaContainer.TranscodeSession> transcodeSession;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetTranscodeSessionsResponse.MediaContainer build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetTranscodeSessionsResponse.MediaContainer buildWithoutValidation() {
return new GetTranscodeSessionsResponse.MediaContainer(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.asList(this.getClass().getDeclaredFields()).stream()
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("size") private final java.lang.Double size;
@com.fasterxml.jackson.annotation.JsonProperty("TranscodeSession") private final java.util.List<GetTranscodeSessionsResponse.MediaContainer.TranscodeSession> transcodeSession;
MediaContainer(Builder builder) {
super(builder);
this.size = builder.getSize();
this.transcodeSession = builder.getTranscodeSession();
}
}
@lombok.Getter
@lombok.Setter
@lombok.experimental.Accessors(chain = true)
@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(buildMethodName = "buildWithoutValidation", withPrefix = "set")
public static class Builder extends 47.one0.models.BaseModel.Builder {
static final java.util.Set<java.util.Set<String>> REQUIRED_FIELDS_GROUPS;
static {
java.lang.String[][] requiredFieldsGroups =
new java.lang.String[][] {
};
REQUIRED_FIELDS_GROUPS =
java.util.Arrays.stream(requiredFieldsGroups)
.map((group) -> java.util.Arrays.stream(group).collect(java.util.stream.Collectors.toSet()))
.collect(java.util.stream.Collectors.toSet());
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private GetTranscodeSessionsResponse.MediaContainer mediaContainer;
public Builder() {
super(ValidationType.ALL_OF);
}
protected Builder(BaseModel.Builder.ValidationType validationType) {
super(validationType);
}
public GetTranscodeSessionsResponse build() {
String validateMsg = validate();
if (validateMsg != null) {
throw new 47.one0.exceptions.ApiException(validateMsg);
}
return buildWithoutValidation();
}
public GetTranscodeSessionsResponse buildWithoutValidation() {
return new GetTranscodeSessionsResponse(this);
}
@Override
protected java.util.Set<String> getNonNullInstanceFieldNames() {
// Introspect the class to get a list of all declared fields.
return java.util.Arrays.stream(this.getClass().getDeclaredFields())
.filter(
(field) -> {
try {
// Filter fields that are non-static and have values that are not null.
return !java.lang.reflect.Modifier.isStatic(field.getModifiers()) && field.get(this) != null;
} catch (IllegalArgumentException | IllegalAccessException e) {
// This should never happen...
throw new 47.one0.exceptions.ApiException(
"Unexpected exception thrown while accessing instance fields.", e);
}
})
.map(java.lang.reflect.Field::getName)
.collect(java.util.stream.Collectors.toSet());
}
@Override
protected java.util.Set<java.util.Set<String>> getRequiredFieldsGroups() {
return REQUIRED_FIELDS_GROUPS;
}
}
@com.fasterxml.jackson.annotation.JsonProperty("MediaContainer") private final GetTranscodeSessionsResponse.MediaContainer mediaContainer;
GetTranscodeSessionsResponse(Builder builder) {
super(builder);
this.mediaContainer = builder.getMediaContainer();
}
}

View File

@@ -1,11 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum IncludeDetails {
V1(1);
public final Float label;
}

View File

@@ -1,14 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum Level {
V1(1),
V2(2),
V3(3),
V4(4);
public final Float label;
}

View File

@@ -1,11 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum MinSize {
V1(1);
public final Float label;
}

View File

@@ -1,11 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum OnlyTransient {
V1(1);
public final Float label;
}

View File

@@ -1,13 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum PlaylistType {
AUDIO("audio"),
VIDEO("video"),
PHOTO("photo");
public final String label;
}

View File

@@ -1,90 +0,0 @@
# PlexSDK Models
A list of all models.
- [Level](#level)
- [Upscale](#upscale)
- [Type](#type)
- [Smart](#smart)
- [Force](#force)
- [SecurityType](#securitytype)
- [Scope](#scope)
- [Download](#download)
- [Tonight](#tonight)
- [Skip](#skip)
- [State](#state)
- [GetServerCapabilitiesResponse](#getservercapabilitiesresponse)
- [GetServerActivitiesResponse](#getserveractivitiesresponse)
- [GetButlerTasksResponse](#getbutlertasksresponse)
- [GetAvailableClientsResponse](#getavailableclientsresponse)
- [GetDevicesResponse](#getdevicesresponse)
- [GetServerIdentityResponse](#getserveridentityresponse)
- [GetRecentlyAddedResponse](#getrecentlyaddedresponse)
- [GetOnDeckResponse](#getondeckresponse)
- [GetMyPlexAccountResponse](#getmyplexaccountresponse)
- [GetSearchResultsResponse](#getsearchresultsresponse)
- [GetServerListResponse](#getserverlistresponse)
- [GetTranscodeSessionsResponse](#gettranscodesessionsresponse)
- [TaskName](#taskname)
- [OnlyTransient](#onlytransient)
- [IncludeDetails](#includedetails)
- [MinSize](#minsize)
- [PlaylistType](#playlisttype)
## Level
## Upscale
## Type
## Smart
## Force
## SecurityType
## Scope
## Download
## Tonight
## Skip
## State
## GetServerCapabilitiesResponse
## GetServerActivitiesResponse
## GetButlerTasksResponse
## GetAvailableClientsResponse
## GetDevicesResponse
## GetServerIdentityResponse
## GetRecentlyAddedResponse
## GetOnDeckResponse
## GetMyPlexAccountResponse
## GetSearchResultsResponse
## GetServerListResponse
## GetTranscodeSessionsResponse
## TaskName
## OnlyTransient
## IncludeDetails
## MinSize
## PlaylistType

View File

@@ -1,11 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum Scope {
ALL("all");
public final String label;
}

View File

@@ -1,11 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum SecurityType {
DELEGATION("delegation");
public final String label;
}

View File

@@ -1,11 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum Skip {
V1("1");
public final String label;
}

View File

@@ -1,11 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum Smart {
V1(1);
public final Float label;
}

View File

@@ -1,13 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum State {
PLAYING("playing"),
PAUSED("paused"),
STOPPED("stopped");
public final String label;
}

View File

@@ -1,24 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum TaskName {
BACKUPDATABASE("BackupDatabase"),
BUILDGRACENOTECOLLECTIONS("BuildGracenoteCollections"),
CHECKFORUPDATES("CheckForUpdates"),
CLEANOLDBUNDLES("CleanOldBundles"),
CLEANOLDCACHEFILES("CleanOldCacheFiles"),
DEEPMEDIAANALYSIS("DeepMediaAnalysis"),
GENERATEAUTOTAGS("GenerateAutoTags"),
GENERATECHAPTERTHUMBS("GenerateChapterThumbs"),
GENERATEMEDIAINDEXFILES("GenerateMediaIndexFiles"),
OPTIMIZEDATABASE("OptimizeDatabase"),
REFRESHLIBRARIES("RefreshLibraries"),
REFRESHLOCALMEDIA("RefreshLocalMedia"),
REFRESHPERIODICMETADATA("RefreshPeriodicMetadata"),
UPGRADEMEDIAANALYSIS("UpgradeMediaAnalysis");
public final String label;
}

View File

@@ -1,11 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum Tonight {
V1("1");
public final String label;
}

View File

@@ -1,13 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum Type {
AUDIO("audio"),
VIDEO("video"),
PHOTO("photo");
public final String label;
}

View File

@@ -1,11 +0,0 @@
package 47.one0.models;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum Upscale {
V1(1);
public final Float label;
}

View File

@@ -1,56 +0,0 @@
package 47.one0.services;
import java.util.Map;
import java.io.IOException;
import 47.one0.exceptions.ApiException;
import 47.one0.models.BaseModel;
import java.util.List;
import java.util.Objects;
import 47.one0.http.*;
import okhttp3.Headers;
import 47.one0.http.util.HttpUrl;
import 47.one0.http.util.HttpHeaders;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class ActivitiesService extends BaseService implements ActivitiesClient {
public ActivitiesService(OkHttpClient httpClient, String serverUrl) { super(httpClient, serverUrl); }
/**
* @summary Get Server Activities
*/
public ResponseWithHeaders<47.one0.models.GetServerActivitiesResponse> getServerActivities() throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("activities")
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
return new ResponseWithHeaders<47.one0.models.GetServerActivitiesResponse>(ModelConverter.convert(response, new com.fasterxml.jackson.core.type.TypeReference<47.one0.models.GetServerActivitiesResponse>() {}), response.headers());
}
/**
* @summary Cancel Server Activities
* @param {String} activityUUID - The UUID of the activity to cancel.
*/
public ResponseWithHeaders<String> cancelServerActivities(String activityUUID) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("activities")
.addPathParameter(String.valueOf(activityUUID))
.build();
Request request = new Request.Builder().url(url)
.delete()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

View File

@@ -1,55 +0,0 @@
package 47.one0.services;
import 47.one0.http.ModelConverter;
import 47.one0.Configuration;
import 47.one0.models.*;
import 47.one0.exceptions.ApiException;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import okhttp3.Headers;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class BaseService {
protected OkHttpClient httpClient;
protected String serverUrl;
public BaseService(OkHttpClient httpClient, String serverUrl) {
this.httpClient = httpClient;
this.serverUrl = serverUrl;
}
public void setBaseUrl(String serverUrl) {
this.serverUrl = serverUrl;
}
protected Response execute(Request request) throws ApiException {
Response response;
try {
response = this.httpClient.newCall(request).execute();
} catch (IOException e) {
ApiException apiException = new ApiException(e.getMessage());
throw apiException;
}
if (response.isSuccessful()) {
return response;
} else {
ApiException apiException = new ApiException(response.code());
throw apiException;
}
}
}

View File

@@ -1,126 +0,0 @@
package 47.one0.services;
import java.util.Map;
import java.io.IOException;
import 47.one0.exceptions.ApiException;
import 47.one0.models.BaseModel;
import java.util.List;
import java.util.Objects;
import 47.one0.http.*;
import okhttp3.Headers;
import 47.one0.http.util.HttpUrl;
import 47.one0.http.util.HttpHeaders;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class ButlerService extends BaseService implements ButlerClient {
public ButlerService(OkHttpClient httpClient, String serverUrl) { super(httpClient, serverUrl); }
/**
* @summary Get Butler tasks
*/
public ResponseWithHeaders<47.one0.models.GetButlerTasksResponse> getButlerTasks() throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("butler")
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
return new ResponseWithHeaders<47.one0.models.GetButlerTasksResponse>(ModelConverter.convert(response, new com.fasterxml.jackson.core.type.TypeReference<47.one0.models.GetButlerTasksResponse>() {}), response.headers());
}
/**
* @summary Start all Butler tasks
*/
public ResponseWithHeaders<String> startAllTasks() throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("butler")
.build();
RequestBody requestBody = RequestBody.create(
Objects.requireNonNull(ModelConverter.modelToJson(new BaseModel() {})),
okhttp3.MediaType.parse("application/json; charset=utf-8")
);
Request request = new Request.Builder().url(url)
.post(requestBody)
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Stop all Butler tasks
*/
public ResponseWithHeaders<String> stopAllTasks() throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("butler")
.build();
Request request = new Request.Builder().url(url)
.delete()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Start a single Butler task
* @param {String} taskName - the name of the task to be started.
*/
public ResponseWithHeaders<String> startTask(String taskName) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("butler")
.addPathParameter(String.valueOf(taskName))
.build();
RequestBody requestBody = RequestBody.create(
Objects.requireNonNull(ModelConverter.modelToJson(new BaseModel() {})),
okhttp3.MediaType.parse("application/json; charset=utf-8")
);
Request request = new Request.Builder().url(url)
.post(requestBody)
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Stop a single Butler task
* @param {String} taskName - The name of the task to be started.
*/
public ResponseWithHeaders<String> stopTask(String taskName) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("butler")
.addPathParameter(String.valueOf(taskName))
.build();
Request request = new Request.Builder().url(url)
.delete()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

View File

@@ -1,70 +0,0 @@
package 47.one0.services;
import java.util.Map;
import java.io.IOException;
import 47.one0.exceptions.ApiException;
import 47.one0.models.BaseModel;
import java.util.List;
import java.util.Objects;
import 47.one0.http.*;
import okhttp3.Headers;
import 47.one0.http.util.HttpUrl;
import 47.one0.http.util.HttpHeaders;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class HubsService extends BaseService implements HubsClient {
public HubsService(OkHttpClient httpClient, String serverUrl) { super(httpClient, serverUrl); }
/**
* @summary Get Global Hubs
* @param {Number} [count] - The number of items to return with each hub.
* @param {Number} [onlyTransient] - Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added).
*/
public ResponseWithHeaders<String> getGlobalHubs(Float count, Float onlyTransient) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("hubs")
.addOptionalQueryParameter("count", count)
.addOptionalQueryParameter("onlyTransient", onlyTransient)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Get library specific hubs
* @param {Number} sectionId - the Id of the library to query
* @param {Number} [count] - The number of items to return with each hub.
* @param {Number} [onlyTransient] - Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added).
*/
public ResponseWithHeaders<String> getLibraryHubs(Float sectionId, Float count, Float onlyTransient) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("hubs")
.addPathParameter("sections")
.addPathParameter(String.valueOf(sectionId))
.addOptionalQueryParameter("count", count)
.addOptionalQueryParameter("onlyTransient", onlyTransient)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

View File

@@ -1,302 +0,0 @@
package 47.one0.services;
import java.util.Map;
import java.io.IOException;
import 47.one0.exceptions.ApiException;
import 47.one0.models.BaseModel;
import java.util.List;
import java.util.Objects;
import 47.one0.http.*;
import okhttp3.Headers;
import 47.one0.http.util.HttpUrl;
import 47.one0.http.util.HttpHeaders;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class LibraryService extends BaseService implements LibraryClient {
public LibraryService(OkHttpClient httpClient, String serverUrl) { super(httpClient, serverUrl); }
/**
* @summary Get Hash Value
* @param {String} url - This is the path to the local file, must be prefixed by `file://`
* @param {Number} [type] - Item type
*/
public ResponseWithHeaders<String> getFileHash(String url, Float type) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("hashes")
.addRequiredQueryParameter("url", url)
.addOptionalQueryParameter("type", type)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Get Recently Added
*/
public ResponseWithHeaders<47.one0.models.GetRecentlyAddedResponse> getRecentlyAdded() throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("recentlyAdded")
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
return new ResponseWithHeaders<47.one0.models.GetRecentlyAddedResponse>(ModelConverter.convert(response, new com.fasterxml.jackson.core.type.TypeReference<47.one0.models.GetRecentlyAddedResponse>() {}), response.headers());
}
/**
* @summary Get All Libraries
*/
public ResponseWithHeaders<String> getLibraries() throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("sections")
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Get Library Details
* @param {Number} sectionId - the Id of the library to query
* @param {Number} [includeDetails] - Whether or not to include details for a section (types, filters, and sorts).
Only exists for backwards compatibility, media providers other than the server libraries have it on always.
*/
public ResponseWithHeaders<String> getLibrary(Float sectionId, Float includeDetails) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("sections")
.addPathParameter(String.valueOf(sectionId))
.addOptionalQueryParameter("includeDetails", includeDetails)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Delete Library Section
* @param {Number} sectionId - the Id of the library to query
*/
public ResponseWithHeaders<String> deleteLibrary(Float sectionId) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("sections")
.addPathParameter(String.valueOf(sectionId))
.build();
Request request = new Request.Builder().url(url)
.delete()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Get Library Items
* @param {Number} sectionId - the Id of the library to query
* @param {Number} [type] - item type
* @param {String} [filter] - the filter parameter
*/
public ResponseWithHeaders<String> getLibraryItems(Float sectionId, Float type, String filter) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("sections")
.addPathParameter(String.valueOf(sectionId))
.addPathParameter("all")
.addOptionalQueryParameter("type", type)
.addOptionalQueryParameter("filter", filter)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Refresh Library
* @param {Number} sectionId - the Id of the library to refresh
*/
public ResponseWithHeaders<String> refreshLibrary(Float sectionId) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("sections")
.addPathParameter(String.valueOf(sectionId))
.addPathParameter("refresh")
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Get Latest Library Items
* @param {Number} sectionId - the Id of the library to query
* @param {Number} type - item type
* @param {String} [filter] - the filter parameter
*/
public ResponseWithHeaders<String> getLatestLibraryItems(Float sectionId, Float type, String filter) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("sections")
.addPathParameter(String.valueOf(sectionId))
.addPathParameter("latest")
.addRequiredQueryParameter("type", type)
.addOptionalQueryParameter("filter", filter)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Get Common Library Items
* @param {Number} sectionId - the Id of the library to query
* @param {Number} type - item type
* @param {String} [filter] - the filter parameter
*/
public ResponseWithHeaders<String> getCommonLibraryItems(Float sectionId, Float type, String filter) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("sections")
.addPathParameter(String.valueOf(sectionId))
.addPathParameter("common")
.addRequiredQueryParameter("type", type)
.addOptionalQueryParameter("filter", filter)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Get Items Metadata
* @param {Number} ratingKey - the id of the library item to return the children of.
*/
public ResponseWithHeaders<String> getMetadata(Float ratingKey) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("metadata")
.addPathParameter(String.valueOf(ratingKey))
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Get Items Children
* @param {Number} ratingKey - the id of the library item to return the children of.
*/
public ResponseWithHeaders<String> getMetadataChildren(Float ratingKey) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("metadata")
.addPathParameter(String.valueOf(ratingKey))
.addPathParameter("children")
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Get On Deck
*/
public ResponseWithHeaders<47.one0.models.GetOnDeckResponse> getOnDeck() throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("library")
.addPathParameter("onDeck")
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
return new ResponseWithHeaders<47.one0.models.GetOnDeckResponse>(ModelConverter.convert(response, new com.fasterxml.jackson.core.type.TypeReference<47.one0.models.GetOnDeckResponse>() {}), response.headers());
}
}

View File

@@ -1,96 +0,0 @@
package 47.one0.services;
import java.util.Map;
import java.io.IOException;
import 47.one0.exceptions.ApiException;
import 47.one0.models.BaseModel;
import java.util.List;
import java.util.Objects;
import 47.one0.http.*;
import okhttp3.Headers;
import 47.one0.http.util.HttpUrl;
import 47.one0.http.util.HttpHeaders;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class LogService extends BaseService implements LogClient {
public LogService(OkHttpClient httpClient, String serverUrl) { super(httpClient, serverUrl); }
/**
* @summary Logging a single line message.
* @param {Number} level - An integer log level to write to the PMS log with.
0: Error
1: Warning
2: Info
3: Debug
4: Verbose
* @param {String} message - The text of the message to write to the log.
* @param {String} source - a string indicating the source of the message.
*/
public ResponseWithHeaders<String> logLine(Float level, String message, String source) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("log")
.addRequiredQueryParameter("level", level)
.addRequiredQueryParameter("message", message)
.addRequiredQueryParameter("source", source)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Logging a multi-line message
*/
public ResponseWithHeaders<String> logMultiLine() throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("log")
.build();
RequestBody requestBody = RequestBody.create(
Objects.requireNonNull(ModelConverter.modelToJson(new BaseModel() {})),
okhttp3.MediaType.parse("application/json; charset=utf-8")
);
Request request = new Request.Builder().url(url)
.post(requestBody)
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Enabling Papertrail
*/
public ResponseWithHeaders<String> enablePaperTrail() throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("log")
.addPathParameter("networked")
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

View File

@@ -1,96 +0,0 @@
package 47.one0.services;
import java.util.Map;
import java.io.IOException;
import 47.one0.exceptions.ApiException;
import 47.one0.models.BaseModel;
import java.util.List;
import java.util.Objects;
import 47.one0.http.*;
import okhttp3.Headers;
import 47.one0.http.util.HttpUrl;
import 47.one0.http.util.HttpHeaders;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class MediaService extends BaseService implements MediaClient {
public MediaService(OkHttpClient httpClient, String serverUrl) { super(httpClient, serverUrl); }
/**
* @summary Mark Media Played
* @param {Number} key - The media key to mark as played
*/
public ResponseWithHeaders<String> markPlayed(Float key) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter(":")
.addPathParameter("scrobble")
.addRequiredQueryParameter("key", key)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Mark Media Unplayed
* @param {Number} key - The media key to mark as Unplayed
*/
public ResponseWithHeaders<String> markUnplayed(Float key) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter(":")
.addPathParameter("unscrobble")
.addRequiredQueryParameter("key", key)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Update Media Play Progress
* @param {String} key - the media key
* @param {Number} time - The time, in milliseconds, used to set the media playback progress.
* @param {String} state - The playback state of the media item.
*/
public ResponseWithHeaders<String> updatePlayProgress(String key, Float time, String state) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter(":")
.addPathParameter("progress")
.addRequiredQueryParameter("key", key)
.addRequiredQueryParameter("time", time)
.addRequiredQueryParameter("state", state)
.build();
RequestBody requestBody = RequestBody.create(
Objects.requireNonNull(ModelConverter.modelToJson(new BaseModel() {})),
okhttp3.MediaType.parse("application/json; charset=utf-8")
);
Request request = new Request.Builder().url(url)
.post(requestBody)
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

View File

@@ -1,264 +0,0 @@
package 47.one0.services;
import java.util.Map;
import java.io.IOException;
import 47.one0.exceptions.ApiException;
import 47.one0.models.BaseModel;
import java.util.List;
import java.util.Objects;
import 47.one0.http.*;
import okhttp3.Headers;
import 47.one0.http.util.HttpUrl;
import 47.one0.http.util.HttpHeaders;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class PlaylistsService extends BaseService implements PlaylistsClient {
public PlaylistsService(OkHttpClient httpClient, String serverUrl) { super(httpClient, serverUrl); }
/**
* @summary Create a Playlist
* @param {String} title - name of the playlist
* @param {String} type - type of playlist to create
* @param {Number} smart - whether the playlist is smart or not
* @param {String} [uri] - the content URI for the playlist
* @param {Number} [playQueueID] - the play queue to copy to a playlist
*/
public ResponseWithHeaders<String> createPlaylist(String title, String type, Float smart, String uri, Float playQueueID) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("playlists")
.addRequiredQueryParameter("title", title)
.addRequiredQueryParameter("type", type)
.addRequiredQueryParameter("smart", smart)
.addOptionalQueryParameter("uri", uri)
.addOptionalQueryParameter("playQueueID", playQueueID)
.build();
RequestBody requestBody = RequestBody.create(
Objects.requireNonNull(ModelConverter.modelToJson(new BaseModel() {})),
okhttp3.MediaType.parse("application/json; charset=utf-8")
);
Request request = new Request.Builder().url(url)
.post(requestBody)
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Get All Playlists
* @param {String} [playlistType] - limit to a type of playlist.
* @param {Number} [smart] - type of playlists to return (default is all).
*/
public ResponseWithHeaders<String> getPlaylists(String playlistType, Float smart) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("playlists")
.addPathParameter("all")
.addOptionalQueryParameter("playlistType", playlistType)
.addOptionalQueryParameter("smart", smart)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Retrieve Playlist
* @param {Number} playlistID - the ID of the playlist
*/
public ResponseWithHeaders<String> getPlaylist(Float playlistID) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("playlists")
.addPathParameter(String.valueOf(playlistID))
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Update a Playlist
* @param {Number} playlistID - the ID of the playlist
*/
public ResponseWithHeaders<String> updatePlaylist(Float playlistID) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("playlists")
.addPathParameter(String.valueOf(playlistID))
.build();
RequestBody requestBody = RequestBody.create(
Objects.requireNonNull(ModelConverter.modelToJson(new BaseModel() {})),
okhttp3.MediaType.parse("application/json; charset=utf-8")
);
Request request = new Request.Builder().url(url)
.put(requestBody)
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Deletes a Playlist
* @param {Number} playlistID - the ID of the playlist
*/
public ResponseWithHeaders<String> deletePlaylist(Float playlistID) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("playlists")
.addPathParameter(String.valueOf(playlistID))
.build();
Request request = new Request.Builder().url(url)
.delete()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Retrieve Playlist Contents
* @param {Number} playlistID - the ID of the playlist
* @param {Number} type - the metadata type of the item to return
*/
public ResponseWithHeaders<String> getPlaylistContents(Float playlistID, Float type) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("playlists")
.addPathParameter(String.valueOf(playlistID))
.addPathParameter("items")
.addRequiredQueryParameter("type", type)
.build();
Request request = new Request.Builder().url(url)
.get()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Adding to a Playlist
* @param {Number} playlistID - the ID of the playlist
* @param {String} uri - the content URI for the playlist
* @param {Number} playQueueID - the play queue to add to a playlist
*/
public ResponseWithHeaders<String> addPlaylistContents(Float playlistID, String uri, Float playQueueID) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("playlists")
.addPathParameter(String.valueOf(playlistID))
.addPathParameter("items")
.addRequiredQueryParameter("uri", uri)
.addRequiredQueryParameter("playQueueID", playQueueID)
.build();
RequestBody requestBody = RequestBody.create(
Objects.requireNonNull(ModelConverter.modelToJson(new BaseModel() {})),
okhttp3.MediaType.parse("application/json; charset=utf-8")
);
Request request = new Request.Builder().url(url)
.put(requestBody)
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Delete Playlist Contents
* @param {Number} playlistID - the ID of the playlist
*/
public ResponseWithHeaders<String> clearPlaylistContents(Float playlistID) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("playlists")
.addPathParameter(String.valueOf(playlistID))
.addPathParameter("items")
.build();
Request request = new Request.Builder().url(url)
.delete()
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @summary Upload Playlist
* @param {String} path - absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server.
If the `path` argument is a directory, that path will be scanned for playlist files to be processed.
Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
* @param {Number} force - force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist.
The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
*/
public ResponseWithHeaders<String> uploadPlaylist(String path, Float force) throws ApiException
{
String url = HttpUrl.builder(this.serverUrl)
.addPathParameter("playlists")
.addPathParameter("upload")
.addRequiredQueryParameter("path", path)
.addRequiredQueryParameter("force", force)
.build();
RequestBody requestBody = RequestBody.create(
Objects.requireNonNull(ModelConverter.modelToJson(new BaseModel() {})),
okhttp3.MediaType.parse("application/json; charset=utf-8")
);
Request request = new Request.Builder().url(url)
.post(requestBody)
.build();
Response response = this.execute(request);
try {
return new ResponseWithHeaders<java.lang.String>(response.body().string(), response.headers());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

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