Compare commits

...

10 Commits

Author SHA1 Message Date
speakeasybot
14e54fa017 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.438.3 2024-11-14 00:22:09 +00:00
speakeasybot
61492e5dad ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.438.1 2024-11-12 00:21:43 +00:00
speakeasybot
f099c01940 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.406.0 2024-10-03 12:26:13 +00:00
speakeasybot
92be5b3a91 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.405.8 2024-10-02 11:11:07 +00:00
speakeasybot
a183f389bc ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.405.8 2024-10-02 10:46:38 +00:00
speakeasybot
4a443f6f2e ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.405.8 2024-10-02 09:49:57 +00:00
speakeasybot
b9b7cd1146 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.405.4 2024-09-30 17:36:49 +00:00
speakeasybot
81c55cb08b ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.405.4 2024-09-30 17:23:32 +00:00
speakeasybot
860991f2a0 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.404.5 2024-09-30 08:47:49 +00:00
Jason Landbridge
d25639db53 Added dotnet_version directly 2024-09-30 10:42:22 +02:00
188 changed files with 4090 additions and 2903 deletions

View File

@@ -24,6 +24,7 @@ jobs:
mode: direct mode: direct
set_version: ${{ github.event.inputs.set_version }} set_version: ${{ github.event.inputs.set_version }}
speakeasy_version: latest speakeasy_version: latest
dotnet_version: "8.x"
secrets: secrets:
github_access_token: ${{ secrets.GITHUB_TOKEN }} github_access_token: ${{ secrets.GITHUB_TOKEN }}
nuget_api_key: ${{ secrets.NUGET_API_KEY }} nuget_api_key: ${{ secrets.NUGET_API_KEY }}

File diff suppressed because one or more lines are too long

View File

@@ -11,15 +11,18 @@ generation:
requestResponseComponentNamesFeb2024: true requestResponseComponentNamesFeb2024: true
auth: auth:
oAuth2ClientCredentialsEnabled: true oAuth2ClientCredentialsEnabled: true
oAuth2PasswordEnabled: false
csharp: csharp:
version: 0.8.4 version: 0.11.1
additionalDependencies: [] additionalDependencies: []
author: LukeHagar author: LukeHagar
clientServerStatusCodesAsErrors: true clientServerStatusCodesAsErrors: true
defaultErrorName: SDKException
disableNamespacePascalCasingApr2024: true disableNamespacePascalCasingApr2024: true
dotnetVersion: net8.0 dotnetVersion: net8.0
enableSourceLink: true enableSourceLink: true
flattenGlobalSecurity: true flattenGlobalSecurity: true
flatteningOrder: ""
imports: imports:
option: openapi option: openapi
paths: paths:
@@ -31,6 +34,7 @@ csharp:
includeDebugSymbols: true includeDebugSymbols: true
inputModelSuffix: input inputModelSuffix: input
maxMethodParams: 4 maxMethodParams: 4
methodArguments: infer-optional-args
outputModelSuffix: output outputModelSuffix: output
packageName: LukeHagar.PlexAPI.SDK packageName: LukeHagar.PlexAPI.SDK
packageTags: Plex Media Server SDK packageTags: Plex Media Server SDK

View File

@@ -1,4 +1,4 @@
speakeasyVersion: 1.404.5 speakeasyVersion: 1.438.3
sources: sources:
my-source: my-source:
sourceNamespace: my-source sourceNamespace: my-source
@@ -16,8 +16,8 @@ sources:
- main - main
plexapi: plexapi:
sourceNamespace: plexapi sourceNamespace: plexapi
sourceRevisionDigest: sha256:a9bd67eaa35b8311162ae769209f725cc5da16e57976b4928c54594c02cd451c sourceRevisionDigest: sha256:37c6bfb15f4154eb89b112465107f20757411f22bd1cc7d0a04335df7127fcb4
sourceBlobDigest: sha256:43ddffba137c37d2f64f8db185179a273bcc5ca7242594c932da99d1eb7f3e98 sourceBlobDigest: sha256:290473ebc909cada80ff428c685b897f4621cf121397e1417355e06d334e7206
tags: tags:
- latest - latest
- main - main
@@ -25,10 +25,10 @@ targets:
plexcsharp: plexcsharp:
source: plexapi source: plexapi
sourceNamespace: plexapi sourceNamespace: plexapi
sourceRevisionDigest: sha256:a9bd67eaa35b8311162ae769209f725cc5da16e57976b4928c54594c02cd451c sourceRevisionDigest: sha256:37c6bfb15f4154eb89b112465107f20757411f22bd1cc7d0a04335df7127fcb4
sourceBlobDigest: sha256:43ddffba137c37d2f64f8db185179a273bcc5ca7242594c932da99d1eb7f3e98 sourceBlobDigest: sha256:290473ebc909cada80ff428c685b897f4621cf121397e1417355e06d334e7206
codeSamplesNamespace: code-samples-csharp-plexcsharp codeSamplesNamespace: code-samples-csharp-plexcsharp
codeSamplesRevisionDigest: sha256:7ded6433193c6ba017e3716ef54439dc16175b652f8c048dbaef244a52cf1af2 codeSamplesRevisionDigest: sha256:edc0ca575be34ae34b4a81817b5c5ed0dc783b63aab0763b04993d20abf47bbb
workflow: workflow:
workflowVersion: 1.0.0 workflowVersion: 1.0.0
speakeasyVersion: latest speakeasyVersion: latest

View File

@@ -74,10 +74,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;

View File

@@ -95,10 +95,10 @@ namespace LukeHagar.PlexAPI.SDK
}; };
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -403,8 +403,8 @@ namespace LukeHagar.PlexAPI.SDK
request.ClientID ??= SDKConfiguration.ClientID; request.ClientID ??= SDKConfiguration.ClientID;
request.ClientName ??= SDKConfiguration.ClientName; request.ClientName ??= SDKConfiguration.ClientName;
request.ClientVersion ??= SDKConfiguration.ClientVersion; request.ClientVersion ??= SDKConfiguration.ClientVersion;
request.ClientPlatform ??= SDKConfiguration.ClientPlatform; request.Platform ??= SDKConfiguration.Platform;
request.DeviceName ??= SDKConfiguration.DeviceName; request.DeviceNickname ??= SDKConfiguration.DeviceNickname;
string baseUrl = Utilities.TemplateUrl(PostUsersSignInDataServerList[0], new Dictionary<string, string>(){ string baseUrl = Utilities.TemplateUrl(PostUsersSignInDataServerList[0], new Dictionary<string, string>(){
}); });
@@ -412,10 +412,12 @@ namespace LukeHagar.PlexAPI.SDK
{ {
baseUrl = serverUrl; baseUrl = serverUrl;
} }
var urlString = URLBuilder.Build(baseUrl, "/users/signin", request);
var urlString = baseUrl + "/users/signin";
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "form", false, true); var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "form", false, true);
if (serializedBody != null) if (serializedBody != null)

View File

@@ -101,10 +101,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;

View File

@@ -73,10 +73,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;

View File

@@ -189,6 +189,16 @@ namespace LukeHagar.PlexAPI.SDK
/// </summary> /// </summary>
Task<GetSearchLibraryResponse> GetSearchLibraryAsync(int sectionKey, GetSearchLibraryQueryParamType type); Task<GetSearchLibraryResponse> GetSearchLibraryAsync(int sectionKey, GetSearchLibraryQueryParamType type);
/// <summary>
/// Search All Libraries
///
/// <remarks>
/// Search the provided query across all library sections, or a single section, and return matches as hubs, split up by type.<br/>
///
/// </remarks>
/// </summary>
Task<GetSearchAllLibrariesResponse> GetSearchAllLibrariesAsync(GetSearchAllLibrariesRequest request);
/// <summary> /// <summary>
/// Get Metadata by RatingKey /// Get Metadata by RatingKey
/// ///
@@ -241,10 +251,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -1026,6 +1036,109 @@ namespace LukeHagar.PlexAPI.SDK
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<GetSearchAllLibrariesResponse> GetSearchAllLibrariesAsync(GetSearchAllLibrariesRequest request)
{
if (request == null)
{
request = new GetSearchAllLibrariesRequest();
}
request.ClientID ??= SDKConfiguration.ClientID;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/search", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
if (_securitySource != null)
{
httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest);
}
var hookCtx = new HookContext("get-search-all-libraries", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
HttpResponseMessage httpResponse;
try
{
httpResponse = await _client.SendAsync(httpRequest);
int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
{
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
if (_httpResponse != null)
{
httpResponse = _httpResponse;
}
}
}
catch (Exception error)
{
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
if (_httpResponse != null)
{
httpResponse = _httpResponse;
}
else
{
throw;
}
}
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
int responseStatusCode = (int)httpResponse.StatusCode;
if(responseStatusCode == 200)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var obj = ResponseBodyDeserializer.Deserialize<GetSearchAllLibrariesResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
var response = new GetSearchAllLibrariesResponse()
{
StatusCode = responseStatusCode,
ContentType = contentType,
RawResponse = httpResponse
};
response.Object = obj;
return response;
}
throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else if(responseStatusCode == 400)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var obj = ResponseBodyDeserializer.Deserialize<GetSearchAllLibrariesBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
obj!.RawResponse = httpResponse;
throw obj!;
}
throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else if(responseStatusCode == 401)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var obj = ResponseBodyDeserializer.Deserialize<GetSearchAllLibrariesUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
obj!.RawResponse = httpResponse;
throw obj!;
}
throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{
throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
public async Task<GetMetaDataByRatingKeyResponse> GetMetaDataByRatingKeyAsync(long ratingKey) public async Task<GetMetaDataByRatingKeyResponse> GetMetaDataByRatingKeyAsync(long ratingKey)
{ {
var request = new GetMetaDataByRatingKeyRequest() var request = new GetMetaDataByRatingKeyRequest()

View File

@@ -94,10 +94,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;

View File

@@ -3,37 +3,37 @@
<PropertyGroup> <PropertyGroup>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<PackageId>LukeHagar.PlexAPI.SDK</PackageId> <PackageId>LukeHagar.PlexAPI.SDK</PackageId>
<Version>0.8.4</Version> <Version>0.11.1</Version>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<Authors>LukeHagar</Authors> <Authors>LukeHagar</Authors>
<Copyright>Copyright (c) LukeHagar 2024</Copyright> <Copyright>Copyright (c) LukeHagar 2024</Copyright>
<RepositoryUrl>https://github.com/LukeHagar/plexcsharp.git</RepositoryUrl> <RepositoryUrl>https://github.com/LukeHagar/plexcsharp.git</RepositoryUrl>
<RepositoryType>git</RepositoryType> <RepositoryType>git</RepositoryType>
<PackageTags>Plex Media Server SDK</PackageTags> <PackageTags>Plex Media Server SDK</PackageTags>
<Description># Plex Media Server OpenAPI Specification <Description># Plex Media Server OpenAPI Specification<br/>
<br/>
An Open Source OpenAPI Specification for Plex Media Server An Open Source OpenAPI Specification for Plex Media Server<br/>
<br/>
Automation and SDKs provided by [Speakeasy](https://speakeasyapi.dev/) Automation and SDKs provided by <a href="https://speakeasyapi.dev/">Speakeasy</a><br/>
<br/>
## Documentation ## Documentation<br/>
<br/>
[API Documentation](https://plexapi.dev) <a href="https://plexapi.dev">API Documentation</a><br/>
<br/>
## SDKs ## SDKs<br/>
<br/>
The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the [main specification Repository](https://github.com/LukeHagar/plex-api-spec). The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the <a href="https://github.com/LukeHagar/plex-api-spec">main specification Repository</a>.<br/>
<br/>
| Language | Repository | Releases | Other | | Language | Repository | Releases | Other |<br/>
| --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | | --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- |<br/>
| Python | [GitHub](https://github.com/LukeHagar/plexpy) | [PyPI](https://pypi.org/project/plex-api-client/) | - | | Python | <a href="https://github.com/LukeHagar/plexpy">GitHub</a> | <a href="https://pypi.org/project/plex-api-client/">PyPI</a> | - |<br/>
| JavaScript/TypeScript | [GitHub](https://github.com/LukeHagar/plexjs) | [NPM](https://www.npmjs.com/package/@lukehagar/plexjs) \ [JSR](https://jsr.io/@lukehagar/plexjs) | - | | JavaScript/TypeScript | <a href="https://github.com/LukeHagar/plexjs">GitHub</a> | <a href="https://www.npmjs.com/package/@lukehagar/plexjs">NPM</a> \ <a href="https://jsr.io/@lukehagar/plexjs">JSR</a> | - |<br/>
| Go | [GitHub](https://github.com/LukeHagar/plexgo) | [Releases](https://github.com/LukeHagar/plexgo/releases) | [GoDoc](https://pkg.go.dev/github.com/LukeHagar/plexgo) | | Go | <a href="https://github.com/LukeHagar/plexgo">GitHub</a> | <a href="https://github.com/LukeHagar/plexgo/releases">Releases</a> | <a href="https://pkg.go.dev/github.com/LukeHagar/plexgo">GoDoc</a> |<br/>
| Ruby | [GitHub](https://github.com/LukeHagar/plexruby) | [Releases](https://github.com/LukeHagar/plexruby/releases) | - | | Ruby | <a href="https://github.com/LukeHagar/plexruby">GitHub</a> | <a href="https://github.com/LukeHagar/plexruby/releases">Releases</a> | - |<br/>
| Swift | [GitHub](https://github.com/LukeHagar/plexswift) | [Releases](https://github.com/LukeHagar/plexswift/releases) | - | | Swift | <a href="https://github.com/LukeHagar/plexswift">GitHub</a> | <a href="https://github.com/LukeHagar/plexswift/releases">Releases</a> | - |<br/>
| PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/releases) | - | | PHP | <a href="https://github.com/LukeHagar/plexphp">GitHub</a> | <a href="https://github.com/LukeHagar/plexphp/releases">Releases</a> | - |<br/>
| Java | [GitHub](https://github.com/LukeHagar/plexjava) | [Releases](https://github.com/LukeHagar/plexjava/releases) | - | | Java | <a href="https://github.com/LukeHagar/plexjava">GitHub</a> | <a href="https://github.com/LukeHagar/plexjava/releases">Releases</a> | - |<br/>
| C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | - | C# | <a href="https://github.com/LukeHagar/plexcsharp">GitHub</a> | <a href="https://github.com/LukeHagar/plexcsharp/releases">Releases</a> | -<br/>
</Description> </Description>
</PropertyGroup> </PropertyGroup>

View File

@@ -90,10 +90,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -391,6 +391,7 @@ namespace LukeHagar.PlexAPI.SDK
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
if (_securitySource != null) if (_securitySource != null)
{ {
@@ -486,6 +487,7 @@ namespace LukeHagar.PlexAPI.SDK
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
if (_securitySource != null) if (_securitySource != null)
{ {

View File

@@ -0,0 +1,34 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Errors
{
using LukeHagar.PlexAPI.SDK.Models.Errors;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Net.Http;
using System;
/// <summary>
/// Bad Request - A parameter was not specified, or was specified incorrectly.
/// </summary>
public class GetSearchAllLibrariesBadRequest : Exception
{
[JsonProperty("errors")]
public List<GetSearchAllLibrariesErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
}

View File

@@ -0,0 +1,27 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Errors
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesErrors
{
[JsonProperty("code")]
public int? Code { get; set; }
[JsonProperty("message")]
public string? Message { get; set; }
[JsonProperty("status")]
public int? Status { get; set; }
}
}

View File

@@ -0,0 +1,27 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Errors
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesLibraryErrors
{
[JsonProperty("code")]
public int? Code { get; set; }
[JsonProperty("message")]
public string? Message { get; set; }
[JsonProperty("status")]
public int? Status { get; set; }
}
}

View File

@@ -0,0 +1,34 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Errors
{
using LukeHagar.PlexAPI.SDK.Models.Errors;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Net.Http;
using System;
/// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary>
public class GetSearchAllLibrariesUnauthorized : Exception
{
[JsonProperty("errors")]
public List<GetSearchAllLibrariesLibraryErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
}

View File

@@ -1,243 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
public enum Features
{
[JsonProperty("Android - Dolby Vision")]
AndroidDolbyVision,
[JsonProperty("Android - PiP")]
AndroidPiP,
[JsonProperty("CU Sunset")]
CUSunset,
[JsonProperty("HRK_enable_EUR")]
HRKEnableEUR,
[JsonProperty("TREBLE-show-features")]
TREBLEShowFeatures,
[JsonProperty("ad-countdown-timer")]
AdCountdownTimer,
[JsonProperty("adaptive_bitrate")]
AdaptiveBitrate,
[JsonProperty("album-types")]
AlbumTypes,
[JsonProperty("allow_dvr")]
AllowDvr,
[JsonProperty("amazon-loop-debug")]
AmazonLoopDebug,
[JsonProperty("avod-ad-analysis")]
AvodAdAnalysis,
[JsonProperty("avod-new-media")]
AvodNewMedia,
[JsonProperty("blacklist_get_signin")]
BlacklistGetSignin,
[JsonProperty("boost-voices")]
BoostVoices,
[JsonProperty("camera_upload")]
CameraUpload,
[JsonProperty("client-radio-stations")]
ClientRadioStations,
[JsonProperty("cloudflare-turnstile-required")]
CloudflareTurnstileRequired,
[JsonProperty("cloudsync")]
Cloudsync,
[JsonProperty("collections")]
Collections,
[JsonProperty("comments_and_replies_push_notifications")]
CommentsAndRepliesPushNotifications,
[JsonProperty("community_access_plex_tv")]
CommunityAccessPlexTv,
[JsonProperty("companions_sonos")]
CompanionsSonos,
[JsonProperty("content_filter")]
ContentFilter,
[JsonProperty("custom-home-removal")]
CustomHomeRemoval,
[JsonProperty("disable_home_user_friendships")]
DisableHomeUserFriendships,
[JsonProperty("disable_sharing_friendships")]
DisableSharingFriendships,
[JsonProperty("downloads-gating")]
DownloadsGating,
[JsonProperty("drm_support")]
DrmSupport,
[JsonProperty("dvr")]
Dvr,
[JsonProperty("dvr-block-unsupported-countries")]
DvrBlockUnsupportedCountries,
[JsonProperty("epg-recent-channels")]
EpgRecentChannels,
[JsonProperty("exclude restrictions")]
ExcludeRestrictions,
[JsonProperty("federated-auth")]
FederatedAuth,
[JsonProperty("friend_request_push_notifications")]
FriendRequestPushNotifications,
[JsonProperty("grandfather-sync")]
GrandfatherSync,
[JsonProperty("guided-upgrade")]
GuidedUpgrade,
[JsonProperty("hardware_transcoding")]
HardwareTranscoding,
[JsonProperty("home")]
Home,
[JsonProperty("hwtranscode")]
Hwtranscode,
[JsonProperty("imagga-v2")]
ImaggaV2,
[JsonProperty("increase-password-complexity")]
IncreasePasswordComplexity,
[JsonProperty("ios14-privacy-banner")]
Ios14PrivacyBanner,
[JsonProperty("iterable-notification-tokens")]
IterableNotificationTokens,
[JsonProperty("item_clusters")]
ItemClusters,
[JsonProperty("keep-payment-method")]
KeepPaymentMethod,
[JsonProperty("kevin-bacon")]
KevinBacon,
[JsonProperty("korea-consent")]
KoreaConsent,
[JsonProperty("le_isrg_root_x1")]
LeIsrgRootX1,
[JsonProperty("lets_encrypt")]
LetsEncrypt,
[JsonProperty("lightning-dvr-pivot")]
LightningDvrPivot,
[JsonProperty("live-tv-support-incomplete-segments")]
LiveTvSupportIncompleteSegments,
[JsonProperty("livetv")]
Livetv,
[JsonProperty("lyrics")]
Lyrics,
[JsonProperty("metadata_search")]
MetadataSearch,
[JsonProperty("music-analysis")]
MusicAnalysis,
[JsonProperty("music_videos")]
MusicVideos,
[JsonProperty("new_plex_pass_prices")]
NewPlexPassPrices,
[JsonProperty("news-provider-sunset-modal")]
NewsProviderSunsetModal,
[JsonProperty("nominatim")]
Nominatim,
[JsonProperty("pass")]
Pass,
[JsonProperty("photos-favorites")]
PhotosFavorites,
[JsonProperty("photos-metadata-edition")]
PhotosMetadataEdition,
[JsonProperty("photosV6-edit")]
PhotosV6Edit,
[JsonProperty("photosV6-tv-albums")]
PhotosV6TvAlbums,
[JsonProperty("pms_health")]
PmsHealth,
[JsonProperty("premium-dashboard")]
PremiumDashboard,
[JsonProperty("premium_music_metadata")]
PremiumMusicMetadata,
[JsonProperty("radio")]
Radio,
[JsonProperty("rate-limit-client-token")]
RateLimitClientToken,
[JsonProperty("scrobbling-service-plex-tv")]
ScrobblingServicePlexTv,
[JsonProperty("session_bandwidth_restrictions")]
SessionBandwidthRestrictions,
[JsonProperty("session_kick")]
SessionKick,
[JsonProperty("shared_server_notification")]
SharedServerNotification,
[JsonProperty("shared_source_notification")]
SharedSourceNotification,
[JsonProperty("signin_notification")]
SigninNotification,
[JsonProperty("signin_with_apple")]
SigninWithApple,
[JsonProperty("silence-removal")]
SilenceRemoval,
[JsonProperty("sleep-timer")]
SleepTimer,
[JsonProperty("spring_serve_ad_provider")]
SpringServeAdProvider,
[JsonProperty("sync")]
Sync,
[JsonProperty("sweet-fades")]
SweetFades,
[JsonProperty("transcoder_cache")]
TranscoderCache,
[JsonProperty("trailers")]
Trailers,
[JsonProperty("tuner-sharing")]
TunerSharing,
[JsonProperty("two-factor-authentication")]
TwoFactorAuthentication,
[JsonProperty("unsupportedtuners")]
Unsupportedtuners,
[JsonProperty("upgrade-3ds2")]
Upgrade3ds2,
[JsonProperty("visualizers")]
Visualizers,
[JsonProperty("vod-schema")]
VodSchema,
[JsonProperty("vod_cloudflare")]
VodCloudflare,
[JsonProperty("volume-leveling")]
VolumeLeveling,
[JsonProperty("watch-together-invite")]
WatchTogetherInvite,
[JsonProperty("watchlist-rss")]
WatchlistRss,
[JsonProperty("web_server_dashboard")]
WebServerDashboard,
[JsonProperty("webhooks")]
Webhooks,
}
public static class FeaturesExtension
{
public static string Value(this Features value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static Features ToEnum(this string value)
{
foreach(var field in typeof(Features).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is Features)
{
return (Features)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum Features");
}
}
}

View File

@@ -90,6 +90,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public int Hidden { get; set; } = default!; public int Hidden { get; set; } = default!;
[JsonProperty("Location")] [JsonProperty("Location")]
public List<Location> Location { get; set; } = default!; public List<GetAllLibrariesLocation> Location { get; set; } = default!;
} }
} }

View File

@@ -0,0 +1,24 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetAllLibrariesLocation
{
[JsonProperty("id")]
public int Id { get; set; } = default!;
[JsonProperty("path")]
public string Path { get; set; } = default!;
}
}

View File

@@ -22,7 +22,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=Timespan")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=timespan")]
public long? Timespan { get; set; } public long? Timespan { get; set; }
} }
} }

View File

@@ -33,9 +33,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public long Upscale { get; set; } = default!; public long Upscale { get; set; } = default!;
/// <summary> /// <summary>
/// Plex Authentication Token /// An authentication token, obtained from plex.tv
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Token")] [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Token")]
public string XPlexToken { get; set; } = default!; public string XPlexToken { get; set; } = default!;
} }
} }

View File

@@ -0,0 +1,21 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetLibraryItemsLocation
{
[JsonProperty("path")]
public string? Path { get; set; }
}
}

View File

@@ -21,43 +21,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public int Id { get; set; } = default!; public int Id { get; set; } = default!;
[JsonProperty("duration")] [JsonProperty("duration")]
public int Duration { get; set; } = default!; public int? Duration { get; set; }
[JsonProperty("bitrate")] [JsonProperty("bitrate")]
public int Bitrate { get; set; } = default!; public int? Bitrate { get; set; }
[JsonProperty("width")] [JsonProperty("width")]
public int Width { get; set; } = default!; public int? Width { get; set; }
[JsonProperty("height")] [JsonProperty("height")]
public int Height { get; set; } = default!; public int? Height { get; set; }
[JsonProperty("aspectRatio")] [JsonProperty("aspectRatio")]
public double AspectRatio { get; set; } = default!; public double? AspectRatio { get; set; }
[JsonProperty("audioProfile")] [JsonProperty("audioProfile")]
public string? AudioProfile { get; set; } public string? AudioProfile { get; set; }
[JsonProperty("audioChannels")] [JsonProperty("audioChannels")]
public int AudioChannels { get; set; } = default!; public int? AudioChannels { get; set; }
[JsonProperty("audioCodec")] [JsonProperty("audioCodec")]
public string AudioCodec { get; set; } = default!; public string? AudioCodec { get; set; }
[JsonProperty("videoCodec")] [JsonProperty("videoCodec")]
public string VideoCodec { get; set; } = default!; public string? VideoCodec { get; set; }
[JsonProperty("videoResolution")] [JsonProperty("videoResolution")]
public string VideoResolution { get; set; } = default!; public string? VideoResolution { get; set; }
[JsonProperty("container")] [JsonProperty("container")]
public string Container { get; set; } = default!; public string Container { get; set; } = default!;
[JsonProperty("videoFrameRate")] [JsonProperty("videoFrameRate")]
public string VideoFrameRate { get; set; } = default!; public string? VideoFrameRate { get; set; }
[JsonProperty("videoProfile")] [JsonProperty("videoProfile")]
public string VideoProfile { get; set; } = default!; public string? VideoProfile { get; set; }
[JsonProperty("hasVoiceActivity")] [JsonProperty("hasVoiceActivity")]
public bool? HasVoiceActivity { get; set; } public bool? HasVoiceActivity { get; set; }

View File

@@ -88,7 +88,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public bool? MixedParents { get; set; } public bool? MixedParents { get; set; }
[JsonProperty("Metadata")] [JsonProperty("Metadata")]
public List<GetLibraryItemsMetadata> Metadata { get; set; } = default!; public List<GetLibraryItemsMetadata>? Metadata { get; set; }
/// <summary> /// <summary>
/// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.<br/> /// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.<br/>

View File

@@ -199,6 +199,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
[JsonProperty("Role")] [JsonProperty("Role")]
public List<GetLibraryItemsRole>? Role { get; set; } public List<GetLibraryItemsRole>? Role { get; set; }
[JsonProperty("Location")]
public List<GetLibraryItemsLocation>? Location { get; set; }
/// <summary> /// <summary>
/// The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.<br/> /// The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.<br/>
/// ///

View File

@@ -24,7 +24,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string Key { get; set; } = default!; public string Key { get; set; } = default!;
[JsonProperty("duration")] [JsonProperty("duration")]
public int Duration { get; set; } = default!; public int? Duration { get; set; }
[JsonProperty("file")] [JsonProperty("file")]
public string File { get; set; } = default!; public string File { get; set; } = default!;
@@ -52,7 +52,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public bool? OptimizedForStreaming { get; set; } public bool? OptimizedForStreaming { get; set; }
[JsonProperty("videoProfile")] [JsonProperty("videoProfile")]
public string VideoProfile { get; set; } = default!; public string? VideoProfile { get; set; }
[JsonProperty("indexes")] [JsonProperty("indexes")]
public string? Indexes { get; set; } public string? Indexes { get; set; }

View File

@@ -29,6 +29,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
TvShow = 2, TvShow = 2,
Season = 3, Season = 3,
Episode = 4, Episode = 4,
Audio = 8,
} }
} }

View File

@@ -15,6 +15,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public class GetLibraryItemsRequest public class GetLibraryItemsRequest
{ {
/// <summary>
/// A key representing a specific tag within the section.
/// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=tag")]
public Tag Tag { get; set; } = default!;
/// <summary> /// <summary>
/// The unique key of the Plex library. <br/> /// The unique key of the Plex library. <br/>
/// ///
@@ -26,12 +32,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")] [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")]
public int SectionKey { get; set; } = default!; public int SectionKey { get; set; } = default!;
/// <summary>
/// A key representing a specific tag within the section.
/// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=tag")]
public Tag Tag { get; set; } = default!;
/// <summary> /// <summary>
/// Adds the Guids object to the response<br/> /// Adds the Guids object to the response<br/>
/// ///

View File

@@ -15,9 +15,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
{ {
/// <summary> /// <summary>
/// Plex Authentication Token /// An authentication token, obtained from plex.tv
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Token")] [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Token")]
public string XPlexToken { get; set; } = default!; public string XPlexToken { get; set; } = default!;
} }
} }

View File

@@ -27,27 +27,33 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public bool? Strong { get; set; } = false; public bool? Strong { get; set; } = false;
/// <summary> /// <summary>
/// The unique identifier for the client application<br/> /// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
///
/// <remarks>
/// This is used to track the client application and its usage<br/>
/// (UUID, serial number, or other number unique per device)<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Client-Identifier")] [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")]
public string? ClientID { get; set; } public string? ClientID { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Product")] /// <summary>
/// The name of the client application. (Plex Web, Plex Media Server, etc.)
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")]
public string? ClientName { get; set; } public string? ClientName { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Device")] /// <summary>
public string? DeviceName { get; set; } /// A relatively friendly name for the client device
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")]
public string? DeviceNickname { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Version")] /// <summary>
/// The version of the client application.
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")]
public string? ClientVersion { get; set; } public string? ClientVersion { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Platform")] /// <summary>
public string? ClientPlatform { get; set; } /// The platform of the client application.
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")]
public string? Platform { get; set; }
} }
} }

View File

@@ -29,6 +29,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
TvShow = 2, TvShow = 2,
Season = 3, Season = 3,
Episode = 4, Episode = 4,
Audio = 8,
} }
} }

View File

@@ -199,6 +199,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
[JsonProperty("Role")] [JsonProperty("Role")]
public List<Role>? Role { get; set; } public List<Role>? Role { get; set; }
[JsonProperty("Location")]
public List<Location>? Location { get; set; }
/// <summary> /// <summary>
/// The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.<br/> /// The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.<br/>
/// ///

View File

@@ -22,7 +22,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=Timespan")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=timespan")]
public long? Timespan { get; set; } public long? Timespan { get; set; }
} }
} }

View File

@@ -0,0 +1,21 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesCollection
{
[JsonProperty("tag")]
public string? Tag { get; set; }
}
}

View File

@@ -0,0 +1,21 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesCountry
{
[JsonProperty("tag")]
public string? Tag { get; set; }
}
}

View File

@@ -0,0 +1,21 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesDirector
{
[JsonProperty("tag")]
public string? Tag { get; set; }
}
}

View File

@@ -0,0 +1,57 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
public enum GetSearchAllLibrariesFlattenSeasons
{
[JsonProperty("0")]
False,
[JsonProperty("1")]
True,
}
public static class GetSearchAllLibrariesFlattenSeasonsExtension
{
public static string Value(this GetSearchAllLibrariesFlattenSeasons value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static GetSearchAllLibrariesFlattenSeasons ToEnum(this string value)
{
foreach(var field in typeof(GetSearchAllLibrariesFlattenSeasons).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is GetSearchAllLibrariesFlattenSeasons)
{
return (GetSearchAllLibrariesFlattenSeasons)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum GetSearchAllLibrariesFlattenSeasons");
}
}
}

View File

@@ -0,0 +1,21 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesGenre
{
[JsonProperty("tag")]
public string? Tag { get; set; }
}
}

View File

@@ -0,0 +1,57 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
public enum GetSearchAllLibrariesHasThumbnail
{
[JsonProperty("0")]
False,
[JsonProperty("1")]
True,
}
public static class GetSearchAllLibrariesHasThumbnailExtension
{
public static string Value(this GetSearchAllLibrariesHasThumbnail value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static GetSearchAllLibrariesHasThumbnail ToEnum(this string value)
{
foreach(var field in typeof(GetSearchAllLibrariesHasThumbnail).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is GetSearchAllLibrariesHasThumbnail)
{
return (GetSearchAllLibrariesHasThumbnail)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum GetSearchAllLibrariesHasThumbnail");
}
}
}

View File

@@ -0,0 +1,28 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesImage
{
[JsonProperty("alt")]
public string Alt { get; set; } = default!;
[JsonProperty("type")]
public GetSearchAllLibrariesLibraryType Type { get; set; } = default!;
[JsonProperty("url")]
public string Url { get; set; } = default!;
}
}

View File

@@ -0,0 +1,61 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
public enum GetSearchAllLibrariesLibraryType
{
[JsonProperty("coverPoster")]
CoverPoster,
[JsonProperty("background")]
Background,
[JsonProperty("snapshot")]
Snapshot,
[JsonProperty("clearLogo")]
ClearLogo,
}
public static class GetSearchAllLibrariesLibraryTypeExtension
{
public static string Value(this GetSearchAllLibrariesLibraryType value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static GetSearchAllLibrariesLibraryType ToEnum(this string value)
{
foreach(var field in typeof(GetSearchAllLibrariesLibraryType).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is GetSearchAllLibrariesLibraryType)
{
return (GetSearchAllLibrariesLibraryType)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum GetSearchAllLibrariesLibraryType");
}
}
}

View File

@@ -0,0 +1,21 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesLocation
{
[JsonProperty("path")]
public string? Path { get; set; }
}
}

View File

@@ -0,0 +1,74 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System.Collections.Generic;
public class GetSearchAllLibrariesMedia
{
[JsonProperty("id")]
public int Id { get; set; } = default!;
[JsonProperty("duration")]
public int? Duration { get; set; }
[JsonProperty("bitrate")]
public int? Bitrate { get; set; }
[JsonProperty("width")]
public int? Width { get; set; }
[JsonProperty("height")]
public int? Height { get; set; }
[JsonProperty("aspectRatio")]
public double? AspectRatio { get; set; }
[JsonProperty("audioProfile")]
public string? AudioProfile { get; set; }
[JsonProperty("audioChannels")]
public int? AudioChannels { get; set; }
[JsonProperty("audioCodec")]
public string? AudioCodec { get; set; }
[JsonProperty("videoCodec")]
public string? VideoCodec { get; set; }
[JsonProperty("videoResolution")]
public string? VideoResolution { get; set; }
[JsonProperty("container")]
public string Container { get; set; } = default!;
[JsonProperty("videoFrameRate")]
public string? VideoFrameRate { get; set; }
[JsonProperty("videoProfile")]
public string? VideoProfile { get; set; }
[JsonProperty("hasVoiceActivity")]
public bool? HasVoiceActivity { get; set; }
[JsonProperty("optimizedForStreaming")]
public GetSearchAllLibrariesOptimizedForStreaming? OptimizedForStreaming { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetSearchAllLibrariesOptimizedForStreaming.Disable;
[JsonProperty("has64bitOffsets")]
public bool? Has64bitOffsets { get; set; }
[JsonProperty("Part")]
public List<GetSearchAllLibrariesPart> Part { get; set; } = default!;
}
}

View File

@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System.Collections.Generic;
public class GetSearchAllLibrariesMediaContainer
{
[JsonProperty("size")]
public double Size { get; set; } = default!;
[JsonProperty("SearchResult")]
public List<SearchResult> SearchResult { get; set; } = default!;
}
}

View File

@@ -0,0 +1,29 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesMediaGuid
{
/// <summary>
/// Can be one of the following formats:<br/>
///
/// <remarks>
/// imdb://tt13015952, tmdb://2434012, tvdb://7945991<br/>
///
/// </remarks>
/// </summary>
[JsonProperty("id")]
public string Id { get; set; } = default!;
}
}

View File

@@ -0,0 +1,36 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesMetaDataRating
{
/// <summary>
/// A URI or path to the rating image.
/// </summary>
[JsonProperty("image")]
public string Image { get; set; } = default!;
/// <summary>
/// The value of the rating.
/// </summary>
[JsonProperty("value")]
public float Value { get; set; } = default!;
/// <summary>
/// The type of rating (e.g., audience, critic).
/// </summary>
[JsonProperty("type")]
public string Type { get; set; } = default!;
}
}

View File

@@ -0,0 +1,297 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using NodaTime;
using System.Collections.Generic;
public class GetSearchAllLibrariesMetadata
{
/// <summary>
/// The rating key (Media ID) of this media item.<br/>
///
/// <remarks>
/// Note: This is always an integer, but is represented as a string in the API.<br/>
///
/// </remarks>
/// </summary>
[JsonProperty("ratingKey")]
public string RatingKey { get; set; } = default!;
[JsonProperty("key")]
public string Key { get; set; } = default!;
[JsonProperty("guid")]
public string Guid { get; set; } = default!;
[JsonProperty("studio")]
public string? Studio { get; set; }
[JsonProperty("skipChildren")]
public bool? SkipChildren { get; set; }
[JsonProperty("librarySectionID")]
public long? LibrarySectionID { get; set; }
[JsonProperty("librarySectionTitle")]
public string? LibrarySectionTitle { get; set; }
[JsonProperty("librarySectionKey")]
public string? LibrarySectionKey { get; set; }
/// <summary>
/// The type of media content<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[JsonProperty("type")]
public GetSearchAllLibrariesType Type { get; set; } = default!;
[JsonProperty("title")]
public string Title { get; set; } = default!;
[JsonProperty("slug")]
public string? Slug { get; set; }
[JsonProperty("contentRating")]
public string? ContentRating { get; set; }
[JsonProperty("summary")]
public string Summary { get; set; } = default!;
[JsonProperty("rating")]
public double? Rating { get; set; }
[JsonProperty("audienceRating")]
public double? AudienceRating { get; set; }
[JsonProperty("year")]
public int? Year { get; set; }
[JsonProperty("seasonCount")]
public int? SeasonCount { get; set; }
[JsonProperty("tagline")]
public string? Tagline { get; set; }
[JsonProperty("flattenSeasons")]
public GetSearchAllLibrariesFlattenSeasons? FlattenSeasons { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetSearchAllLibrariesFlattenSeasons.False;
/// <summary>
/// Setting that indicates the episode ordering for the show <br/>
///
/// <remarks>
/// None = Library default, <br/>
/// tmdbAiring = The Movie Database (Aired), <br/>
/// aired = TheTVDB (Aired), <br/>
/// dvd = TheTVDB (DVD), <br/>
/// absolute = TheTVDB (Absolute)).<br/>
///
/// </remarks>
/// </summary>
[JsonProperty("showOrdering")]
public GetSearchAllLibrariesShowOrdering? ShowOrdering { get; set; }
[JsonProperty("thumb")]
public string? Thumb { get; set; }
[JsonProperty("art")]
public string? Art { get; set; }
[JsonProperty("banner")]
public string? Banner { get; set; }
[JsonProperty("duration")]
public int? Duration { get; set; }
[JsonProperty("originallyAvailableAt")]
public LocalDate? OriginallyAvailableAt { get; set; }
/// <summary>
/// Unix epoch datetime in seconds
/// </summary>
[JsonProperty("addedAt")]
public long AddedAt { get; set; } = default!;
/// <summary>
/// Unix epoch datetime in seconds
/// </summary>
[JsonProperty("updatedAt")]
public long? UpdatedAt { get; set; }
[JsonProperty("audienceRatingImage")]
public string? AudienceRatingImage { get; set; }
[JsonProperty("chapterSource")]
public string? ChapterSource { get; set; }
[JsonProperty("primaryExtraKey")]
public string? PrimaryExtraKey { get; set; }
[JsonProperty("ratingImage")]
public string? RatingImage { get; set; }
[JsonProperty("grandparentRatingKey")]
public string? GrandparentRatingKey { get; set; }
[JsonProperty("grandparentGuid")]
public string? GrandparentGuid { get; set; }
[JsonProperty("grandparentKey")]
public string? GrandparentKey { get; set; }
[JsonProperty("grandparentTitle")]
public string? GrandparentTitle { get; set; }
[JsonProperty("grandparentThumb")]
public string? GrandparentThumb { get; set; }
[JsonProperty("parentSlug")]
public string? ParentSlug { get; set; }
[JsonProperty("grandparentSlug")]
public string? GrandparentSlug { get; set; }
[JsonProperty("grandparentArt")]
public string? GrandparentArt { get; set; }
[JsonProperty("grandparentTheme")]
public string? GrandparentTheme { get; set; }
/// <summary>
/// The Media object is only included when type query is `4` or higher.<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[JsonProperty("Media")]
public List<GetSearchAllLibrariesMedia>? Media { get; set; }
[JsonProperty("Genre")]
public List<GetSearchAllLibrariesGenre>? Genre { get; set; }
[JsonProperty("Country")]
public List<GetSearchAllLibrariesCountry>? Country { get; set; }
[JsonProperty("Director")]
public List<GetSearchAllLibrariesDirector>? Director { get; set; }
[JsonProperty("Writer")]
public List<GetSearchAllLibrariesWriter>? Writer { get; set; }
[JsonProperty("Collection")]
public List<GetSearchAllLibrariesCollection>? Collection { get; set; }
[JsonProperty("Role")]
public List<GetSearchAllLibrariesRole>? Role { get; set; }
[JsonProperty("Location")]
public List<GetSearchAllLibrariesLocation>? Location { get; set; }
/// <summary>
/// The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[JsonProperty("Guid")]
public List<GetSearchAllLibrariesMediaGuid>? MediaGuid { get; set; }
[JsonProperty("UltraBlurColors")]
public GetSearchAllLibrariesUltraBlurColors? UltraBlurColors { get; set; }
[JsonProperty("Rating")]
public List<GetSearchAllLibrariesMetaDataRating>? MetaDataRating { get; set; }
[JsonProperty("Image")]
public List<GetSearchAllLibrariesImage>? Image { get; set; }
[JsonProperty("titleSort")]
public string? TitleSort { get; set; }
[JsonProperty("viewCount")]
public int? ViewCount { get; set; }
[JsonProperty("lastViewedAt")]
public int? LastViewedAt { get; set; }
[JsonProperty("originalTitle")]
public string? OriginalTitle { get; set; }
[JsonProperty("viewOffset")]
public int? ViewOffset { get; set; }
[JsonProperty("skipCount")]
public int? SkipCount { get; set; }
[JsonProperty("index")]
public int? Index { get; set; }
[JsonProperty("theme")]
public string? Theme { get; set; }
[JsonProperty("leafCount")]
public int? LeafCount { get; set; }
[JsonProperty("viewedLeafCount")]
public int? ViewedLeafCount { get; set; }
[JsonProperty("childCount")]
public int? ChildCount { get; set; }
[JsonProperty("hasPremiumExtras")]
public string? HasPremiumExtras { get; set; }
[JsonProperty("hasPremiumPrimaryExtra")]
public string? HasPremiumPrimaryExtra { get; set; }
/// <summary>
/// The rating key of the parent item.<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[JsonProperty("parentRatingKey")]
public string? ParentRatingKey { get; set; }
[JsonProperty("parentGuid")]
public string? ParentGuid { get; set; }
[JsonProperty("parentStudio")]
public string? ParentStudio { get; set; }
[JsonProperty("parentKey")]
public string? ParentKey { get; set; }
[JsonProperty("parentTitle")]
public string? ParentTitle { get; set; }
[JsonProperty("parentIndex")]
public int? ParentIndex { get; set; }
[JsonProperty("parentYear")]
public int? ParentYear { get; set; }
[JsonProperty("parentThumb")]
public string? ParentThumb { get; set; }
[JsonProperty("parentTheme")]
public string? ParentTheme { get; set; }
}
}

View File

@@ -0,0 +1,20 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
public enum GetSearchAllLibrariesOptimizedForStreaming
{
Disable = 0,
Enable = 1,
}
}

View File

@@ -0,0 +1,66 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System.Collections.Generic;
public class GetSearchAllLibrariesPart
{
[JsonProperty("id")]
public int Id { get; set; } = default!;
[JsonProperty("key")]
public string Key { get; set; } = default!;
[JsonProperty("duration")]
public int? Duration { get; set; }
[JsonProperty("file")]
public string File { get; set; } = default!;
[JsonProperty("size")]
public long Size { get; set; } = default!;
/// <summary>
/// The container format of the media file.<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[JsonProperty("container")]
public string Container { get; set; } = default!;
[JsonProperty("audioProfile")]
public string? AudioProfile { get; set; }
[JsonProperty("has64bitOffsets")]
public bool? Has64bitOffsets { get; set; }
[JsonProperty("optimizedForStreaming")]
public bool? OptimizedForStreaming { get; set; }
[JsonProperty("videoProfile")]
public string? VideoProfile { get; set; }
[JsonProperty("indexes")]
public string? Indexes { get; set; }
[JsonProperty("hasThumbnail")]
public GetSearchAllLibrariesHasThumbnail? HasThumbnail { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetSearchAllLibrariesHasThumbnail.False;
[JsonProperty("Stream")]
public List<GetSearchAllLibrariesStream>? Stream { get; set; }
}
}

View File

@@ -0,0 +1,59 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using System.Collections.Generic;
public class GetSearchAllLibrariesRequest
{
/// <summary>
/// The search query term.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=query")]
public string Query { get; set; } = default!;
/// <summary>
/// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")]
public string? ClientID { get; set; }
/// <summary>
/// Limit the number of results returned.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=limit")]
public long? Limit { get; set; }
/// <summary>
/// A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=false,name=searchTypes")]
public List<SearchTypes>? SearchTypes { get; set; }
/// <summary>
/// Whether to include collections in the search results.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeCollections")]
public QueryParamIncludeCollections? IncludeCollections { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.QueryParamIncludeCollections.Disable;
/// <summary>
/// Whether to include external media in the search results.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeExternalMedia")]
public QueryParamIncludeExternalMedia? IncludeExternalMedia { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.QueryParamIncludeExternalMedia.Disable;
}
}

View File

@@ -0,0 +1,40 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using System.Net.Http;
using System;
public class GetSearchAllLibrariesResponse
{
/// <summary>
/// HTTP response content type for this operation
/// </summary>
public string? ContentType { get; set; } = default!;
/// <summary>
/// HTTP response status code for this operation
/// </summary>
public int StatusCode { get; set; } = default!;
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
public HttpResponseMessage RawResponse { get; set; } = default!;
/// <summary>
/// The libraries available on the Server
/// </summary>
public GetSearchAllLibrariesResponseBody? Object { get; set; }
}
}

View File

@@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
/// <summary>
/// The libraries available on the Server
/// </summary>
public class GetSearchAllLibrariesResponseBody
{
[JsonProperty("MediaContainer")]
public GetSearchAllLibrariesMediaContainer MediaContainer { get; set; } = default!;
}
}

View File

@@ -0,0 +1,54 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesRole
{
/// <summary>
/// The ID of the tag or actor.
/// </summary>
[JsonProperty("id")]
public long? Id { get; set; }
/// <summary>
/// The filter used to find the actor or tag.
/// </summary>
[JsonProperty("filter")]
public string? Filter { get; set; }
/// <summary>
/// The thumbnail of the actor
/// </summary>
[JsonProperty("thumb")]
public string? Thumb { get; set; }
/// <summary>
/// The name of the tag or actor.
/// </summary>
[JsonProperty("tag")]
public string? Tag { get; set; }
/// <summary>
/// Unique identifier for the tag.
/// </summary>
[JsonProperty("tagKey")]
public string? TagKey { get; set; }
/// <summary>
/// The role of the actor or tag in the media.
/// </summary>
[JsonProperty("role")]
public string? Role { get; set; }
}
}

View File

@@ -0,0 +1,75 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
/// <summary>
/// Setting that indicates the episode ordering for the show <br/>
///
/// <remarks>
/// None = Library default, <br/>
/// tmdbAiring = The Movie Database (Aired), <br/>
/// aired = TheTVDB (Aired), <br/>
/// dvd = TheTVDB (DVD), <br/>
/// absolute = TheTVDB (Absolute)).<br/>
///
/// </remarks>
/// </summary>
public enum GetSearchAllLibrariesShowOrdering
{
[JsonProperty("None")]
None,
[JsonProperty("tmdbAiring")]
TmdbAiring,
[JsonProperty("aired")]
Aired,
[JsonProperty("dvd")]
Dvd,
[JsonProperty("absolute")]
Absolute,
}
public static class GetSearchAllLibrariesShowOrderingExtension
{
public static string Value(this GetSearchAllLibrariesShowOrdering value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static GetSearchAllLibrariesShowOrdering ToEnum(this string value)
{
foreach(var field in typeof(GetSearchAllLibrariesShowOrdering).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is GetSearchAllLibrariesShowOrdering)
{
return (GetSearchAllLibrariesShowOrdering)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum GetSearchAllLibrariesShowOrdering");
}
}
}

View File

@@ -0,0 +1,234 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesStream
{
[JsonProperty("id")]
public long Id { get; set; } = default!;
/// <summary>
/// Type of stream (1 = video, 2 = audio, 3 = subtitle)
/// </summary>
[JsonProperty("streamType")]
public long StreamType { get; set; } = default!;
/// <summary>
/// Indicates if this is the default stream
/// </summary>
[JsonProperty("default")]
public bool? Default { get; set; }
/// <summary>
/// Indicates if the stream is selected
/// </summary>
[JsonProperty("selected")]
public bool? Selected { get; set; }
/// <summary>
/// Codec used by the stream
/// </summary>
[JsonProperty("codec")]
public string Codec { get; set; } = default!;
/// <summary>
/// The index of the stream
/// </summary>
[JsonProperty("index")]
public long Index { get; set; } = default!;
/// <summary>
/// The bitrate of the stream in kbps
/// </summary>
[JsonProperty("bitrate")]
public long? Bitrate { get; set; }
/// <summary>
/// The color primaries of the video stream
/// </summary>
[JsonProperty("colorPrimaries")]
public string? ColorPrimaries { get; set; }
/// <summary>
/// The color range of the video stream
/// </summary>
[JsonProperty("colorRange")]
public string? ColorRange { get; set; }
/// <summary>
/// The color space of the video stream
/// </summary>
[JsonProperty("colorSpace")]
public string? ColorSpace { get; set; }
/// <summary>
/// The transfer characteristics (TRC) of the video stream
/// </summary>
[JsonProperty("colorTrc")]
public string? ColorTrc { get; set; }
/// <summary>
/// The bit depth of the video stream
/// </summary>
[JsonProperty("bitDepth")]
public long? BitDepth { get; set; }
/// <summary>
/// The chroma location of the video stream
/// </summary>
[JsonProperty("chromaLocation")]
public string? ChromaLocation { get; set; }
/// <summary>
/// The identifier of the video stream
/// </summary>
[JsonProperty("streamIdentifier")]
public string? StreamIdentifier { get; set; }
/// <summary>
/// The chroma subsampling format
/// </summary>
[JsonProperty("chromaSubsampling")]
public string? ChromaSubsampling { get; set; }
/// <summary>
/// The coded height of the video stream
/// </summary>
[JsonProperty("codedHeight")]
public long? CodedHeight { get; set; }
/// <summary>
/// The coded width of the video stream
/// </summary>
[JsonProperty("codedWidth")]
public long? CodedWidth { get; set; }
/// <summary>
/// The frame rate of the video stream
/// </summary>
[JsonProperty("frameRate")]
public double? FrameRate { get; set; }
/// <summary>
/// Indicates if the stream has a scaling matrix
/// </summary>
[JsonProperty("hasScalingMatrix")]
public bool? HasScalingMatrix { get; set; }
[JsonProperty("hearingImpaired")]
public bool? HearingImpaired { get; set; }
[JsonProperty("closedCaptions")]
public bool? ClosedCaptions { get; set; }
[JsonProperty("embeddedInVideo")]
public string? EmbeddedInVideo { get; set; }
/// <summary>
/// The height of the video stream
/// </summary>
[JsonProperty("height")]
public long? Height { get; set; }
/// <summary>
/// The level of the video codec
/// </summary>
[JsonProperty("level")]
public long? Level { get; set; }
/// <summary>
/// The profile of the video codec
/// </summary>
[JsonProperty("profile")]
public string? Profile { get; set; }
/// <summary>
/// Number of reference frames
/// </summary>
[JsonProperty("refFrames")]
public long? RefFrames { get; set; }
/// <summary>
/// The scan type (progressive or interlaced)
/// </summary>
[JsonProperty("scanType")]
public string? ScanType { get; set; }
/// <summary>
/// The width of the video stream
/// </summary>
[JsonProperty("width")]
public long? Width { get; set; }
/// <summary>
/// Display title of the stream
/// </summary>
[JsonProperty("displayTitle")]
public string? DisplayTitle { get; set; }
/// <summary>
/// Extended display title of the stream
/// </summary>
[JsonProperty("extendedDisplayTitle")]
public string? ExtendedDisplayTitle { get; set; }
/// <summary>
/// Number of audio channels (for audio streams)
/// </summary>
[JsonProperty("channels")]
public long? Channels { get; set; }
/// <summary>
/// The language of the stream (for audio/subtitle streams)
/// </summary>
[JsonProperty("language")]
public string? Language { get; set; }
/// <summary>
/// Language tag of the stream
/// </summary>
[JsonProperty("languageTag")]
public string? LanguageTag { get; set; }
/// <summary>
/// Language code of the stream
/// </summary>
[JsonProperty("languageCode")]
public string? LanguageCode { get; set; }
/// <summary>
/// The audio channel layout
/// </summary>
[JsonProperty("audioChannelLayout")]
public string? AudioChannelLayout { get; set; }
/// <summary>
/// Sampling rate of the audio stream in Hz
/// </summary>
[JsonProperty("samplingRate")]
public long? SamplingRate { get; set; }
/// <summary>
/// Title of the subtitle track (for subtitle streams)
/// </summary>
[JsonProperty("title")]
public string? Title { get; set; }
/// <summary>
/// Indicates if the subtitle stream can auto-sync
/// </summary>
[JsonProperty("canAutoSync")]
public bool? CanAutoSync { get; set; }
}
}

View File

@@ -0,0 +1,68 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
/// <summary>
/// The type of media content<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
public enum GetSearchAllLibrariesType
{
[JsonProperty("movie")]
Movie,
[JsonProperty("show")]
TvShow,
[JsonProperty("season")]
Season,
[JsonProperty("episode")]
Episode,
}
public static class GetSearchAllLibrariesTypeExtension
{
public static string Value(this GetSearchAllLibrariesType value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static GetSearchAllLibrariesType ToEnum(this string value)
{
foreach(var field in typeof(GetSearchAllLibrariesType).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is GetSearchAllLibrariesType)
{
return (GetSearchAllLibrariesType)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum GetSearchAllLibrariesType");
}
}
}

View File

@@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesUltraBlurColors
{
[JsonProperty("topLeft")]
public string TopLeft { get; set; } = default!;
[JsonProperty("topRight")]
public string TopRight { get; set; } = default!;
[JsonProperty("bottomRight")]
public string BottomRight { get; set; } = default!;
[JsonProperty("bottomLeft")]
public string BottomLeft { get; set; } = default!;
}
}

View File

@@ -0,0 +1,21 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetSearchAllLibrariesWriter
{
[JsonProperty("tag")]
public string? Tag { get; set; }
}
}

View File

@@ -29,6 +29,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
TvShow = 2, TvShow = 2,
Season = 3, Season = 3,
Episode = 4, Episode = 4,
Audio = 8,
} }
} }

View File

@@ -39,15 +39,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public IncludeIPv6? IncludeIPv6 { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeIPv6.Disable; public IncludeIPv6? IncludeIPv6 { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeIPv6.Disable;
/// <summary> /// <summary>
/// The unique identifier for the client application<br/> /// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
///
/// <remarks>
/// This is used to track the client application and its usage<br/>
/// (UUID, serial number, or other number unique per device)<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Client-Identifier")] [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")]
public string? ClientID { get; set; } public string? ClientID { get; set; }
} }
} }

View File

@@ -22,7 +22,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=Timespan")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=timespan")]
public long? Timespan { get; set; } public long? Timespan { get; set; }
} }
} }

View File

@@ -33,9 +33,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public long Upscale { get; set; } = default!; public long Upscale { get; set; } = default!;
/// <summary> /// <summary>
/// Plex Authentication Token /// An authentication token, obtained from plex.tv
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Token")] [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Token")]
public string XPlexToken { get; set; } = default!; public string XPlexToken { get; set; } = default!;
} }
} }

View File

@@ -21,27 +21,33 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public long PinID { get; set; } = default!; public long PinID { get; set; } = default!;
/// <summary> /// <summary>
/// The unique identifier for the client application<br/> /// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
///
/// <remarks>
/// This is used to track the client application and its usage<br/>
/// (UUID, serial number, or other number unique per device)<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Client-Identifier")] [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")]
public string? ClientID { get; set; } public string? ClientID { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Product")] /// <summary>
/// The name of the client application. (Plex Web, Plex Media Server, etc.)
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")]
public string? ClientName { get; set; } public string? ClientName { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Device")] /// <summary>
public string? DeviceName { get; set; } /// A relatively friendly name for the client device
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")]
public string? DeviceNickname { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Version")] /// <summary>
/// The version of the client application.
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")]
public string? ClientVersion { get; set; } public string? ClientVersion { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Platform")] /// <summary>
public string? ClientPlatform { get; set; } /// The platform of the client application.
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")]
public string? Platform { get; set; }
} }
} }

View File

@@ -1,243 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
public enum GetTokenDetailsFeatures
{
[JsonProperty("Android - Dolby Vision")]
AndroidDolbyVision,
[JsonProperty("Android - PiP")]
AndroidPiP,
[JsonProperty("CU Sunset")]
CUSunset,
[JsonProperty("HRK_enable_EUR")]
HRKEnableEUR,
[JsonProperty("TREBLE-show-features")]
TREBLEShowFeatures,
[JsonProperty("ad-countdown-timer")]
AdCountdownTimer,
[JsonProperty("adaptive_bitrate")]
AdaptiveBitrate,
[JsonProperty("album-types")]
AlbumTypes,
[JsonProperty("allow_dvr")]
AllowDvr,
[JsonProperty("amazon-loop-debug")]
AmazonLoopDebug,
[JsonProperty("avod-ad-analysis")]
AvodAdAnalysis,
[JsonProperty("avod-new-media")]
AvodNewMedia,
[JsonProperty("blacklist_get_signin")]
BlacklistGetSignin,
[JsonProperty("boost-voices")]
BoostVoices,
[JsonProperty("camera_upload")]
CameraUpload,
[JsonProperty("client-radio-stations")]
ClientRadioStations,
[JsonProperty("cloudflare-turnstile-required")]
CloudflareTurnstileRequired,
[JsonProperty("cloudsync")]
Cloudsync,
[JsonProperty("collections")]
Collections,
[JsonProperty("comments_and_replies_push_notifications")]
CommentsAndRepliesPushNotifications,
[JsonProperty("community_access_plex_tv")]
CommunityAccessPlexTv,
[JsonProperty("companions_sonos")]
CompanionsSonos,
[JsonProperty("content_filter")]
ContentFilter,
[JsonProperty("custom-home-removal")]
CustomHomeRemoval,
[JsonProperty("disable_home_user_friendships")]
DisableHomeUserFriendships,
[JsonProperty("disable_sharing_friendships")]
DisableSharingFriendships,
[JsonProperty("downloads-gating")]
DownloadsGating,
[JsonProperty("drm_support")]
DrmSupport,
[JsonProperty("dvr")]
Dvr,
[JsonProperty("dvr-block-unsupported-countries")]
DvrBlockUnsupportedCountries,
[JsonProperty("epg-recent-channels")]
EpgRecentChannels,
[JsonProperty("exclude restrictions")]
ExcludeRestrictions,
[JsonProperty("federated-auth")]
FederatedAuth,
[JsonProperty("friend_request_push_notifications")]
FriendRequestPushNotifications,
[JsonProperty("grandfather-sync")]
GrandfatherSync,
[JsonProperty("guided-upgrade")]
GuidedUpgrade,
[JsonProperty("hardware_transcoding")]
HardwareTranscoding,
[JsonProperty("home")]
Home,
[JsonProperty("hwtranscode")]
Hwtranscode,
[JsonProperty("imagga-v2")]
ImaggaV2,
[JsonProperty("increase-password-complexity")]
IncreasePasswordComplexity,
[JsonProperty("ios14-privacy-banner")]
Ios14PrivacyBanner,
[JsonProperty("iterable-notification-tokens")]
IterableNotificationTokens,
[JsonProperty("item_clusters")]
ItemClusters,
[JsonProperty("keep-payment-method")]
KeepPaymentMethod,
[JsonProperty("kevin-bacon")]
KevinBacon,
[JsonProperty("korea-consent")]
KoreaConsent,
[JsonProperty("le_isrg_root_x1")]
LeIsrgRootX1,
[JsonProperty("lets_encrypt")]
LetsEncrypt,
[JsonProperty("lightning-dvr-pivot")]
LightningDvrPivot,
[JsonProperty("live-tv-support-incomplete-segments")]
LiveTvSupportIncompleteSegments,
[JsonProperty("livetv")]
Livetv,
[JsonProperty("lyrics")]
Lyrics,
[JsonProperty("metadata_search")]
MetadataSearch,
[JsonProperty("music-analysis")]
MusicAnalysis,
[JsonProperty("music_videos")]
MusicVideos,
[JsonProperty("new_plex_pass_prices")]
NewPlexPassPrices,
[JsonProperty("news-provider-sunset-modal")]
NewsProviderSunsetModal,
[JsonProperty("nominatim")]
Nominatim,
[JsonProperty("pass")]
Pass,
[JsonProperty("photos-favorites")]
PhotosFavorites,
[JsonProperty("photos-metadata-edition")]
PhotosMetadataEdition,
[JsonProperty("photosV6-edit")]
PhotosV6Edit,
[JsonProperty("photosV6-tv-albums")]
PhotosV6TvAlbums,
[JsonProperty("pms_health")]
PmsHealth,
[JsonProperty("premium-dashboard")]
PremiumDashboard,
[JsonProperty("premium_music_metadata")]
PremiumMusicMetadata,
[JsonProperty("radio")]
Radio,
[JsonProperty("rate-limit-client-token")]
RateLimitClientToken,
[JsonProperty("scrobbling-service-plex-tv")]
ScrobblingServicePlexTv,
[JsonProperty("session_bandwidth_restrictions")]
SessionBandwidthRestrictions,
[JsonProperty("session_kick")]
SessionKick,
[JsonProperty("shared_server_notification")]
SharedServerNotification,
[JsonProperty("shared_source_notification")]
SharedSourceNotification,
[JsonProperty("signin_notification")]
SigninNotification,
[JsonProperty("signin_with_apple")]
SigninWithApple,
[JsonProperty("silence-removal")]
SilenceRemoval,
[JsonProperty("sleep-timer")]
SleepTimer,
[JsonProperty("spring_serve_ad_provider")]
SpringServeAdProvider,
[JsonProperty("sync")]
Sync,
[JsonProperty("sweet-fades")]
SweetFades,
[JsonProperty("transcoder_cache")]
TranscoderCache,
[JsonProperty("trailers")]
Trailers,
[JsonProperty("tuner-sharing")]
TunerSharing,
[JsonProperty("two-factor-authentication")]
TwoFactorAuthentication,
[JsonProperty("unsupportedtuners")]
Unsupportedtuners,
[JsonProperty("upgrade-3ds2")]
Upgrade3ds2,
[JsonProperty("visualizers")]
Visualizers,
[JsonProperty("vod-schema")]
VodSchema,
[JsonProperty("vod_cloudflare")]
VodCloudflare,
[JsonProperty("volume-leveling")]
VolumeLeveling,
[JsonProperty("watch-together-invite")]
WatchTogetherInvite,
[JsonProperty("watchlist-rss")]
WatchlistRss,
[JsonProperty("web_server_dashboard")]
WebServerDashboard,
[JsonProperty("webhooks")]
Webhooks,
}
public static class GetTokenDetailsFeaturesExtension
{
public static string Value(this GetTokenDetailsFeatures value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static GetTokenDetailsFeatures ToEnum(this string value)
{
foreach(var field in typeof(GetTokenDetailsFeatures).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is GetTokenDetailsFeatures)
{
return (GetTokenDetailsFeatures)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum GetTokenDetailsFeatures");
}
}
}

View File

@@ -21,7 +21,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// List of features allowed on your Plex Pass subscription /// List of features allowed on your Plex Pass subscription
/// </summary> /// </summary>
[JsonProperty("features")] [JsonProperty("features")]
public List<GetTokenDetailsFeatures>? Features { get; set; } public List<string>? Features { get; set; }
/// <summary> /// <summary>
/// If the account&apos;s Plex Pass subscription is active /// If the account&apos;s Plex Pass subscription is active

View File

@@ -27,17 +27,11 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
[JsonProperty("adsConsent", NullValueHandling = NullValueHandling.Include)] [JsonProperty("adsConsent", NullValueHandling = NullValueHandling.Include)]
public bool? AdsConsent { get; set; } public bool? AdsConsent { get; set; }
/// <summary>
/// Unknown
/// </summary>
[JsonProperty("adsConsentReminderAt", NullValueHandling = NullValueHandling.Include)] [JsonProperty("adsConsentReminderAt", NullValueHandling = NullValueHandling.Include)]
public DateTime? AdsConsentReminderAt { get; set; } public long? AdsConsentReminderAt { get; set; }
/// <summary>
/// Unknown
/// </summary>
[JsonProperty("adsConsentSetAt", NullValueHandling = NullValueHandling.Include)] [JsonProperty("adsConsentSetAt", NullValueHandling = NullValueHandling.Include)]
public DateTime? AdsConsentSetAt { get; set; } public long? AdsConsentSetAt { get; set; }
/// <summary> /// <summary>
/// Unknown /// Unknown

View File

@@ -29,6 +29,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
TvShow = 2, TvShow = 2,
Season = 3, Season = 3,
Episode = 4, Episode = 4,
Audio = 8,
} }
} }

View File

@@ -22,9 +22,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public Filter Filter { get; set; } = default!; public Filter Filter { get; set; } = default!;
/// <summary> /// <summary>
/// Plex Authentication Token /// An authentication token, obtained from plex.tv
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Token")] [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Token")]
public string XPlexToken { get; set; } = default!; public string XPlexToken { get; set; } = default!;
/// <summary> /// <summary>

View File

@@ -15,10 +15,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public class Location public class Location
{ {
[JsonProperty("id")]
public int Id { get; set; } = default!;
[JsonProperty("path")] [JsonProperty("path")]
public string Path { get; set; } = default!; public string? Path { get; set; }
} }
} }

View File

@@ -21,43 +21,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public int Id { get; set; } = default!; public int Id { get; set; } = default!;
[JsonProperty("duration")] [JsonProperty("duration")]
public int Duration { get; set; } = default!; public int? Duration { get; set; }
[JsonProperty("bitrate")] [JsonProperty("bitrate")]
public int Bitrate { get; set; } = default!; public int? Bitrate { get; set; }
[JsonProperty("width")] [JsonProperty("width")]
public int Width { get; set; } = default!; public int? Width { get; set; }
[JsonProperty("height")] [JsonProperty("height")]
public int Height { get; set; } = default!; public int? Height { get; set; }
[JsonProperty("aspectRatio")] [JsonProperty("aspectRatio")]
public double AspectRatio { get; set; } = default!; public double? AspectRatio { get; set; }
[JsonProperty("audioProfile")] [JsonProperty("audioProfile")]
public string? AudioProfile { get; set; } public string? AudioProfile { get; set; }
[JsonProperty("audioChannels")] [JsonProperty("audioChannels")]
public int AudioChannels { get; set; } = default!; public int? AudioChannels { get; set; }
[JsonProperty("audioCodec")] [JsonProperty("audioCodec")]
public string AudioCodec { get; set; } = default!; public string? AudioCodec { get; set; }
[JsonProperty("videoCodec")] [JsonProperty("videoCodec")]
public string VideoCodec { get; set; } = default!; public string? VideoCodec { get; set; }
[JsonProperty("videoResolution")] [JsonProperty("videoResolution")]
public string VideoResolution { get; set; } = default!; public string? VideoResolution { get; set; }
[JsonProperty("container")] [JsonProperty("container")]
public string Container { get; set; } = default!; public string Container { get; set; } = default!;
[JsonProperty("videoFrameRate")] [JsonProperty("videoFrameRate")]
public string VideoFrameRate { get; set; } = default!; public string? VideoFrameRate { get; set; }
[JsonProperty("videoProfile")] [JsonProperty("videoProfile")]
public string VideoProfile { get; set; } = default!; public string? VideoProfile { get; set; }
[JsonProperty("hasVoiceActivity")] [JsonProperty("hasVoiceActivity")]
public bool? HasVoiceActivity { get; set; } public bool? HasVoiceActivity { get; set; }

View File

@@ -24,7 +24,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string Key { get; set; } = default!; public string Key { get; set; } = default!;
[JsonProperty("duration")] [JsonProperty("duration")]
public int Duration { get; set; } = default!; public int? Duration { get; set; }
[JsonProperty("file")] [JsonProperty("file")]
public string File { get; set; } = default!; public string File { get; set; } = default!;
@@ -52,7 +52,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public bool? OptimizedForStreaming { get; set; } public bool? OptimizedForStreaming { get; set; }
[JsonProperty("videoProfile")] [JsonProperty("videoProfile")]
public string VideoProfile { get; set; } = default!; public string? VideoProfile { get; set; }
[JsonProperty("indexes")] [JsonProperty("indexes")]
public string? Indexes { get; set; } public string? Indexes { get; set; }

View File

@@ -1,243 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
public enum PostUsersSignInDataAuthenticationFeatures
{
[JsonProperty("Android - Dolby Vision")]
AndroidDolbyVision,
[JsonProperty("Android - PiP")]
AndroidPiP,
[JsonProperty("CU Sunset")]
CUSunset,
[JsonProperty("HRK_enable_EUR")]
HRKEnableEUR,
[JsonProperty("TREBLE-show-features")]
TREBLEShowFeatures,
[JsonProperty("ad-countdown-timer")]
AdCountdownTimer,
[JsonProperty("adaptive_bitrate")]
AdaptiveBitrate,
[JsonProperty("album-types")]
AlbumTypes,
[JsonProperty("allow_dvr")]
AllowDvr,
[JsonProperty("amazon-loop-debug")]
AmazonLoopDebug,
[JsonProperty("avod-ad-analysis")]
AvodAdAnalysis,
[JsonProperty("avod-new-media")]
AvodNewMedia,
[JsonProperty("blacklist_get_signin")]
BlacklistGetSignin,
[JsonProperty("boost-voices")]
BoostVoices,
[JsonProperty("camera_upload")]
CameraUpload,
[JsonProperty("client-radio-stations")]
ClientRadioStations,
[JsonProperty("cloudflare-turnstile-required")]
CloudflareTurnstileRequired,
[JsonProperty("cloudsync")]
Cloudsync,
[JsonProperty("collections")]
Collections,
[JsonProperty("comments_and_replies_push_notifications")]
CommentsAndRepliesPushNotifications,
[JsonProperty("community_access_plex_tv")]
CommunityAccessPlexTv,
[JsonProperty("companions_sonos")]
CompanionsSonos,
[JsonProperty("content_filter")]
ContentFilter,
[JsonProperty("custom-home-removal")]
CustomHomeRemoval,
[JsonProperty("disable_home_user_friendships")]
DisableHomeUserFriendships,
[JsonProperty("disable_sharing_friendships")]
DisableSharingFriendships,
[JsonProperty("downloads-gating")]
DownloadsGating,
[JsonProperty("drm_support")]
DrmSupport,
[JsonProperty("dvr")]
Dvr,
[JsonProperty("dvr-block-unsupported-countries")]
DvrBlockUnsupportedCountries,
[JsonProperty("epg-recent-channels")]
EpgRecentChannels,
[JsonProperty("exclude restrictions")]
ExcludeRestrictions,
[JsonProperty("federated-auth")]
FederatedAuth,
[JsonProperty("friend_request_push_notifications")]
FriendRequestPushNotifications,
[JsonProperty("grandfather-sync")]
GrandfatherSync,
[JsonProperty("guided-upgrade")]
GuidedUpgrade,
[JsonProperty("hardware_transcoding")]
HardwareTranscoding,
[JsonProperty("home")]
Home,
[JsonProperty("hwtranscode")]
Hwtranscode,
[JsonProperty("imagga-v2")]
ImaggaV2,
[JsonProperty("increase-password-complexity")]
IncreasePasswordComplexity,
[JsonProperty("ios14-privacy-banner")]
Ios14PrivacyBanner,
[JsonProperty("iterable-notification-tokens")]
IterableNotificationTokens,
[JsonProperty("item_clusters")]
ItemClusters,
[JsonProperty("keep-payment-method")]
KeepPaymentMethod,
[JsonProperty("kevin-bacon")]
KevinBacon,
[JsonProperty("korea-consent")]
KoreaConsent,
[JsonProperty("le_isrg_root_x1")]
LeIsrgRootX1,
[JsonProperty("lets_encrypt")]
LetsEncrypt,
[JsonProperty("lightning-dvr-pivot")]
LightningDvrPivot,
[JsonProperty("live-tv-support-incomplete-segments")]
LiveTvSupportIncompleteSegments,
[JsonProperty("livetv")]
Livetv,
[JsonProperty("lyrics")]
Lyrics,
[JsonProperty("metadata_search")]
MetadataSearch,
[JsonProperty("music-analysis")]
MusicAnalysis,
[JsonProperty("music_videos")]
MusicVideos,
[JsonProperty("new_plex_pass_prices")]
NewPlexPassPrices,
[JsonProperty("news-provider-sunset-modal")]
NewsProviderSunsetModal,
[JsonProperty("nominatim")]
Nominatim,
[JsonProperty("pass")]
Pass,
[JsonProperty("photos-favorites")]
PhotosFavorites,
[JsonProperty("photos-metadata-edition")]
PhotosMetadataEdition,
[JsonProperty("photosV6-edit")]
PhotosV6Edit,
[JsonProperty("photosV6-tv-albums")]
PhotosV6TvAlbums,
[JsonProperty("pms_health")]
PmsHealth,
[JsonProperty("premium-dashboard")]
PremiumDashboard,
[JsonProperty("premium_music_metadata")]
PremiumMusicMetadata,
[JsonProperty("radio")]
Radio,
[JsonProperty("rate-limit-client-token")]
RateLimitClientToken,
[JsonProperty("scrobbling-service-plex-tv")]
ScrobblingServicePlexTv,
[JsonProperty("session_bandwidth_restrictions")]
SessionBandwidthRestrictions,
[JsonProperty("session_kick")]
SessionKick,
[JsonProperty("shared_server_notification")]
SharedServerNotification,
[JsonProperty("shared_source_notification")]
SharedSourceNotification,
[JsonProperty("signin_notification")]
SigninNotification,
[JsonProperty("signin_with_apple")]
SigninWithApple,
[JsonProperty("silence-removal")]
SilenceRemoval,
[JsonProperty("sleep-timer")]
SleepTimer,
[JsonProperty("spring_serve_ad_provider")]
SpringServeAdProvider,
[JsonProperty("sync")]
Sync,
[JsonProperty("sweet-fades")]
SweetFades,
[JsonProperty("transcoder_cache")]
TranscoderCache,
[JsonProperty("trailers")]
Trailers,
[JsonProperty("tuner-sharing")]
TunerSharing,
[JsonProperty("two-factor-authentication")]
TwoFactorAuthentication,
[JsonProperty("unsupportedtuners")]
Unsupportedtuners,
[JsonProperty("upgrade-3ds2")]
Upgrade3ds2,
[JsonProperty("visualizers")]
Visualizers,
[JsonProperty("vod-schema")]
VodSchema,
[JsonProperty("vod_cloudflare")]
VodCloudflare,
[JsonProperty("volume-leveling")]
VolumeLeveling,
[JsonProperty("watch-together-invite")]
WatchTogetherInvite,
[JsonProperty("watchlist-rss")]
WatchlistRss,
[JsonProperty("web_server_dashboard")]
WebServerDashboard,
[JsonProperty("webhooks")]
Webhooks,
}
public static class PostUsersSignInDataAuthenticationFeaturesExtension
{
public static string Value(this PostUsersSignInDataAuthenticationFeatures value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static PostUsersSignInDataAuthenticationFeatures ToEnum(this string value)
{
foreach(var field in typeof(PostUsersSignInDataAuthenticationFeatures).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is PostUsersSignInDataAuthenticationFeatures)
{
return (PostUsersSignInDataAuthenticationFeatures)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum PostUsersSignInDataAuthenticationFeatures");
}
}
}

View File

@@ -21,7 +21,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// List of features allowed on your Plex Pass subscription /// List of features allowed on your Plex Pass subscription
/// </summary> /// </summary>
[JsonProperty("features")] [JsonProperty("features")]
public List<PostUsersSignInDataAuthenticationFeatures>? Features { get; set; } public List<string>? Features { get; set; }
/// <summary> /// <summary>
/// If the account&apos;s Plex Pass subscription is active /// If the account&apos;s Plex Pass subscription is active

View File

@@ -1,243 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
public enum PostUsersSignInDataFeatures
{
[JsonProperty("Android - Dolby Vision")]
AndroidDolbyVision,
[JsonProperty("Android - PiP")]
AndroidPiP,
[JsonProperty("CU Sunset")]
CUSunset,
[JsonProperty("HRK_enable_EUR")]
HRKEnableEUR,
[JsonProperty("TREBLE-show-features")]
TREBLEShowFeatures,
[JsonProperty("ad-countdown-timer")]
AdCountdownTimer,
[JsonProperty("adaptive_bitrate")]
AdaptiveBitrate,
[JsonProperty("album-types")]
AlbumTypes,
[JsonProperty("allow_dvr")]
AllowDvr,
[JsonProperty("amazon-loop-debug")]
AmazonLoopDebug,
[JsonProperty("avod-ad-analysis")]
AvodAdAnalysis,
[JsonProperty("avod-new-media")]
AvodNewMedia,
[JsonProperty("blacklist_get_signin")]
BlacklistGetSignin,
[JsonProperty("boost-voices")]
BoostVoices,
[JsonProperty("camera_upload")]
CameraUpload,
[JsonProperty("client-radio-stations")]
ClientRadioStations,
[JsonProperty("cloudflare-turnstile-required")]
CloudflareTurnstileRequired,
[JsonProperty("cloudsync")]
Cloudsync,
[JsonProperty("collections")]
Collections,
[JsonProperty("comments_and_replies_push_notifications")]
CommentsAndRepliesPushNotifications,
[JsonProperty("community_access_plex_tv")]
CommunityAccessPlexTv,
[JsonProperty("companions_sonos")]
CompanionsSonos,
[JsonProperty("content_filter")]
ContentFilter,
[JsonProperty("custom-home-removal")]
CustomHomeRemoval,
[JsonProperty("disable_home_user_friendships")]
DisableHomeUserFriendships,
[JsonProperty("disable_sharing_friendships")]
DisableSharingFriendships,
[JsonProperty("downloads-gating")]
DownloadsGating,
[JsonProperty("drm_support")]
DrmSupport,
[JsonProperty("dvr")]
Dvr,
[JsonProperty("dvr-block-unsupported-countries")]
DvrBlockUnsupportedCountries,
[JsonProperty("epg-recent-channels")]
EpgRecentChannels,
[JsonProperty("exclude restrictions")]
ExcludeRestrictions,
[JsonProperty("federated-auth")]
FederatedAuth,
[JsonProperty("friend_request_push_notifications")]
FriendRequestPushNotifications,
[JsonProperty("grandfather-sync")]
GrandfatherSync,
[JsonProperty("guided-upgrade")]
GuidedUpgrade,
[JsonProperty("hardware_transcoding")]
HardwareTranscoding,
[JsonProperty("home")]
Home,
[JsonProperty("hwtranscode")]
Hwtranscode,
[JsonProperty("imagga-v2")]
ImaggaV2,
[JsonProperty("increase-password-complexity")]
IncreasePasswordComplexity,
[JsonProperty("ios14-privacy-banner")]
Ios14PrivacyBanner,
[JsonProperty("iterable-notification-tokens")]
IterableNotificationTokens,
[JsonProperty("item_clusters")]
ItemClusters,
[JsonProperty("keep-payment-method")]
KeepPaymentMethod,
[JsonProperty("kevin-bacon")]
KevinBacon,
[JsonProperty("korea-consent")]
KoreaConsent,
[JsonProperty("le_isrg_root_x1")]
LeIsrgRootX1,
[JsonProperty("lets_encrypt")]
LetsEncrypt,
[JsonProperty("lightning-dvr-pivot")]
LightningDvrPivot,
[JsonProperty("live-tv-support-incomplete-segments")]
LiveTvSupportIncompleteSegments,
[JsonProperty("livetv")]
Livetv,
[JsonProperty("lyrics")]
Lyrics,
[JsonProperty("metadata_search")]
MetadataSearch,
[JsonProperty("music-analysis")]
MusicAnalysis,
[JsonProperty("music_videos")]
MusicVideos,
[JsonProperty("new_plex_pass_prices")]
NewPlexPassPrices,
[JsonProperty("news-provider-sunset-modal")]
NewsProviderSunsetModal,
[JsonProperty("nominatim")]
Nominatim,
[JsonProperty("pass")]
Pass,
[JsonProperty("photos-favorites")]
PhotosFavorites,
[JsonProperty("photos-metadata-edition")]
PhotosMetadataEdition,
[JsonProperty("photosV6-edit")]
PhotosV6Edit,
[JsonProperty("photosV6-tv-albums")]
PhotosV6TvAlbums,
[JsonProperty("pms_health")]
PmsHealth,
[JsonProperty("premium-dashboard")]
PremiumDashboard,
[JsonProperty("premium_music_metadata")]
PremiumMusicMetadata,
[JsonProperty("radio")]
Radio,
[JsonProperty("rate-limit-client-token")]
RateLimitClientToken,
[JsonProperty("scrobbling-service-plex-tv")]
ScrobblingServicePlexTv,
[JsonProperty("session_bandwidth_restrictions")]
SessionBandwidthRestrictions,
[JsonProperty("session_kick")]
SessionKick,
[JsonProperty("shared_server_notification")]
SharedServerNotification,
[JsonProperty("shared_source_notification")]
SharedSourceNotification,
[JsonProperty("signin_notification")]
SigninNotification,
[JsonProperty("signin_with_apple")]
SigninWithApple,
[JsonProperty("silence-removal")]
SilenceRemoval,
[JsonProperty("sleep-timer")]
SleepTimer,
[JsonProperty("spring_serve_ad_provider")]
SpringServeAdProvider,
[JsonProperty("sync")]
Sync,
[JsonProperty("sweet-fades")]
SweetFades,
[JsonProperty("transcoder_cache")]
TranscoderCache,
[JsonProperty("trailers")]
Trailers,
[JsonProperty("tuner-sharing")]
TunerSharing,
[JsonProperty("two-factor-authentication")]
TwoFactorAuthentication,
[JsonProperty("unsupportedtuners")]
Unsupportedtuners,
[JsonProperty("upgrade-3ds2")]
Upgrade3ds2,
[JsonProperty("visualizers")]
Visualizers,
[JsonProperty("vod-schema")]
VodSchema,
[JsonProperty("vod_cloudflare")]
VodCloudflare,
[JsonProperty("volume-leveling")]
VolumeLeveling,
[JsonProperty("watch-together-invite")]
WatchTogetherInvite,
[JsonProperty("watchlist-rss")]
WatchlistRss,
[JsonProperty("web_server_dashboard")]
WebServerDashboard,
[JsonProperty("webhooks")]
Webhooks,
}
public static class PostUsersSignInDataFeaturesExtension
{
public static string Value(this PostUsersSignInDataFeatures value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static PostUsersSignInDataFeatures ToEnum(this string value)
{
foreach(var field in typeof(PostUsersSignInDataFeatures).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is PostUsersSignInDataFeatures)
{
return (PostUsersSignInDataFeatures)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum PostUsersSignInDataFeatures");
}
}
}

View File

@@ -16,28 +16,34 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
{ {
/// <summary> /// <summary>
/// The unique identifier for the client application<br/> /// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
///
/// <remarks>
/// This is used to track the client application and its usage<br/>
/// (UUID, serial number, or other number unique per device)<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Client-Identifier")] [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")]
public string? ClientID { get; set; } public string? ClientID { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Product")] /// <summary>
/// The name of the client application. (Plex Web, Plex Media Server, etc.)
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")]
public string? ClientName { get; set; } public string? ClientName { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Device")] /// <summary>
public string? DeviceName { get; set; } /// A relatively friendly name for the client device
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")]
public string? DeviceNickname { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Version")] /// <summary>
/// The version of the client application.
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")]
public string? ClientVersion { get; set; } public string? ClientVersion { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Platform")] /// <summary>
public string? ClientPlatform { get; set; } /// The platform of the client application.
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")]
public string? Platform { get; set; }
/// <summary> /// <summary>
/// Login credentials /// Login credentials

View File

@@ -24,7 +24,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// List of features allowed on your Plex Pass subscription /// List of features allowed on your Plex Pass subscription
/// </summary> /// </summary>
[JsonProperty("features")] [JsonProperty("features")]
public List<PostUsersSignInDataFeatures>? Features { get; set; } public List<string>? Features { get; set; }
/// <summary> /// <summary>
/// If the account&apos;s Plex Pass subscription is active /// If the account&apos;s Plex Pass subscription is active

View File

@@ -27,17 +27,11 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
[JsonProperty("adsConsent", NullValueHandling = NullValueHandling.Include)] [JsonProperty("adsConsent", NullValueHandling = NullValueHandling.Include)]
public bool? AdsConsent { get; set; } public bool? AdsConsent { get; set; }
/// <summary>
/// Unknown
/// </summary>
[JsonProperty("adsConsentReminderAt", NullValueHandling = NullValueHandling.Include)] [JsonProperty("adsConsentReminderAt", NullValueHandling = NullValueHandling.Include)]
public DateTime? AdsConsentReminderAt { get; set; } public long? AdsConsentReminderAt { get; set; }
/// <summary>
/// Unknown
/// </summary>
[JsonProperty("adsConsentSetAt", NullValueHandling = NullValueHandling.Include)] [JsonProperty("adsConsentSetAt", NullValueHandling = NullValueHandling.Include)]
public DateTime? AdsConsentSetAt { get; set; } public long? AdsConsentSetAt { get; set; }
/// <summary> /// <summary>
/// Unknown /// Unknown

View File

@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
/// <summary>
/// Whether to include collections in the search results.
/// </summary>
public enum QueryParamIncludeCollections
{
Disable = 0,
Enable = 1,
}
}

View File

@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
/// <summary>
/// Whether to include external media in the search results.
/// </summary>
public enum QueryParamIncludeExternalMedia
{
Disable = 0,
Enable = 1,
}
}

View File

@@ -29,6 +29,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
TvShow = 2, TvShow = 2,
Season = 3, Season = 3,
Episode = 4, Episode = 4,
Audio = 8,
} }
} }

View File

@@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class SearchResult
{
[JsonProperty("score")]
public float Score { get; set; } = default!;
[JsonProperty("Metadata")]
public GetSearchAllLibrariesMetadata Metadata { get; set; } = default!;
}
}

View File

@@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
public enum SearchTypes
{
[JsonProperty("movies")]
Movies,
[JsonProperty("music")]
Music,
[JsonProperty("otherVideos")]
OtherVideos,
[JsonProperty("people")]
People,
[JsonProperty("tv")]
Tv,
}
public static class SearchTypesExtension
{
public static string Value(this SearchTypes value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static SearchTypes ToEnum(this string value)
{
foreach(var field in typeof(SearchTypes).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
if (enumVal is SearchTypes)
{
return (SearchTypes)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum SearchTypes");
}
}
}

View File

@@ -24,7 +24,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// List of features allowed on your Plex Pass subscription /// List of features allowed on your Plex Pass subscription
/// </summary> /// </summary>
[JsonProperty("features")] [JsonProperty("features")]
public List<Features>? Features { get; set; } public List<string>? Features { get; set; }
/// <summary> /// <summary>
/// If the account&apos;s Plex Pass subscription is active /// If the account&apos;s Plex Pass subscription is active

View File

@@ -29,6 +29,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
TvShow = 2, TvShow = 2,
Season = 3, Season = 3,
Episode = 4, Episode = 4,
Audio = 8,
} }
} }

View File

@@ -146,10 +146,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;

View File

@@ -143,10 +143,10 @@ namespace LukeHagar.PlexAPI.SDK
}; };
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -578,6 +578,7 @@ namespace LukeHagar.PlexAPI.SDK
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
if (_securitySource != null) if (_securitySource != null)
{ {
@@ -672,8 +673,8 @@ namespace LukeHagar.PlexAPI.SDK
request.ClientID ??= SDKConfiguration.ClientID; request.ClientID ??= SDKConfiguration.ClientID;
request.ClientName ??= SDKConfiguration.ClientName; request.ClientName ??= SDKConfiguration.ClientName;
request.ClientVersion ??= SDKConfiguration.ClientVersion; request.ClientVersion ??= SDKConfiguration.ClientVersion;
request.ClientPlatform ??= SDKConfiguration.ClientPlatform; request.Platform ??= SDKConfiguration.Platform;
request.DeviceName ??= SDKConfiguration.DeviceName; request.DeviceNickname ??= SDKConfiguration.DeviceNickname;
string baseUrl = Utilities.TemplateUrl(GetPinServerList[0], new Dictionary<string, string>(){ string baseUrl = Utilities.TemplateUrl(GetPinServerList[0], new Dictionary<string, string>(){
}); });
@@ -685,6 +686,7 @@ namespace LukeHagar.PlexAPI.SDK
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
var hookCtx = new HookContext("getPin", null, null); var hookCtx = new HookContext("getPin", null, null);
@@ -767,8 +769,8 @@ namespace LukeHagar.PlexAPI.SDK
request.ClientID ??= SDKConfiguration.ClientID; request.ClientID ??= SDKConfiguration.ClientID;
request.ClientName ??= SDKConfiguration.ClientName; request.ClientName ??= SDKConfiguration.ClientName;
request.ClientVersion ??= SDKConfiguration.ClientVersion; request.ClientVersion ??= SDKConfiguration.ClientVersion;
request.ClientPlatform ??= SDKConfiguration.ClientPlatform; request.Platform ??= SDKConfiguration.Platform;
request.DeviceName ??= SDKConfiguration.DeviceName; request.DeviceNickname ??= SDKConfiguration.DeviceNickname;
string baseUrl = Utilities.TemplateUrl(GetTokenByPinIdServerList[0], new Dictionary<string, string>(){ string baseUrl = Utilities.TemplateUrl(GetTokenByPinIdServerList[0], new Dictionary<string, string>(){
}); });
@@ -780,6 +782,7 @@ namespace LukeHagar.PlexAPI.SDK
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
var hookCtx = new HookContext("getTokenByPinId", null, null); var hookCtx = new HookContext("getTokenByPinId", null, null);

View File

@@ -92,7 +92,7 @@ namespace LukeHagar.PlexAPI.SDK
/// | Swift | <a href="https://github.com/LukeHagar/plexswift">GitHub</a> | <a href="https://github.com/LukeHagar/plexswift/releases">Releases</a> | - |<br/> /// | Swift | <a href="https://github.com/LukeHagar/plexswift">GitHub</a> | <a href="https://github.com/LukeHagar/plexswift/releases">Releases</a> | - |<br/>
/// | PHP | <a href="https://github.com/LukeHagar/plexphp">GitHub</a> | <a href="https://github.com/LukeHagar/plexphp/releases">Releases</a> | - |<br/> /// | PHP | <a href="https://github.com/LukeHagar/plexphp">GitHub</a> | <a href="https://github.com/LukeHagar/plexphp/releases">Releases</a> | - |<br/>
/// | Java | <a href="https://github.com/LukeHagar/plexjava">GitHub</a> | <a href="https://github.com/LukeHagar/plexjava/releases">Releases</a> | - |<br/> /// | Java | <a href="https://github.com/LukeHagar/plexjava">GitHub</a> | <a href="https://github.com/LukeHagar/plexjava/releases">Releases</a> | - |<br/>
/// | C# | <a href="https://github.com/LukeHagar/plexcsharp">GitHub</a> | <a href="https://github.com/LukeHagar/plexcsharp/releases">Releases</a> | - <br/> /// | C# | <a href="https://github.com/LukeHagar/plexcsharp">GitHub</a> | <a href="https://github.com/LukeHagar/plexcsharp/releases">Releases</a> | -<br/>
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
@@ -269,8 +269,8 @@ namespace LukeHagar.PlexAPI.SDK
public string? ClientID; public string? ClientID;
public string? ClientName; public string? ClientName;
public string? ClientVersion; public string? ClientVersion;
public string? ClientPlatform; public string? Platform;
public string? DeviceName; public string? DeviceNickname;
public SDKHooks Hooks = new SDKHooks(); public SDKHooks Hooks = new SDKHooks();
public RetryConfig? RetryConfig = null; public RetryConfig? RetryConfig = null;
@@ -322,7 +322,7 @@ namespace LukeHagar.PlexAPI.SDK
/// | Swift | <a href="https://github.com/LukeHagar/plexswift">GitHub</a> | <a href="https://github.com/LukeHagar/plexswift/releases">Releases</a> | - |<br/> /// | Swift | <a href="https://github.com/LukeHagar/plexswift">GitHub</a> | <a href="https://github.com/LukeHagar/plexswift/releases">Releases</a> | - |<br/>
/// | PHP | <a href="https://github.com/LukeHagar/plexphp">GitHub</a> | <a href="https://github.com/LukeHagar/plexphp/releases">Releases</a> | - |<br/> /// | PHP | <a href="https://github.com/LukeHagar/plexphp">GitHub</a> | <a href="https://github.com/LukeHagar/plexphp/releases">Releases</a> | - |<br/>
/// | Java | <a href="https://github.com/LukeHagar/plexjava">GitHub</a> | <a href="https://github.com/LukeHagar/plexjava/releases">Releases</a> | - |<br/> /// | Java | <a href="https://github.com/LukeHagar/plexjava">GitHub</a> | <a href="https://github.com/LukeHagar/plexjava/releases">Releases</a> | - |<br/>
/// | C# | <a href="https://github.com/LukeHagar/plexcsharp">GitHub</a> | <a href="https://github.com/LukeHagar/plexcsharp/releases">Releases</a> | - <br/> /// | C# | <a href="https://github.com/LukeHagar/plexcsharp">GitHub</a> | <a href="https://github.com/LukeHagar/plexcsharp/releases">Releases</a> | -<br/>
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
@@ -331,10 +331,10 @@ namespace LukeHagar.PlexAPI.SDK
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private int _serverIndex = 0; private int _serverIndex = 0;
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
@@ -356,7 +356,7 @@ namespace LukeHagar.PlexAPI.SDK
public ISessions Sessions { get; private set; } public ISessions Sessions { get; private set; }
public IUpdater Updater { get; private set; } public IUpdater Updater { get; private set; }
public PlexAPI(string? accessToken = null, Func<string>? accessTokenSource = null, string? clientID = null, string? clientName = null, string? clientVersion = null, string? clientPlatform = null, string? deviceName = null, int? serverIndex = null, ServerProtocol? protocol = null, string? ip = null, string? port = null, string? serverUrl = null, Dictionary<string, string>? urlParams = null, ISpeakeasyHttpClient? client = null, RetryConfig? retryConfig = null) public PlexAPI(string? accessToken = null, Func<string>? accessTokenSource = null, string? clientID = null, string? clientName = null, string? clientVersion = null, string? platform = null, string? deviceNickname = null, int? serverIndex = null, ServerProtocol? protocol = null, string? ip = null, string? port = null, string? serverUrl = null, Dictionary<string, string>? urlParams = null, ISpeakeasyHttpClient? client = null, RetryConfig? retryConfig = null)
{ {
if (serverIndex != null) if (serverIndex != null)
{ {
@@ -401,8 +401,8 @@ namespace LukeHagar.PlexAPI.SDK
ClientID = clientID, ClientID = clientID,
ClientName = clientName, ClientName = clientName,
ClientVersion = clientVersion, ClientVersion = clientVersion,
ClientPlatform = clientPlatform, Platform = platform,
DeviceName = deviceName, DeviceNickname = deviceNickname,
ServerDefaults = serverDefaults, ServerDefaults = serverDefaults,
ServerIndex = _serverIndex, ServerIndex = _serverIndex,
ServerUrl = _serverUrl, ServerUrl = _serverUrl,

View File

@@ -87,10 +87,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;

View File

@@ -126,10 +126,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -803,10 +803,12 @@ namespace LukeHagar.PlexAPI.SDK
XPlexToken = xPlexToken, XPlexToken = xPlexToken,
}; };
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/providers", request);
var urlString = baseUrl + "/media/providers";
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
if (_securitySource != null) if (_securitySource != null)
{ {

View File

@@ -80,10 +80,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;

View File

@@ -71,10 +71,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;

View File

@@ -74,10 +74,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;

View File

@@ -62,10 +62,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;

View File

@@ -59,10 +59,10 @@ namespace LukeHagar.PlexAPI.SDK
}; };
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.8.4"; private const string _sdkVersion = "0.11.1";
private const string _sdkGenVersion = "2.426.2"; private const string _sdkGenVersion = "2.457.9";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.8.4 2.426.2 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.11.1 2.457.9 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -87,6 +87,7 @@ namespace LukeHagar.PlexAPI.SDK
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
if (_securitySource != null) if (_securitySource != null)
{ {

149
NUGET.md
View File

@@ -12,11 +12,11 @@ using LukeHagar.PlexAPI.SDK.Models.Components;
var sdk = new PlexAPI( var sdk = new PlexAPI(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
clientID: "gcgzw5rz2xovp84b4vha3a40", clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
clientName: "Plex Web", clientName: "Plex for Roku",
clientVersion: "4.133.0", clientVersion: "2.4.1",
clientPlatform: "Chrome", platform: "Roku",
deviceName: "Linux" deviceNickname: "Roku 3"
); );
var res = await sdk.Server.GetServerCapabilitiesAsync(); var res = await sdk.Server.GetServerCapabilitiesAsync();
@@ -25,69 +25,27 @@ var res = await sdk.Server.GetServerCapabilitiesAsync();
``` ```
<!-- End SDK Example Usage [usage] --> <!-- End SDK Example Usage [usage] -->
<!-- Start Global Parameters [global-parameters] -->
## Global Parameters
## Global Parameters
Certain parameters are configured globally. These parameters may be set on the SDK client instance itself during initialization. When configured as an option during SDK initialization, These global values will be used as defaults on the operations that use them. When such operations are called, there is a place in each to override the global value, if needed.
For example, you can set `ClientID` to `"gcgzw5rz2xovp84b4vha3a40"` at SDK initialization and then you do not have to pass the same value on calls to operations like `GetServerResources`. 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 parameters are available.
| Name | Type | Required | Description |
| ---- | ---- |:--------:| ----------- |
| clientID | 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)
|
| clientName | string | | The ClientName parameter. |
| clientVersion | string | | The ClientVersion parameter. |
| clientPlatform | string | | The ClientPlatform parameter. |
| deviceName | string | | The DeviceName parameter. |
### Example
```csharp
using LukeHagar.PlexAPI.SDK;
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Models.Components;
var sdk = new PlexAPI(
accessToken: "<YOUR_API_KEY_HERE>",
clientID: "gcgzw5rz2xovp84b4vha3a40",
clientName: "Plex Web",
clientVersion: "4.133.0",
clientPlatform: "Chrome",
deviceName: "Linux"
);
var res = await sdk.Plex.GetServerResourcesAsync(
includeHttps: LukeHagar.PlexAPI.SDK.Models.Requests.IncludeHttps.Enable,
includeRelay: LukeHagar.PlexAPI.SDK.Models.Requests.IncludeRelay.Enable,
includeIPv6: LukeHagar.PlexAPI.SDK.Models.Requests.IncludeIPv6.Enable,
clientID: "gcgzw5rz2xovp84b4vha3a40"
);
// handle response
```
<!-- End Global Parameters [global-parameters] -->
<!-- Start Error Handling [errors] --> <!-- Start Error Handling [errors] -->
## Error Handling ## Error Handling
Handling errors in this SDK should largely match your expectations. All operations return a response object or thow an exception. If Error objects are specified in your OpenAPI Spec, the SDK will raise the appropriate type. Handling errors in this SDK should largely match your expectations. All operations return a response object or throw an exception.
| Error Object | Status Code | Content Type | By default, an API error will raise a `LukeHagar.PlexAPI.SDK.Models.Errors.SDKException` exception, which has the following properties:
| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- |
| Property | Type | Description |
|---------------|-----------------------|-----------------------|
| `Message` | *string* | The error message |
| `StatusCode` | *int* | The HTTP status code |
| `RawResponse` | *HttpResponseMessage* | The raw HTTP response |
| `Body` | *string* | The response content |
When custom error responses are specified for an operation, the SDK may also throw their associated exceptions. You can refer to respective *Errors* tables in SDK docs for more details on possible exception types for each operation. For example, the `GetServerCapabilitiesAsync` method throws the following exceptions:
| Error Type | Status Code | Content Type |
| --------------------------------------------------------------------- | ----------- | ---------------- |
| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerCapabilitiesBadRequest | 400 | application/json | | LukeHagar.PlexAPI.SDK.Models.Errors.GetServerCapabilitiesBadRequest | 400 | application/json |
| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerCapabilitiesUnauthorized | 401 | application/json | | LukeHagar.PlexAPI.SDK.Models.Errors.GetServerCapabilitiesUnauthorized | 401 | application/json |
| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4xx-5xx | */* | | LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* |
### Example ### Example
@@ -99,11 +57,11 @@ using LukeHagar.PlexAPI.SDK.Models.Errors;
var sdk = new PlexAPI( var sdk = new PlexAPI(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
clientID: "gcgzw5rz2xovp84b4vha3a40", clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
clientName: "Plex Web", clientName: "Plex for Roku",
clientVersion: "4.133.0", clientVersion: "2.4.1",
clientPlatform: "Chrome", platform: "Roku",
deviceName: "Linux" deviceNickname: "Roku 3"
); );
try try
@@ -124,7 +82,7 @@ catch (Exception ex)
// Handle exception data // Handle exception data
throw; throw;
} }
else if (ex is Models.Errors.SDKException) else if (ex is LukeHagar.PlexAPI.SDK.Models.Errors.SDKException)
{ {
// Handle default exception // Handle default exception
throw; throw;
@@ -136,27 +94,34 @@ catch (Exception ex)
<!-- Start Server Selection [server] --> <!-- Start Server Selection [server] -->
## Server Selection ## Server Selection
### Select Server by Index ### Server Variables
You can override the default server globally by passing a server index to the `serverIndex: number` optional parameter when initializing the SDK client instance. The selected server will then be used as the default on the operations that use it. This table lists the indexes associated with the available servers: The default server `https://10.10.10.47:32400` contains variables and is set to `https://10.10.10.47:32400` by default. To override default values, the following parameters are available when initializing the SDK client instance:
| # | Server | Variables |
| - | ------ | --------- |
| 0 | `{protocol}://{ip}:{port}` | `protocol` (default is `https`), `ip` (default is `10.10.10.47`), `port` (default is `32400`) |
#### Variables
Some of the server options above contain variables. If you want to set the values of those variables, the following options are provided for doing so:
* `protocol: ServerProtocol` * `protocol: ServerProtocol`
* `ip: string` * `ip: string`
* `port: string` * `port: string`
### Override Server URL Per-Client ### Override Server URL Per-Client
The default server can also be overridden globally by passing a URL to the `serverUrl: str` optional parameter when initializing the SDK client instance. For example: The default server can also be overridden globally by passing a URL to the `serverUrl: string` optional parameter when initializing the SDK client instance. For example:
```csharp
using LukeHagar.PlexAPI.SDK;
using LukeHagar.PlexAPI.SDK.Models.Components;
var sdk = new PlexAPI(
serverUrl: "https://10.10.10.47:32400",
accessToken: "<YOUR_API_KEY_HERE>",
clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
clientName: "Plex for Roku",
clientVersion: "2.4.1",
platform: "Roku",
deviceNickname: "Roku 3"
);
var res = await sdk.Server.GetServerCapabilitiesAsync();
// handle response
```
### Override Server URL Per-Operation ### Override Server URL Per-Operation
@@ -167,11 +132,11 @@ using LukeHagar.PlexAPI.SDK.Models.Components;
var sdk = new PlexAPI( var sdk = new PlexAPI(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
clientID: "gcgzw5rz2xovp84b4vha3a40", clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
clientName: "Plex Web", clientName: "Plex for Roku",
clientVersion: "4.133.0", clientVersion: "2.4.1",
clientPlatform: "Chrome", platform: "Roku",
deviceName: "Linux" deviceNickname: "Roku 3"
); );
var res = await sdk.Plex.GetCompanionsDataAsync(serverUrl: "https://plex.tv/api/v2"); var res = await sdk.Plex.GetCompanionsDataAsync(serverUrl: "https://plex.tv/api/v2");
@@ -188,7 +153,7 @@ var res = await sdk.Plex.GetCompanionsDataAsync(serverUrl: "https://plex.tv/api/
This SDK supports the following security scheme globally: This SDK supports the following security scheme globally:
| Name | Type | Scheme | | Name | Type | Scheme |
| ------------- | ------------- | ------------- | | ------------- | ------ | ------- |
| `AccessToken` | apiKey | API key | | `AccessToken` | apiKey | API key |
To authenticate with the API the `AccessToken` parameter must be set when initializing the SDK client instance. For example: To authenticate with the API the `AccessToken` parameter must be set when initializing the SDK client instance. For example:
@@ -198,11 +163,11 @@ using LukeHagar.PlexAPI.SDK.Models.Components;
var sdk = new PlexAPI( var sdk = new PlexAPI(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
clientID: "gcgzw5rz2xovp84b4vha3a40", clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
clientName: "Plex Web", clientName: "Plex for Roku",
clientVersion: "4.133.0", clientVersion: "2.4.1",
clientPlatform: "Chrome", platform: "Roku",
deviceName: "Linux" deviceNickname: "Roku 3"
); );
var res = await sdk.Server.GetServerCapabilitiesAsync(); var res = await sdk.Server.GetServerCapabilitiesAsync();

151
README.md
View File

@@ -36,11 +36,11 @@ using LukeHagar.PlexAPI.SDK.Models.Components;
var sdk = new PlexAPI( var sdk = new PlexAPI(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
clientID: "gcgzw5rz2xovp84b4vha3a40", clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
clientName: "Plex Web", clientName: "Plex for Roku",
clientVersion: "4.133.0", clientVersion: "2.4.1",
clientPlatform: "Chrome", platform: "Roku",
deviceName: "Linux" deviceNickname: "Roku 3"
); );
var res = await sdk.Server.GetServerCapabilitiesAsync(); var res = await sdk.Server.GetServerCapabilitiesAsync();
@@ -91,6 +91,7 @@ var res = await sdk.Server.GetServerCapabilitiesAsync();
* [GetLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get Library Items * [GetLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get Library Items
* [GetRefreshLibraryMetadata](docs/sdks/library/README.md#getrefreshlibrarymetadata) - Refresh Metadata Of The Library * [GetRefreshLibraryMetadata](docs/sdks/library/README.md#getrefreshlibrarymetadata) - Refresh Metadata Of The Library
* [GetSearchLibrary](docs/sdks/library/README.md#getsearchlibrary) - Search Library * [GetSearchLibrary](docs/sdks/library/README.md#getsearchlibrary) - Search Library
* [GetSearchAllLibraries](docs/sdks/library/README.md#getsearchalllibraries) - Search All Libraries
* [GetMetaDataByRatingKey](docs/sdks/library/README.md#getmetadatabyratingkey) - Get Metadata by RatingKey * [GetMetaDataByRatingKey](docs/sdks/library/README.md#getmetadatabyratingkey) - Get Metadata by RatingKey
* [GetMetadataChildren](docs/sdks/library/README.md#getmetadatachildren) - Get Items Children * [GetMetadataChildren](docs/sdks/library/README.md#getmetadatachildren) - Get Items Children
* [GetTopWatchedContent](docs/sdks/library/README.md#gettopwatchedcontent) - Get Top Watched Content * [GetTopWatchedContent](docs/sdks/library/README.md#gettopwatchedcontent) - Get Top Watched Content
@@ -185,27 +186,34 @@ var res = await sdk.Server.GetServerCapabilitiesAsync();
<!-- Start Server Selection [server] --> <!-- Start Server Selection [server] -->
## Server Selection ## Server Selection
### Select Server by Index ### Server Variables
You can override the default server globally by passing a server index to the `serverIndex: number` optional parameter when initializing the SDK client instance. The selected server will then be used as the default on the operations that use it. This table lists the indexes associated with the available servers: The default server `{protocol}://{ip}:{port}` contains variables and is set to `https://10.10.10.47:32400` by default. To override default values, the following parameters are available when initializing the SDK client instance:
| # | Server | Variables |
| - | ------ | --------- |
| 0 | `{protocol}://{ip}:{port}` | `protocol` (default is `https`), `ip` (default is `10.10.10.47`), `port` (default is `32400`) |
#### Variables
Some of the server options above contain variables. If you want to set the values of those variables, the following options are provided for doing so:
* `protocol: ServerProtocol` * `protocol: ServerProtocol`
* `ip: string` * `ip: string`
* `port: string` * `port: string`
### Override Server URL Per-Client ### Override Server URL Per-Client
The default server can also be overridden globally by passing a URL to the `serverUrl: str` optional parameter when initializing the SDK client instance. For example: The default server can also be overridden globally by passing a URL to the `serverUrl: string` optional parameter when initializing the SDK client instance. For example:
```csharp
using LukeHagar.PlexAPI.SDK;
using LukeHagar.PlexAPI.SDK.Models.Components;
var sdk = new PlexAPI(
serverUrl: "https://10.10.10.47:32400",
accessToken: "<YOUR_API_KEY_HERE>",
clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
clientName: "Plex for Roku",
clientVersion: "2.4.1",
platform: "Roku",
deviceNickname: "Roku 3"
);
var res = await sdk.Server.GetServerCapabilitiesAsync();
// handle response
```
### Override Server URL Per-Operation ### Override Server URL Per-Operation
@@ -216,11 +224,11 @@ using LukeHagar.PlexAPI.SDK.Models.Components;
var sdk = new PlexAPI( var sdk = new PlexAPI(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
clientID: "gcgzw5rz2xovp84b4vha3a40", clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
clientName: "Plex Web", clientName: "Plex for Roku",
clientVersion: "4.133.0", clientVersion: "2.4.1",
clientPlatform: "Chrome", platform: "Roku",
deviceName: "Linux" deviceNickname: "Roku 3"
); );
var res = await sdk.Plex.GetCompanionsDataAsync(serverUrl: "https://plex.tv/api/v2"); var res = await sdk.Plex.GetCompanionsDataAsync(serverUrl: "https://plex.tv/api/v2");
@@ -237,7 +245,7 @@ var res = await sdk.Plex.GetCompanionsDataAsync(serverUrl: "https://plex.tv/api/
This SDK supports the following security scheme globally: This SDK supports the following security scheme globally:
| Name | Type | Scheme | | Name | Type | Scheme |
| ------------- | ------------- | ------------- | | ------------- | ------ | ------- |
| `AccessToken` | apiKey | API key | | `AccessToken` | apiKey | API key |
To authenticate with the API the `AccessToken` parameter must be set when initializing the SDK client instance. For example: To authenticate with the API the `AccessToken` parameter must be set when initializing the SDK client instance. For example:
@@ -247,11 +255,11 @@ using LukeHagar.PlexAPI.SDK.Models.Components;
var sdk = new PlexAPI( var sdk = new PlexAPI(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
clientID: "gcgzw5rz2xovp84b4vha3a40", clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
clientName: "Plex Web", clientName: "Plex for Roku",
clientVersion: "4.133.0", clientVersion: "2.4.1",
clientPlatform: "Chrome", platform: "Roku",
deviceName: "Linux" deviceNickname: "Roku 3"
); );
var res = await sdk.Server.GetServerCapabilitiesAsync(); var res = await sdk.Server.GetServerCapabilitiesAsync();
@@ -260,69 +268,27 @@ var res = await sdk.Server.GetServerCapabilitiesAsync();
``` ```
<!-- End Authentication [security] --> <!-- End Authentication [security] -->
<!-- Start Global Parameters [global-parameters] -->
## Global Parameters
## Global Parameters
Certain parameters are configured globally. These parameters may be set on the SDK client instance itself during initialization. When configured as an option during SDK initialization, These global values will be used as defaults on the operations that use them. When such operations are called, there is a place in each to override the global value, if needed.
For example, you can set `ClientID` to `"gcgzw5rz2xovp84b4vha3a40"` at SDK initialization and then you do not have to pass the same value on calls to operations like `GetServerResources`. 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 parameters are available.
| Name | Type | Required | Description |
| ---- | ---- |:--------:| ----------- |
| clientID | 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)
|
| clientName | string | | The ClientName parameter. |
| clientVersion | string | | The ClientVersion parameter. |
| clientPlatform | string | | The ClientPlatform parameter. |
| deviceName | string | | The DeviceName parameter. |
### Example
```csharp
using LukeHagar.PlexAPI.SDK;
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Models.Components;
var sdk = new PlexAPI(
accessToken: "<YOUR_API_KEY_HERE>",
clientID: "gcgzw5rz2xovp84b4vha3a40",
clientName: "Plex Web",
clientVersion: "4.133.0",
clientPlatform: "Chrome",
deviceName: "Linux"
);
var res = await sdk.Plex.GetServerResourcesAsync(
includeHttps: LukeHagar.PlexAPI.SDK.Models.Requests.IncludeHttps.Enable,
includeRelay: LukeHagar.PlexAPI.SDK.Models.Requests.IncludeRelay.Enable,
includeIPv6: LukeHagar.PlexAPI.SDK.Models.Requests.IncludeIPv6.Enable,
clientID: "gcgzw5rz2xovp84b4vha3a40"
);
// handle response
```
<!-- End Global Parameters [global-parameters] -->
<!-- Start Error Handling [errors] --> <!-- Start Error Handling [errors] -->
## Error Handling ## Error Handling
Handling errors in this SDK should largely match your expectations. All operations return a response object or thow an exception. If Error objects are specified in your OpenAPI Spec, the SDK will raise the appropriate type. Handling errors in this SDK should largely match your expectations. All operations return a response object or throw an exception.
| Error Object | Status Code | Content Type | By default, an API error will raise a `LukeHagar.PlexAPI.SDK.Models.Errors.SDKException` exception, which has the following properties:
| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- |
| Property | Type | Description |
|---------------|-----------------------|-----------------------|
| `Message` | *string* | The error message |
| `StatusCode` | *int* | The HTTP status code |
| `RawResponse` | *HttpResponseMessage* | The raw HTTP response |
| `Body` | *string* | The response content |
When custom error responses are specified for an operation, the SDK may also throw their associated exceptions. You can refer to respective *Errors* tables in SDK docs for more details on possible exception types for each operation. For example, the `GetServerCapabilitiesAsync` method throws the following exceptions:
| Error Type | Status Code | Content Type |
| --------------------------------------------------------------------- | ----------- | ---------------- |
| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerCapabilitiesBadRequest | 400 | application/json | | LukeHagar.PlexAPI.SDK.Models.Errors.GetServerCapabilitiesBadRequest | 400 | application/json |
| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerCapabilitiesUnauthorized | 401 | application/json | | LukeHagar.PlexAPI.SDK.Models.Errors.GetServerCapabilitiesUnauthorized | 401 | application/json |
| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4xx-5xx | */* | | LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* |
### Example ### Example
@@ -334,11 +300,11 @@ using LukeHagar.PlexAPI.SDK.Models.Errors;
var sdk = new PlexAPI( var sdk = new PlexAPI(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
clientID: "gcgzw5rz2xovp84b4vha3a40", clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
clientName: "Plex Web", clientName: "Plex for Roku",
clientVersion: "4.133.0", clientVersion: "2.4.1",
clientPlatform: "Chrome", platform: "Roku",
deviceName: "Linux" deviceNickname: "Roku 3"
); );
try try
@@ -359,7 +325,7 @@ catch (Exception ex)
// Handle exception data // Handle exception data
throw; throw;
} }
else if (ex is Models.Errors.SDKException) else if (ex is LukeHagar.PlexAPI.SDK.Models.Errors.SDKException)
{ {
// Handle default exception // Handle default exception
throw; throw;
@@ -405,7 +371,6 @@ The following SDKs are generated from the OpenAPI Specification. They are automa
* [SDK Installation](#sdk-installation) * [SDK Installation](#sdk-installation)
* [SDK Example Usage](#sdk-example-usage) * [SDK Example Usage](#sdk-example-usage)
* [Available Resources and Operations](#available-resources-and-operations) * [Available Resources and Operations](#available-resources-and-operations)
* [Global Parameters](#global-parameters)
* [Error Handling](#error-handling) * [Error Handling](#error-handling)
* [Server Selection](#server-selection) * [Server Selection](#server-selection)
* [Authentication](#authentication) * [Authentication](#authentication)

View File

@@ -305,3 +305,93 @@ Based on:
- [csharp v0.8.4] . - [csharp v0.8.4] .
### Releases ### Releases
- [NuGet v0.8.4] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.8.4 - . - [NuGet v0.8.4] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.8.4 - .
## 2024-09-30 08:46:19
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.404.5 (2.426.2) https://github.com/speakeasy-api/speakeasy
### Generated
- [csharp v0.8.5] .
### Releases
- [NuGet v0.8.5] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.8.5 - .
## 2024-09-30 17:22:05
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.405.4 (2.428.1) https://github.com/speakeasy-api/speakeasy
### Generated
- [csharp v0.8.6] .
### Releases
- [NuGet v0.8.6] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.8.6 - .
## 2024-09-30 17:35:18
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.405.4 (2.428.1) https://github.com/speakeasy-api/speakeasy
### Generated
- [csharp v0.8.7] .
### Releases
- [NuGet v0.8.7] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.8.7 - .
## 2024-10-02 09:48:21
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.405.8 (2.429.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [csharp v0.9.0] .
### Releases
- [NuGet v0.9.0] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.9.0 - .
## 2024-10-02 10:45:12
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.405.8 (2.429.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [csharp v0.9.1] .
### Releases
- [NuGet v0.9.1] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.9.1 - .
## 2024-10-02 11:09:36
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.405.8 (2.429.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [csharp v0.9.2] .
### Releases
- [NuGet v0.9.2] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.9.2 - .
## 2024-10-03 12:24:46
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.406.0 (2.429.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [csharp v0.10.0] .
### Releases
- [NuGet v0.10.0] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.10.0 - .
## 2024-11-12 00:20:30
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.438.1 (2.457.2) https://github.com/speakeasy-api/speakeasy
### Generated
- [csharp v0.11.0] .
### Releases
- [NuGet v0.11.0] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.11.0 - .
## 2024-11-14 00:20:57
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.438.3 (2.457.9) https://github.com/speakeasy-api/speakeasy
### Generated
- [csharp v0.11.1] .
### Releases
- [NuGet v0.11.1] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.11.1 - .

View File

@@ -5,11 +5,11 @@ using LukeHagar.PlexAPI.SDK.Models.Components;
var sdk = new PlexAPI( var sdk = new PlexAPI(
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
clientID: "gcgzw5rz2xovp84b4vha3a40", clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
clientName: "Plex Web", clientName: "Plex for Roku",
clientVersion: "4.133.0", clientVersion: "2.4.1",
clientPlatform: "Chrome", platform: "Roku",
deviceName: "Linux" deviceNickname: "Roku 3"
); );
var res = await sdk.Server.GetServerCapabilitiesAsync(); var res = await sdk.Server.GetServerCapabilitiesAsync();

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
# GetSearchAllLibrariesBadRequest
Bad Request - A parameter was not specified, or was specified incorrectly.
## Fields
| Field | Type | Required | Description |
| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `Errors` | List<[GetSearchAllLibrariesErrors](../../Models/Errors/GetSearchAllLibrariesErrors.md)> | :heavy_minus_sign: | N/A |
| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing |

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