Compare commits

...

2 Commits

Author SHA1 Message Date
speakeasybot
c0836c3b34 ## Csharp SDK Changes:
* `PlexApi.LibraryPlaylists.AddPlaylistItems()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.LibraryPlaylists.ClearPlaylistItems()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.LibraryCollections.MoveCollectionItem()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.LibraryCollections.DeleteCollectionItem()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.LibraryCollections.AddCollectionItems()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Content.GetSonicallySimilar()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Butler.StopTask()`:  `request` **Changed** **Breaking** ⚠️
* `PlexApi.Butler.StartTask()`:  `request` **Changed** **Breaking** ⚠️
* `PlexApi.Content.GetSonicPath()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.DownloadQueue.GetItemDecision()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Hubs.GetAllHubs()`: 
  *  `request.OnlyTransient` **Changed**
  *  `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Hubs.GetContinueWatching()`:  `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Hubs.GetPromotedHubs()`:  `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Hubs.GetMetadataHubs()`: 
  *  `request.OnlyTransient` **Changed**
  *  `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Hubs.GetPostplayHubs()`: 
  *  `request.OnlyTransient` **Changed**
  *  `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Hubs.GetRelatedHubs()`: 
  *  `request.OnlyTransient` **Changed**
  *  `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Hubs.GetSectionHubs()`: 
  *  `request.OnlyTransient` **Changed**
  *  `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Content.GetAllLeaves()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Content.ListContent()`: 
  *  `request` **Changed**
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Search.SearchHubs()`:  `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Content.GetAlbums()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetLibraryItems()`: 
  *  `request.MediaQuery` **Changed**
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.IngestTransientItem()`: 
  *  `request` **Changed**
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetLibraryMatches()`: 
  *  `request` **Changed** **Breaking** ⚠️
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Content.GetMetadataItem()`: 
  *  `request` **Changed**
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetSections()`:  `response.mediaContainer.Directory.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.AddSection()`: 
  *  `request` **Changed**
  *  `response.mediaContainer.Directory.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetTags()`: 
  *  `request.Type` **Changed** **Breaking** ⚠️
* `PlexApi.Content.GetCollectionItems()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetAllItemLeaves()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Status.ListSessions()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.PlayQueue.MovePlayQueueItem()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetExtras()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.PlayQueue.DeletePlayQueueItem()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.PlayQueue.Unshuffle()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.ListMatches()`: 
  *  `request.Manual` **Changed**
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.ListSonicallySimilar()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.PlayQueue.Shuffle()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetRelatedItems()`:  `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.ListSimilar()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.PlayQueue.ResetPlayQueue()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetItemTree()`:  `response.mediaContainer.MetadataItem.[]` **Changed** **Breaking** ⚠️
* `PlexApi.PlayQueue.ClearPlayQueue()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.PlayQueue.AddToPlayQueue()`: 
  *  `request.Next` **Changed**
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetCommon()`: 
  *  `request.MediaQuery` **Changed**
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetPerson()`:  `response.mediaContainer.Directory.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.ListPersonMedia()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.PlayQueue.GetPlayQueue()`: 
  *  `request` **Changed**
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetLibraryDetails()`: 
  *  `request.IncludeDetails` **Changed**
  *  `response.mediaContainer.Directory.[]` **Changed** **Breaking** ⚠️
* `PlexApi.LibraryPlaylists.MovePlaylistItem()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.Autocomplete()`: 
  *  `request.MediaQuery` **Changed**
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Library.GetCollections()`: 
  *  `request.MediaQuery` **Changed**
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.LibraryPlaylists.GetPlaylistGeneratorItems()`:  `response.mediaContainer.Metadata` **Changed** **Breaking** ⚠️
* `PlexApi.LibraryPlaylists.DeletePlaylistItem()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Search.VoiceSearchHubs()`: 
  *  `request.Type` **Changed** **Breaking** ⚠️
  *  `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.LibraryPlaylists.CreatePlaylist()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Playlist.GetPlaylistItems()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Playlist.GetPlaylist()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Playlist.ListPlaylists()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Collections.CreateCollection()`: 
  *  `request.Type` **Changed** **Breaking** ⚠️
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.DvRs.TuneChannel()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.LiveTv.GetSessions()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.LiveTv.GetLiveTvSession()`:  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Transcoder.MakeDecision()`: 
  *  `request` **Changed**
  *  `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️
* `PlexApi.Subscriptions.GetAllSubscriptions()`: 
  *  `request` **Changed**
  *  `response.mediaContainer.MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️
* `PlexApi.Subscriptions.CreateSubscription()`:  `response.mediaContainer.MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️
* `PlexApi.Subscriptions.GetScheduledRecordings()`:  `response.mediaContainer.MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️
* `PlexApi.Subscriptions.GetTemplate()`:  `response.mediaContainer.SubscriptionTemplate.[].MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️
* `PlexApi.Subscriptions.GetSubscription()`: 
  *  `request` **Changed**
  *  `response.mediaContainer.MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️
* `PlexApi.Subscriptions.EditSubscriptionPreferences()`:  `response.mediaContainer.MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️
* `PlexApi.Subscriptions.ReorderSubscription()`:  `response.mediaContainer.MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️
* `PlexApi.Library.AddSubtitles()`:  `request` **Changed**
* `PlexApi.LibraryPlaylists.UploadPlaylist()`: 
  *  `request.Force` **Changed**
* `PlexApi.Transcoder.TranscodeSubtitles()`:  `request` **Changed**
* `PlexApi.Transcoder.StartTranscodeSession()`:  `request` **Changed**
* `PlexApi.Library.GetMediaPart()`: 
  *  `request.Download` **Changed**
* `PlexApi.Library.DetectIntros()`: 
  *  `request.Force` **Changed**
* `PlexApi.Library.GetSectionImage()`: 
  *  `request.MediaQuery` **Changed**
* `PlexApi.Library.DeleteMediaItem()`: 
  *  `request.Proxy` **Changed**
* `PlexApi.Library.RefreshItemsMetadata()`: 
  *  `request.MarkUpdated` **Changed**
* `PlexApi.Authentication.Post-Users-Sign-In-Data()`: **Added**
* `PlexApi.Authentication.GetTokenDetails()`: **Added**
* `PlexApi.Library.DetectCredits()`:  `request` **Changed**
* `PlexApi.Library.SetStreamSelection()`: 
  *  `request.AllParts` **Changed**
* `PlexApi.Library.UpdateItems()`: 
  *  `request.Field.locked` **Changed**
* `PlexApi.PlayQueue.CreatePlayQueue()`:  `request` **Changed**
* `PlexApi.Library.DeleteLibrarySection()`: 
  *  `request.Async` **Changed**
* `PlexApi.Library.GetAugmentationStatus()`: 
  *  `request.Wait` **Changed**
* `PlexApi.Transcoder.TranscodeImage()`:  `request` **Changed**
* `PlexApi.Devices.ModifyDevice()`: 
  *  `request.Enabled` **Changed**
* `PlexApi.Library.DetectVoiceActivity()`:  `request` **Changed**
* `PlexApi.Library.GetStream()`: 
  *  `request.AutoAdjustSubtitle` **Changed**
* `PlexApi.Library.StartBifGeneration()`: 
  *  `request.Force` **Changed**
* `PlexApi.Library.GetFirstCharacters()`: 
  *  `request.MediaQuery` **Changed**
* `PlexApi.UltraBlur.GetImage()`: 
  *  `request.Noise` **Changed**
* `PlexApi.Library.GenerateThumbs()`: 
  *  `request.Force` **Changed**
* `PlexApi.Updater.ApplyUpdates()`:  `request` **Changed**
* `PlexApi.Updater.CheckUpdates()`: 
  *  `request.Download` **Changed**
* `PlexApi.Library.DeleteMetadataItem()`: 
  *  `request.Proxy` **Changed**
* `PlexApi.Library.OptimizeDatabase()`: 
  *  `request.Async` **Changed**
* `PlexApi.Library.RefreshSection()`: 
  *  `request.Force` **Changed**
* `PlexApi.Hubs.UpdateHubVisibility()`:  `request` **Changed**
* `PlexApi.Hubs.CreateCustomHub()`:  `request` **Changed**
* `PlexApi.DownloadQueue.AddDownloadQueueItems()`:  `request` **Changed**
* `PlexApi.Timeline.Report()`:  `request` **Changed**
* `PlexApi.General.GetSourceConnectionInformation()`: 
  *  `request.Refresh` **Changed**
* `PlexApi.Plex.Get-Server-Resources()`: **Added**
* `PlexApi.Users.Get-Users()`: **Added**
2025-12-01 00:32:52 +00:00
speakeasybot
70dbffa1d4 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.656.1 2025-11-13 00:26:46 +00:00
356 changed files with 10222 additions and 2404 deletions

File diff suppressed because one or more lines are too long

View File

@@ -25,7 +25,7 @@ generation:
generateNewTests: false generateNewTests: false
skipResponseBodyAssertions: false skipResponseBodyAssertions: false
csharp: csharp:
version: 0.19.0 version: 0.20.0
additionalDependencies: [] additionalDependencies: []
author: LukeHagar author: LukeHagar
baseErrorName: PlexAPIError baseErrorName: PlexAPIError
@@ -47,9 +47,11 @@ csharp:
shared: Models/Components shared: Models/Components
webhooks: Models/Webhooks webhooks: Models/Webhooks
includeDebugSymbols: true includeDebugSymbols: true
inferUnionDiscriminators: false
inputModelSuffix: input inputModelSuffix: input
maxMethodParams: 4 maxMethodParams: 4
methodArguments: infer-optional-args methodArguments: infer-optional-args
multipartArrayFormat: legacy
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.650.0 speakeasyVersion: 1.665.0
sources: sources:
my-source: my-source:
sourceNamespace: my-source sourceNamespace: my-source
@@ -16,20 +16,20 @@ sources:
- main - main
plexapi: plexapi:
sourceNamespace: plexapi sourceNamespace: plexapi
sourceRevisionDigest: sha256:03b08b3b9bc9b0b48588eaa1f2b3774e7809a8ddd6071176c73215531ca535a5 sourceRevisionDigest: sha256:ace004a3b232e8ab9ca3d89f2da8e40470236e6d997073a16c3f8872d67a7383
sourceBlobDigest: sha256:1e9fb72587f46b9af45ca38a4c3d1c21e02813caf19ac554c1b22f31f415a202 sourceBlobDigest: sha256:993bfb796a3833b0a3b813ad12469ca34db94f23c2d15ae988a26b4d1ed80fbe
tags: tags:
- latest - latest
- speakeasy-sdk-regen-1762467850 - speakeasy-sdk-regen-1764549074
- 1.1.1 - 1.1.1
targets: targets:
plexcsharp: plexcsharp:
source: plexapi source: plexapi
sourceNamespace: plexapi sourceNamespace: plexapi
sourceRevisionDigest: sha256:03b08b3b9bc9b0b48588eaa1f2b3774e7809a8ddd6071176c73215531ca535a5 sourceRevisionDigest: sha256:ace004a3b232e8ab9ca3d89f2da8e40470236e6d997073a16c3f8872d67a7383
sourceBlobDigest: sha256:1e9fb72587f46b9af45ca38a4c3d1c21e02813caf19ac554c1b22f31f415a202 sourceBlobDigest: sha256:993bfb796a3833b0a3b813ad12469ca34db94f23c2d15ae988a26b4d1ed80fbe
codeSamplesNamespace: code-samples-csharp-plexcsharp codeSamplesNamespace: code-samples-csharp-plexcsharp
codeSamplesRevisionDigest: sha256:8a32f0ee4f35ea29b319f361f745d456ee8186d595b8058fb1b172632b747196 codeSamplesRevisionDigest: sha256:1608b54b5bd352a497de07a555fe755ff438efc7fd0d0f42fb1021dda420e88f
workflow: workflow:
workflowVersion: 1.0.0 workflowVersion: 1.0.0
speakeasyVersion: latest speakeasyVersion: latest

View File

@@ -69,10 +69,11 @@ namespace LukeHagar.PlexAPI.SDK
public class Activities: IActivities public class Activities: IActivities
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public Activities(SDKConfig config) public Activities(SDKConfig config)
{ {
@@ -187,7 +188,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/activities/{activityId}", request); var urlString = URLBuilder.Build(baseUrl, "/activities/{activityId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -0,0 +1,372 @@
//------------------------------------------------------------------------------
// <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
{
using LukeHagar.PlexAPI.SDK.Hooks;
using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Models.Errors;
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using LukeHagar.PlexAPI.SDK.Utils.Retries;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
public interface IAuthentication
{
/// <summary>
/// Get Token Details
///
/// <remarks>
/// Get the User data from the provided X-Plex-Token
/// </remarks>
/// </summary>
Task<GetTokenDetailsResponse> GetTokenDetailsAsync(GetTokenDetailsRequest? request = null, string? serverUrl = null);
/// <summary>
/// Get User Sign In Data
///
/// <remarks>
/// Sign in user with username and password and return user data with Plex authentication token
/// </remarks>
/// </summary>
Task<PostUsersSignInDataResponse> PostUsersSignInDataAsync(PostUsersSignInDataRequest? request = null, string? serverUrl = null);
}
public class Authentication: IAuthentication
{
/// <summary>
/// List of server URLs available for the getTokenDetails operation.
/// </summary>
public static readonly string[] GetTokenDetailsServerList = {
"https://plex.tv/api/v2",
};
/// <summary>
/// List of server URLs available for the post-users-sign-in-data operation.
/// </summary>
public static readonly string[] PostUsersSignInDataServerList = {
"https://plex.tv/api/v2",
};
public SDKConfig SDKConfiguration { get; private set; }
private const string _language = Constants.Language;
private const string _sdkVersion = Constants.SdkVersion;
private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public Authentication(SDKConfig config)
{
SDKConfiguration = config;
}
public async Task<GetTokenDetailsResponse> GetTokenDetailsAsync(GetTokenDetailsRequest? request = null, string? serverUrl = null)
{
request.Accepts ??= SDKConfiguration.Accepts;
request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier;
request.Product ??= SDKConfiguration.Product;
request.Version ??= SDKConfiguration.Version;
request.Platform ??= SDKConfiguration.Platform;
request.PlatformVersion ??= SDKConfiguration.PlatformVersion;
request.Device ??= SDKConfiguration.Device;
request.Model ??= SDKConfiguration.Model;
request.DeviceVendor ??= SDKConfiguration.DeviceVendor;
request.DeviceName ??= SDKConfiguration.DeviceName;
request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = Utilities.TemplateUrl(GetTokenDetailsServerList[0], new Dictionary<string, string>(){
});
if (serverUrl != null)
{
baseUrl = serverUrl;
}
var urlString = baseUrl + "/user";
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
if (SDKConfiguration.SecuritySource != null)
{
httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest);
}
var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getTokenDetails", null, SDKConfiguration.SecuritySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
HttpResponseMessage httpResponse;
try
{
httpResponse = await SDKConfiguration.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 httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
UserPlexAccount obj;
try
{
obj = ResponseBodyDeserializer.DeserializeNotNull<UserPlexAccount>(httpResponseBody, NullValueHandling.Include);
}
catch (Exception ex)
{
throw new ResponseValidationException("Failed to deserialize response body into UserPlexAccount.", httpResponse, httpResponseBody, ex);
}
var response = new GetTokenDetailsResponse()
{
StatusCode = responseStatusCode,
ContentType = contentType,
RawResponse = httpResponse
};
response.UserPlexAccount = obj;
return response;
}
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
else if(responseStatusCode == 400)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
GetTokenDetailsBadRequestPayload payload;
try
{
payload = ResponseBodyDeserializer.DeserializeNotNull<GetTokenDetailsBadRequestPayload>(httpResponseBody, NullValueHandling.Include);
}
catch (Exception ex)
{
throw new ResponseValidationException("Failed to deserialize response body into GetTokenDetailsBadRequestPayload.", httpResponse, httpResponseBody, ex);
}
payload.RawResponse = httpResponse;
throw new GetTokenDetailsBadRequest(payload, httpResponse, httpResponseBody);
}
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
else if(responseStatusCode == 401)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
GetTokenDetailsUnauthorizedPayload payload;
try
{
payload = ResponseBodyDeserializer.DeserializeNotNull<GetTokenDetailsUnauthorizedPayload>(httpResponseBody, NullValueHandling.Include);
}
catch (Exception ex)
{
throw new ResponseValidationException("Failed to deserialize response body into GetTokenDetailsUnauthorizedPayload.", httpResponse, httpResponseBody, ex);
}
payload.RawResponse = httpResponse;
throw new GetTokenDetailsUnauthorized(payload, httpResponse, httpResponseBody);
}
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
else if(responseStatusCode >= 400 && responseStatusCode < 500)
{
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
else if(responseStatusCode >= 500 && responseStatusCode < 600)
{
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
public async Task<PostUsersSignInDataResponse> PostUsersSignInDataAsync(PostUsersSignInDataRequest? request = null, string? serverUrl = null)
{
request.Accepts ??= SDKConfiguration.Accepts;
request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier;
request.Product ??= SDKConfiguration.Product;
request.Version ??= SDKConfiguration.Version;
request.Platform ??= SDKConfiguration.Platform;
request.PlatformVersion ??= SDKConfiguration.PlatformVersion;
request.Device ??= SDKConfiguration.Device;
request.Model ??= SDKConfiguration.Model;
request.DeviceVendor ??= SDKConfiguration.DeviceVendor;
request.DeviceName ??= SDKConfiguration.DeviceName;
request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = Utilities.TemplateUrl(PostUsersSignInDataServerList[0], new Dictionary<string, string>(){
});
if (serverUrl != null)
{
baseUrl = serverUrl;
}
var urlString = baseUrl + "/users/signin";
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "form", false, true);
if (serializedBody != null)
{
httpRequest.Content = serializedBody;
}
var hookCtx = new HookContext(SDKConfiguration, baseUrl, "post-users-sign-in-data", null, null);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
HttpResponseMessage httpResponse;
try
{
httpResponse = await SDKConfiguration.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 == 201)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
PostUsersSignInDataUserPlexAccount obj;
try
{
obj = ResponseBodyDeserializer.DeserializeNotNull<PostUsersSignInDataUserPlexAccount>(httpResponseBody, NullValueHandling.Include);
}
catch (Exception ex)
{
throw new ResponseValidationException("Failed to deserialize response body into PostUsersSignInDataUserPlexAccount.", httpResponse, httpResponseBody, ex);
}
var response = new PostUsersSignInDataResponse()
{
StatusCode = responseStatusCode,
ContentType = contentType,
RawResponse = httpResponse
};
response.UserPlexAccount = obj;
return response;
}
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
else if(responseStatusCode == 400)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
PostUsersSignInDataBadRequestPayload payload;
try
{
payload = ResponseBodyDeserializer.DeserializeNotNull<PostUsersSignInDataBadRequestPayload>(httpResponseBody, NullValueHandling.Include);
}
catch (Exception ex)
{
throw new ResponseValidationException("Failed to deserialize response body into PostUsersSignInDataBadRequestPayload.", httpResponse, httpResponseBody, ex);
}
payload.RawResponse = httpResponse;
throw new PostUsersSignInDataBadRequest(payload, httpResponse, httpResponseBody);
}
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
else if(responseStatusCode == 401)
{
if(Utilities.IsContentTypeMatch("application/json", contentType))
{
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
PostUsersSignInDataUnauthorizedPayload payload;
try
{
payload = ResponseBodyDeserializer.DeserializeNotNull<PostUsersSignInDataUnauthorizedPayload>(httpResponseBody, NullValueHandling.Include);
}
catch (Exception ex)
{
throw new ResponseValidationException("Failed to deserialize response body into PostUsersSignInDataUnauthorizedPayload.", httpResponse, httpResponseBody, ex);
}
payload.RawResponse = httpResponse;
throw new PostUsersSignInDataUnauthorized(payload, httpResponse, httpResponseBody);
}
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
else if(responseStatusCode >= 400 && responseStatusCode < 500)
{
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
else if(responseStatusCode >= 500 && responseStatusCode < 600)
{
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
}
}
}

View File

@@ -89,10 +89,11 @@ namespace LukeHagar.PlexAPI.SDK
public class Butler: IButler public class Butler: IButler
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public Butler(SDKConfig config) public Butler(SDKConfig config)
{ {
@@ -349,7 +350,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/butler/{task}", request); var urlString = URLBuilder.Build(baseUrl, "/butler/{butlerTask}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -436,7 +437,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/butler/{task}", request); var urlString = URLBuilder.Build(baseUrl, "/butler/{butlerTask}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -44,10 +44,11 @@ namespace LukeHagar.PlexAPI.SDK
public class Collections: ICollections public class Collections: ICollections
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public Collections(SDKConfig config) public Collections(SDKConfig config)
{ {
@@ -73,7 +74,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/collections", request); var urlString = URLBuilder.Build(baseUrl, "/library/collections", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -152,10 +152,11 @@ namespace LukeHagar.PlexAPI.SDK
public class Content: IContent public class Content: IContent
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public Content(SDKConfig config) public Content(SDKConfig config)
{ {
@@ -181,7 +182,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items", request); var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -286,7 +287,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -391,7 +392,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/albums", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/albums", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -496,7 +497,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/all", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/all", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -601,7 +602,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/allLeaves", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/allLeaves", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -706,7 +707,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/arts", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/arts", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -811,7 +812,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/categories", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/categories", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -916,7 +917,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/cluster", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/cluster", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1021,7 +1022,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/computePath", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/computePath", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1126,7 +1127,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/location", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/location", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1231,7 +1232,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/moment", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/moment", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1336,7 +1337,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/nearest", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/nearest", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1441,7 +1442,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/composite/{updatedAt}", request); var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/composite/{updatedAt}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -151,10 +151,11 @@ namespace LukeHagar.PlexAPI.SDK
public class DVRs: IDVRs public class DVRs: IDVRs
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public DVRs(SDKConfig config) public DVRs(SDKConfig config)
{ {
@@ -265,7 +266,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -370,7 +371,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -457,7 +458,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -562,7 +563,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/lineups", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/lineups", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -667,7 +668,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/lineups", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/lineups", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -772,7 +773,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/prefs", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/prefs", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -877,7 +878,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/reloadGuide", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/reloadGuide", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -964,7 +965,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/reloadGuide", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/reloadGuide", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1051,7 +1052,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/channels/{channel}/tune", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/channels/{channel}/tune", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1156,7 +1157,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/devices/{deviceId}", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/devices/{deviceId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1261,7 +1262,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/devices/{deviceId}", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/devices/{deviceId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -226,10 +226,11 @@ namespace LukeHagar.PlexAPI.SDK
public class Devices: IDevices public class Devices: IDevices
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public Devices(SDKConfig config) public Devices(SDKConfig config)
{ {
@@ -251,7 +252,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/grabbers", request); var urlString = URLBuilder.Build(baseUrl, "/media/grabbers", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -441,7 +442,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices", request); var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -635,7 +636,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}", request); var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -740,7 +741,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}", request); var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -845,7 +846,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}", request); var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -950,7 +951,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/channelmap", request); var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/channelmap", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1055,7 +1056,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/channels", request); var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/channels", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1160,7 +1161,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/prefs", request); var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/prefs", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1247,7 +1248,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/scan", request); var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/scan", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1352,7 +1353,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/scan", request); var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/scan", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1457,7 +1458,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/thumb/{version}", request); var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/thumb/{version}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -140,10 +140,11 @@ namespace LukeHagar.PlexAPI.SDK
public class DownloadQueue: IDownloadQueue public class DownloadQueue: IDownloadQueue
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public DownloadQueue(SDKConfig config) public DownloadQueue(SDKConfig config)
{ {
@@ -258,7 +259,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}", request); var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -363,7 +364,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/add", request); var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/add", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -468,7 +469,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items", request); var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -573,7 +574,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/item/{itemId}/decision", request); var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/item/{itemId}/decision", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -678,7 +679,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/item/{itemId}/media", request); var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/item/{itemId}/media", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -769,7 +770,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items/{itemId}", request); var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items/{itemId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -856,7 +857,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items/{itemId}", request); var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items/{itemId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -961,7 +962,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items/{itemId}/restart", request); var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items/{itemId}/restart", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -124,10 +124,11 @@ namespace LukeHagar.PlexAPI.SDK
public class Epg: IEpg public class Epg: IEpg
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public Epg(SDKConfig config) public Epg(SDKConfig config)
{ {
@@ -153,7 +154,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/channelmap", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/channelmap", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -258,7 +259,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/channels", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/channels", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -541,7 +542,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/lineup", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/lineup", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -628,7 +629,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/lineupchannels", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/lineupchannels", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -733,7 +734,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/lineups", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/lineups", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -838,7 +839,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/regions", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/regions", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -943,7 +944,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -64,10 +64,11 @@ namespace LukeHagar.PlexAPI.SDK
public class Events: IEvents public class Events: IEvents
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public Events(SDKConfig config) public Events(SDKConfig config)
{ {
@@ -89,7 +90,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/:/eventsource/notifications", request); var urlString = URLBuilder.Build(baseUrl, "/:/eventsource/notifications", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -179,7 +180,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/:/websocket/notifications", request); var urlString = URLBuilder.Build(baseUrl, "/:/websocket/notifications", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -72,10 +72,11 @@ namespace LukeHagar.PlexAPI.SDK
public class General: IGeneral public class General: IGeneral
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public General(SDKConfig config) public General(SDKConfig config)
{ {
@@ -287,7 +288,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/security/resources", request); var urlString = URLBuilder.Build(baseUrl, "/security/resources", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -392,7 +393,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/security/token", request); var urlString = URLBuilder.Build(baseUrl, "/security/token", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -161,10 +161,11 @@ namespace LukeHagar.PlexAPI.SDK
public class Hubs: IHubs public class Hubs: IHubs
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public Hubs(SDKConfig config) public Hubs(SDKConfig config)
{ {
@@ -186,7 +187,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs", request); var urlString = URLBuilder.Build(baseUrl, "/hubs", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -287,7 +288,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/continueWatching", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/continueWatching", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -392,7 +393,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/items", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/items", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -493,7 +494,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/promoted", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/promoted", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -598,7 +599,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/metadata/{metadataId}", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/metadata/{metadataId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -703,7 +704,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/metadata/{metadataId}/postplay", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/metadata/{metadataId}/postplay", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -808,7 +809,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/metadata/{metadataId}/related", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/metadata/{metadataId}/related", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -913,7 +914,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1018,7 +1019,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1105,7 +1106,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1210,7 +1211,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1297,7 +1298,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage/move", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage/move", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1402,7 +1403,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage/{identifier}", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage/{identifier}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1489,7 +1490,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage/{identifier}", request); var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage/{identifier}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -526,8 +526,8 @@ namespace LukeHagar.PlexAPI.SDK
/// Get autocompletions for search /// Get autocompletions for search
/// ///
/// <remarks> /// <remarks>
/// The field to autocomplete on is specified by the {field}.query parameter. For example `genre.query` or `title.query`.<br/> /// The field to autocomplete on is specified by the `{field}.query` parameter. For example `genre.query` or `title.query`.<br/>
/// Returns a set of items from the filtered items whose {field} starts with {field}.query. In the results, a {field}.queryRange will be present to express the range of the match /// Returns a set of items from the filtered items whose `{field}` starts with `{field}.query`. In the results, a `{field}.queryRange` will be present to express the range of the match
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<AutocompleteResponse> AutocompleteAsync(AutocompleteRequest request); Task<AutocompleteResponse> AutocompleteAsync(AutocompleteRequest request);
@@ -806,10 +806,11 @@ namespace LukeHagar.PlexAPI.SDK
public class Library: ILibrary public class Library: ILibrary
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public Library(SDKConfig config) public Library(SDKConfig config)
{ {
@@ -831,7 +832,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/all", request); var urlString = URLBuilder.Build(baseUrl, "/library/all", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1074,7 +1075,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/file", request); var urlString = URLBuilder.Build(baseUrl, "/library/file", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1175,7 +1176,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/matches", request); var urlString = URLBuilder.Build(baseUrl, "/library/matches", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1276,7 +1277,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/optimize", request); var urlString = URLBuilder.Build(baseUrl, "/library/optimize", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1359,7 +1360,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/randomArtwork", request); var urlString = URLBuilder.Build(baseUrl, "/library/randomArtwork", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1553,7 +1554,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/all", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/all", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1694,14 +1695,14 @@ namespace LukeHagar.PlexAPI.SDK
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
RequestHandlerSlashGetResponses200 obj; LibrarySections obj;
try try
{ {
obj = ResponseBodyDeserializer.DeserializeNotNull<RequestHandlerSlashGetResponses200>(httpResponseBody, NullValueHandling.Ignore); obj = ResponseBodyDeserializer.DeserializeNotNull<LibrarySections>(httpResponseBody, NullValueHandling.Ignore);
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new ResponseValidationException("Failed to deserialize response body into RequestHandlerSlashGetResponses200.", httpResponse, httpResponseBody, ex); throw new ResponseValidationException("Failed to deserialize response body into LibrarySections.", httpResponse, httpResponseBody, ex);
} }
var response = new StopAllRefreshesResponse() var response = new StopAllRefreshesResponse()
@@ -1710,7 +1711,7 @@ namespace LukeHagar.PlexAPI.SDK
ContentType = contentType, ContentType = contentType,
RawResponse = httpResponse RawResponse = httpResponse
}; };
response.RequestHandlerSlashGetResponses200 = obj; response.LibrarySections = obj;
return response; return response;
} }
@@ -1747,7 +1748,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/prefs", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/prefs", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1799,14 +1800,14 @@ namespace LukeHagar.PlexAPI.SDK
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
RequestHandlerSlashGetResponses200 obj; LibrarySections obj;
try try
{ {
obj = ResponseBodyDeserializer.DeserializeNotNull<RequestHandlerSlashGetResponses200>(httpResponseBody, NullValueHandling.Ignore); obj = ResponseBodyDeserializer.DeserializeNotNull<LibrarySections>(httpResponseBody, NullValueHandling.Ignore);
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new ResponseValidationException("Failed to deserialize response body into RequestHandlerSlashGetResponses200.", httpResponse, httpResponseBody, ex); throw new ResponseValidationException("Failed to deserialize response body into LibrarySections.", httpResponse, httpResponseBody, ex);
} }
var response = new GetSectionsPrefsResponse() var response = new GetSectionsPrefsResponse()
@@ -1815,7 +1816,7 @@ namespace LukeHagar.PlexAPI.SDK
ContentType = contentType, ContentType = contentType,
RawResponse = httpResponse RawResponse = httpResponse
}; };
response.RequestHandlerSlashGetResponses200 = obj; response.LibrarySections = obj;
return response; return response;
} }
@@ -1848,7 +1849,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/refresh", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/refresh", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1931,7 +1932,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/tags", request); var urlString = URLBuilder.Build(baseUrl, "/library/tags", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -2036,7 +2037,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -2123,7 +2124,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -2210,7 +2211,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/addetect", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/addetect", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -2297,7 +2298,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/allLeaves", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/allLeaves", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -2402,7 +2403,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/analyze", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/analyze", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -2489,7 +2490,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/chapterThumbs", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/chapterThumbs", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -2576,7 +2577,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/credits", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/credits", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -2663,7 +2664,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/extras", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/extras", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -2768,7 +2769,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/extras", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/extras", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -2855,7 +2856,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/file", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/file", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -2960,7 +2961,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/index", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/index", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -3047,7 +3048,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/intro", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/intro", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -3134,7 +3135,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/marker", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/marker", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -3239,7 +3240,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/match", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/match", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -3326,7 +3327,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/matches", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/matches", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -3431,7 +3432,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/merge", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/merge", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -3518,7 +3519,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/nearest", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/nearest", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -3623,7 +3624,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/prefs", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/prefs", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -3710,7 +3711,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/refresh", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/refresh", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -3797,7 +3798,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/related", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/related", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -3902,7 +3903,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/similar", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/similar", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -4007,7 +4008,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/split", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/split", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -4094,7 +4095,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/subtitles", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/subtitles", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -4181,7 +4182,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/tree", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/tree", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -4286,7 +4287,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/unmatch", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/unmatch", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -4373,7 +4374,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/users/top", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/users/top", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -4478,7 +4479,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/voiceActivity", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/voiceActivity", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -4565,7 +4566,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/augmentations/{augmentationId}", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/augmentations/{augmentationId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -4652,7 +4653,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}", request); var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -4739,7 +4740,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/people/{personId}", request); var urlString = URLBuilder.Build(baseUrl, "/library/people/{personId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -4844,7 +4845,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/people/{personId}/media", request); var urlString = URLBuilder.Build(baseUrl, "/library/people/{personId}/media", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -4949,7 +4950,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -5036,7 +5037,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -5141,7 +5142,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -5228,7 +5229,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/all", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/all", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -5315,7 +5316,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/analyze", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/analyze", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -5402,7 +5403,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/autocomplete", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/autocomplete", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -5507,7 +5508,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/collections", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/collections", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -5612,7 +5613,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/common", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/common", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -5717,7 +5718,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/emptyTrash", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/emptyTrash", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -5804,7 +5805,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/filters", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/filters", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -5909,7 +5910,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/firstCharacters", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/firstCharacters", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -6014,7 +6015,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/indexes", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/indexes", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -6101,7 +6102,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/intros", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/intros", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -6188,7 +6189,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/prefs", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/prefs", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -6293,7 +6294,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/prefs", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/prefs", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -6380,7 +6381,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/refresh", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/refresh", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -6467,7 +6468,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/refresh", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/refresh", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -6554,7 +6555,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/sorts", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/sorts", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -6659,7 +6660,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}/levels", request); var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}/levels", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -6764,7 +6765,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}/loudness", request); var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}/loudness", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -6858,7 +6859,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/media/{mediaId}/chapterImages/{chapter}", request); var urlString = URLBuilder.Build(baseUrl, "/library/media/{mediaId}/chapterImages/{chapter}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -6952,7 +6953,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/{element}", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/{element}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -7039,7 +7040,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/{element}", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/{element}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -7126,7 +7127,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/marker/{marker}", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/marker/{marker}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -7213,7 +7214,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/marker/{marker}", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/marker/{marker}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -7318,7 +7319,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/media/{mediaItem}", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/media/{mediaItem}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -7405,7 +7406,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}/indexes/{index}", request); var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}/indexes/{index}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -7499,7 +7500,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/collection/{collectionId}", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/collection/{collectionId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -7586,7 +7587,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/composite/{updatedAt}", request); var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/composite/{updatedAt}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -7673,7 +7674,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}.{ext}", request); var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}.{ext}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -7760,7 +7761,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}.{ext}", request); var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}.{ext}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -7847,7 +7848,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}.{ext}", request); var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}.{ext}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -7934,7 +7935,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/{element}/{timestamp}", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/{element}/{timestamp}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -8039,7 +8040,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}/{changestamp}/{filename}", request); var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}/{changestamp}/{filename}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -8126,7 +8127,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}/indexes/{index}/{offset}", request); var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}/indexes/{index}/{offset}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -62,10 +62,11 @@ namespace LukeHagar.PlexAPI.SDK
public class LibraryCollections: ILibraryCollections public class LibraryCollections: ILibraryCollections
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public LibraryCollections(SDKConfig config) public LibraryCollections(SDKConfig config)
{ {
@@ -91,7 +92,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items", request); var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -196,7 +197,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items/{itemId}", request); var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items/{itemId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -301,7 +302,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items/{itemId}/move", request); var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items/{itemId}/move", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -143,10 +143,11 @@ namespace LukeHagar.PlexAPI.SDK
public class LibraryPlaylists: ILibraryPlaylists public class LibraryPlaylists: ILibraryPlaylists
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public LibraryPlaylists(SDKConfig config) public LibraryPlaylists(SDKConfig config)
{ {
@@ -168,7 +169,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists", request); var urlString = URLBuilder.Build(baseUrl, "/playlists", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -269,7 +270,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists/upload", request); var urlString = URLBuilder.Build(baseUrl, "/playlists/upload", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -356,7 +357,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}", request); var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -443,7 +444,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}", request); var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -530,7 +531,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/generators", request); var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/generators", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -635,7 +636,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items", request); var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -740,7 +741,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items", request); var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -845,7 +846,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}", request); var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -950,7 +951,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}", request); var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1055,7 +1056,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}/items", request); var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}/items", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1160,7 +1161,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{playlistItemId}/move", request); var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{playlistItemId}/move", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -1265,7 +1266,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}/{metadataId}/{action}", request); var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}/{metadataId}/{action}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -79,10 +79,11 @@ namespace LukeHagar.PlexAPI.SDK
public class LiveTV: ILiveTV public class LiveTV: ILiveTV
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public LiveTV(SDKConfig config) public LiveTV(SDKConfig config)
{ {
@@ -197,7 +198,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/sessions/{sessionId}", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/sessions/{sessionId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -302,7 +303,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/sessions/{sessionId}/{consumerId}/index.m3u8", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/sessions/{sessionId}/{consumerId}/index.m3u8", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -389,7 +390,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/livetv/sessions/{sessionId}/{consumerId}/{segmentId}", request); var urlString = URLBuilder.Build(baseUrl, "/livetv/sessions/{sessionId}/{consumerId}/{segmentId}", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -68,10 +68,11 @@ namespace LukeHagar.PlexAPI.SDK
public class Log: ILog public class Log: ILog
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp";
private const string _sdkVersion = "0.19.0"; private const string _language = Constants.Language;
private const string _sdkGenVersion = "2.743.2"; private const string _sdkVersion = Constants.SdkVersion;
private const string _openapiDocVersion = "1.1.1"; private const string _sdkGenVersion = Constants.SdkGenVersion;
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
public Log(SDKConfig config) public Log(SDKConfig config)
{ {
@@ -170,7 +171,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/log", request); var urlString = URLBuilder.Build(baseUrl, "/log", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
@@ -253,7 +254,7 @@ namespace LukeHagar.PlexAPI.SDK
request.Marketplace ??= SDKConfiguration.Marketplace; request.Marketplace ??= SDKConfiguration.Marketplace;
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/log/networked", request); var urlString = URLBuilder.Build(baseUrl, "/log/networked", request, null);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);

View File

@@ -3,7 +3,7 @@
<PropertyGroup> <PropertyGroup>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<PackageId>LukeHagar.PlexAPI.SDK</PackageId> <PackageId>LukeHagar.PlexAPI.SDK</PackageId>
<Version>0.19.0</Version> <Version>0.20.0</Version>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<Authors>LukeHagar</Authors> <Authors>LukeHagar</Authors>
<Copyright>Copyright (c) LukeHagar 2025</Copyright> <Copyright>Copyright (c) LukeHagar 2025</Copyright>

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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
/// <summary>
/// The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled)
/// </summary>
public enum AutoSelectSubtitle
{
ManuallySelected = 0,
ShownWithForeignAudio = 1,
AlwaysEnabled = 2,
}
}

View File

@@ -13,8 +13,8 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public enum BoolInt public enum BoolInt
{ {
Zero = 0, False = 0,
One = 1, True = 1,
} }
} }

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.Components
{
using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class Connections
{
/// <summary>
/// The protocol used for the connection (http, https, etc)
/// </summary>
[JsonProperty("protocol")]
public PlexDeviceProtocol Protocol { get; set; } = default!;
/// <summary>
/// The (ip) address or domain name used for the connection
/// </summary>
[JsonProperty("address")]
public string Address { get; set; } = default!;
/// <summary>
/// The port used for the connection
/// </summary>
[JsonProperty("port")]
public int Port { get; set; } = default!;
/// <summary>
/// The full URI of the connection
/// </summary>
[JsonProperty("uri")]
public string Uri { get; set; } = default!;
/// <summary>
/// If the connection is local address
/// </summary>
[JsonProperty("local")]
public bool Local { get; set; } = default!;
/// <summary>
/// If the connection is relayed through plex.direct
/// </summary>
[JsonProperty("relay")]
public bool Relay { get; set; } = default!;
/// <summary>
/// If the connection is using IPv6
/// </summary>
[JsonProperty("IPv6")]
public bool IPv6 { get; set; } = default!;
}
}

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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
/// <summary>
/// The audio accessibility mode (0 = Prefer non-accessibility audio, 1 = Prefer accessibility audio, 2 = Only show accessibility audio, 3 = Only show non-accessibility audio)
/// </summary>
public enum DefaultAudioAccessibility
{
PreferNonAccessibility = 0,
PreferAccessibility = 1,
OnlyAccessibility = 2,
OnlyNonAccessibility = 3,
}
}

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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
/// <summary>
/// The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles)
/// </summary>
public enum DefaultSubtitleAccessibility
{
PreferNonSdh = 0,
PreferSdh = 1,
OnlySdh = 2,
OnlyNonSdh = 3,
}
}

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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
/// <summary>
/// The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles)
/// </summary>
public enum DefaultSubtitleForced
{
PreferNonForced = 0,
PreferForced = 1,
OnlyForced = 2,
OnlyNonForced = 3,
}
}

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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class Guids
{
/// <summary>
/// The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[JsonProperty("id")]
public string Id { get; set; } = default!;
}
}

View File

@@ -12,6 +12,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils; using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json; using Newtonsoft.Json;
using NodaTime;
using System.Collections.Generic; using System.Collections.Generic;
/// <summary> /// <summary>
@@ -32,43 +33,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// The title of the item (e.g. “300” or “The Simpsons”) /// The title of the item (e.g. “300” or “The Simpsons”)
/// </summary> /// </summary>
[JsonProperty("title")] [JsonProperty("title")]
public object? Title { get; set; } public string Title { get; set; } = default!;
/// <summary> /// <summary>
/// The type of the video item, such as `movie`, `episode`, or `clip`. /// The type of the video item, such as `movie`, `episode`, or `clip`.
/// </summary> /// </summary>
[JsonProperty("type")] [JsonProperty("type")]
public object? Type { get; set; } public string Type { get; set; } = default!;
/// <summary> /// <summary>
/// When present, contains the disc number for a track on multi-disc albums. /// When present, contains the disc number for a track on multi-disc albums.
/// </summary> /// </summary>
[JsonProperty("absoluteIndex")] [JsonProperty("absoluteIndex")]
public long? AbsoluteIndex { get; set; } public int? AbsoluteIndex { get; set; }
/// <summary> /// <summary>
/// In units of seconds since the epoch, returns the time at which the item was added to the library. /// In units of seconds since the epoch, returns the time at which the item was added to the library.
/// </summary> /// </summary>
[JsonProperty("addedAt")] [JsonProperty("addedAt")]
public long? AddedAt { get; set; } public long AddedAt { get; set; } = default!;
/// <summary> /// <summary>
/// When present, the URL for the background artwork for the item. /// When present, the URL for the background artwork for the item.
/// </summary> /// </summary>
[JsonProperty("art")] [JsonProperty("art")]
public object? Art { get; set; } public string? Art { get; set; }
/// <summary> /// <summary>
/// Some rating systems separate reviewer ratings from audience ratings /// Some rating systems separate reviewer ratings from audience ratings
/// </summary> /// </summary>
[JsonProperty("audienceRating")] [JsonProperty("audienceRating")]
public double? AudienceRating { get; set; } public float? AudienceRating { get; set; }
/// <summary> /// <summary>
/// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).
/// </summary> /// </summary>
[JsonProperty("audienceRatingImage")] [JsonProperty("audienceRatingImage")]
public object? AudienceRatingImage { get; set; } public string? AudienceRatingImage { get; set; }
[JsonProperty("Autotag")] [JsonProperty("Autotag")]
public List<Tag>? Autotag { get; set; } public List<Tag>? Autotag { get; set; }
@@ -77,25 +78,31 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the URL for a banner graphic for the item. /// When present, the URL for a banner graphic for the item.
/// </summary> /// </summary>
[JsonProperty("banner")] [JsonProperty("banner")]
public object? Banner { get; set; } public string? Banner { get; set; }
/// <summary> /// <summary>
/// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).
/// </summary> /// </summary>
[JsonProperty("chapterSource")] [JsonProperty("chapterSource")]
public object? ChapterSource { get; set; } public string? ChapterSource { get; set; }
/// <summary>
/// The number of child items associated with this media item.
/// </summary>
[JsonProperty("childCount")]
public int? ChildCount { get; set; }
/// <summary> /// <summary>
/// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).
/// </summary> /// </summary>
[JsonProperty("composite")] [JsonProperty("composite")]
public object? Composite { get; set; } public string? Composite { get; set; }
/// <summary> /// <summary>
/// If known, the content rating (e.g. MPAA) for an item. /// If known, the content rating (e.g. MPAA) for an item.
/// </summary> /// </summary>
[JsonProperty("contentRating")] [JsonProperty("contentRating")]
public object? ContentRating { get; set; } public string? ContentRating { get; set; }
[JsonProperty("Country")] [JsonProperty("Country")]
public List<Tag>? Country { get; set; } public List<Tag>? Country { get; set; }
@@ -107,7 +114,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the duration for the item, in units of milliseconds. /// When present, the duration for the item, in units of milliseconds.
/// </summary> /// </summary>
[JsonProperty("duration")] [JsonProperty("duration")]
public long? Duration { get; set; } public int? Duration { get; set; }
/// <summary> /// <summary>
/// Typically only seen in metadata at a library&apos;s top level /// Typically only seen in metadata at a library&apos;s top level
@@ -124,6 +131,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
[JsonProperty("grandparentArt")] [JsonProperty("grandparentArt")]
public string? GrandparentArt { get; set; } public string? GrandparentArt { get; set; }
/// <summary>
/// The GUID of the grandparent media item.
/// </summary>
[JsonProperty("grandparentGuid")]
public string? GrandparentGuid { get; set; }
/// <summary> /// <summary>
/// The `hero` of the grandparent /// The `hero` of the grandparent
/// </summary> /// </summary>
@@ -160,14 +173,20 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
[JsonProperty("grandparentTitle")] [JsonProperty("grandparentTitle")]
public string? GrandparentTitle { get; set; } public string? GrandparentTitle { get; set; }
/// <summary>
/// The globally unique identifier for the media item.
/// </summary>
[JsonProperty("guid")]
public string? Guid { get; set; }
[JsonProperty("Guid")] [JsonProperty("Guid")]
public List<Tag>? Guid { get; set; } public List<ItemsGuids>? Guids { get; set; }
/// <summary> /// <summary>
/// When present, the URL for a hero image for the item. /// When present, the URL for a hero image for the item.
/// </summary> /// </summary>
[JsonProperty("hero")] [JsonProperty("hero")]
public object? Hero { get; set; } public string? Hero { get; set; }
[JsonProperty("Image")] [JsonProperty("Image")]
public List<Image>? Image { get; set; } public List<Image>? Image { get; set; }
@@ -176,17 +195,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.
/// </summary> /// </summary>
[JsonProperty("index")] [JsonProperty("index")]
public long? Index { get; set; } public int? Index { get; set; }
/// <summary> /// <summary>
/// The key at which the item&apos;s details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. /// The key at which the item&apos;s details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.
/// </summary> /// </summary>
[JsonProperty("key")] [JsonProperty("key")]
public object? Key { get; set; } public string Key { get; set; } = default!;
/// <summary>
/// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.
/// </summary>
[JsonProperty("lastViewedAt")] [JsonProperty("lastViewedAt")]
public long? LastViewedAt { get; set; } public long? LastViewedAt { get; set; }
@@ -194,7 +210,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// For shows and seasons, contains the number of total episodes. /// For shows and seasons, contains the number of total episodes.
/// </summary> /// </summary>
[JsonProperty("leafCount")] [JsonProperty("leafCount")]
public long? LeafCount { get; set; } public int? LeafCount { get; set; }
[JsonProperty("Media")] [JsonProperty("Media")]
public List<Media>? Media { get; set; } public List<Media>? Media { get; set; }
@@ -203,13 +219,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don&apos;t use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don&apos;t use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.
/// </summary> /// </summary>
[JsonProperty("originallyAvailableAt")] [JsonProperty("originallyAvailableAt")]
public object? OriginallyAvailableAt { get; set; } public LocalDate? OriginallyAvailableAt { get; set; }
/// <summary> /// <summary>
/// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title. /// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title.
/// </summary> /// </summary>
[JsonProperty("originalTitle")] [JsonProperty("originalTitle")]
public object? OriginalTitle { get; set; } public string? OriginalTitle { get; set; }
/// <summary>
/// The GUID of the parent media item.
/// </summary>
[JsonProperty("parentGuid")]
public string? ParentGuid { get; set; }
/// <summary> /// <summary>
/// The `hero` of the parent /// The `hero` of the parent
@@ -221,7 +243,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// The `index` of the parent /// The `index` of the parent
/// </summary> /// </summary>
[JsonProperty("parentIndex")] [JsonProperty("parentIndex")]
public long? ParentIndex { get; set; } public int? ParentIndex { get; set; }
/// <summary> /// <summary>
/// The `key` of the parent /// The `key` of the parent
@@ -251,7 +273,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.
/// </summary> /// </summary>
[JsonProperty("primaryExtraKey")] [JsonProperty("primaryExtraKey")]
public object? PrimaryExtraKey { get; set; } public string? PrimaryExtraKey { get; set; }
/// <summary> /// <summary>
/// Prompt to give the user for this directory (such as `Search Movies`) /// Prompt to give the user for this directory (such as `Search Movies`)
@@ -263,7 +285,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.
/// </summary> /// </summary>
[JsonProperty("rating")] [JsonProperty("rating")]
public double? Rating { get; set; } public float? Rating { get; set; }
[JsonProperty("Rating")] [JsonProperty("Rating")]
public List<Tag>? RatingArray { get; set; } public List<Tag>? RatingArray { get; set; }
@@ -272,19 +294,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// Number of ratings under this metadata /// Number of ratings under this metadata
/// </summary> /// </summary>
[JsonProperty("ratingCount")] [JsonProperty("ratingCount")]
public long? RatingCount { get; set; } public int? RatingCount { get; set; }
/// <summary> /// <summary>
/// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.
/// </summary> /// </summary>
[JsonProperty("ratingImage")] [JsonProperty("ratingImage")]
public object? RatingImage { get; set; } public string? RatingImage { get; set; }
/// <summary> /// <summary>
/// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.
/// </summary> /// </summary>
[JsonProperty("ratingKey")] [JsonProperty("ratingKey")]
public object? RatingKey { get; set; } public string? RatingKey { get; set; }
[JsonProperty("Role")] [JsonProperty("Role")]
public List<Tag>? Role { get; set; } public List<Tag>? Role { get; set; }
@@ -323,43 +345,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).
/// </summary> /// </summary>
[JsonProperty("studio")] [JsonProperty("studio")]
public object? Studio { get; set; } public string? Studio { get; set; }
/// <summary> /// <summary>
/// The subtype of the video item, such as `photo` when the video item is in a photo library /// The subtype of the video item, such as `photo` when the video item is in a photo library
/// </summary> /// </summary>
[JsonProperty("subtype")] [JsonProperty("subtype")]
public object? Subtype { get; set; } public string? Subtype { get; set; }
/// <summary> /// <summary>
/// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).
/// </summary> /// </summary>
[JsonProperty("summary")] [JsonProperty("summary")]
public object? Summary { get; set; } public string? Summary { get; set; }
/// <summary> /// <summary>
/// When present, a pithy one-liner about the item (usually only seen for movies). /// When present, a pithy one-liner about the item (usually only seen for movies).
/// </summary> /// </summary>
[JsonProperty("tagline")] [JsonProperty("tagline")]
public object? Tagline { get; set; } public string? Tagline { get; set; }
/// <summary> /// <summary>
/// When present, the URL for theme music for the item (usually only for TV shows). /// When present, the URL for theme music for the item (usually only for TV shows).
/// </summary> /// </summary>
[JsonProperty("theme")] [JsonProperty("theme")]
public object? Theme { get; set; } public string? Theme { get; set; }
/// <summary> /// <summary>
/// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.
/// </summary> /// </summary>
[JsonProperty("thumb")] [JsonProperty("thumb")]
public object? Thumb { get; set; } public string? Thumb { get; set; }
/// <summary> /// <summary>
/// Whene present, this is the string used for sorting the item. It&apos;s usually the title with any leading articles removed (e.g. “Simpsons”). /// Whene present, this is the string used for sorting the item. It&apos;s usually the title with any leading articles removed (e.g. “Simpsons”).
/// </summary> /// </summary>
[JsonProperty("titleSort")] [JsonProperty("titleSort")]
public object? TitleSort { get; set; } public string? TitleSort { get; set; }
/// <summary> /// <summary>
/// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).
@@ -371,25 +393,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When the user has rated an item, this contains the user rating /// When the user has rated an item, this contains the user rating
/// </summary> /// </summary>
[JsonProperty("userRating")] [JsonProperty("userRating")]
public double? UserRating { get; set; } public float? UserRating { get; set; }
/// <summary> /// <summary>
/// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions.
/// </summary> /// </summary>
[JsonProperty("viewCount")] [JsonProperty("viewCount")]
public long? ViewCount { get; set; } public int? ViewCount { get; set; }
/// <summary> /// <summary>
/// For shows and seasons, contains the number of viewed episodes. /// For shows and seasons, contains the number of viewed episodes.
/// </summary> /// </summary>
[JsonProperty("viewedLeafCount")] [JsonProperty("viewedLeafCount")]
public long? ViewedLeafCount { get; set; } public int? ViewedLeafCount { get; set; }
/// <summary> /// <summary>
/// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.
/// </summary> /// </summary>
[JsonProperty("viewOffset")] [JsonProperty("viewOffset")]
public long? ViewOffset { get; set; } public int? ViewOffset { get; set; }
[JsonProperty("Writer")] [JsonProperty("Writer")]
public List<Tag>? Writer { get; set; } public List<Tag>? Writer { get; set; }
@@ -398,7 +420,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the year associated with the item&apos;s release (e.g. release year for a movie). /// When present, the year associated with the item&apos;s release (e.g. release year for a movie).
/// </summary> /// </summary>
[JsonProperty("year")] [JsonProperty("year")]
public long? Year { get; set; } public int? Year { get; set; }
[JsonProperty("MetadataItem")] [JsonProperty("MetadataItem")]
public List<Items>? MetadataItem { get; set; } public List<Items>? MetadataItem { get; set; }

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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class ItemsGuids
{
/// <summary>
/// The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[JsonProperty("id")]
public string Id { get; set; } = default!;
}
}

View File

@@ -17,11 +17,21 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public class LibrarySection public class LibrarySection
{ {
/// <summary>
/// The title of the library
/// </summary>
[JsonProperty("title")] [JsonProperty("title")]
public string? Title { get; set; } public string? Title { get; set; }
/// <summary>
/// The type of media content in the Plex library. This can represent videos, music, or photos.<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[JsonProperty("type")] [JsonProperty("type")]
public string? Type { get; set; } public MediaTypeString Type { get; set; } = default!;
[JsonProperty("agent")] [JsonProperty("agent")]
public string? Agent { get; set; } public string? Agent { get; set; }
@@ -60,7 +70,13 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public string? Key { get; set; } public string? Key { get; set; }
[JsonProperty("language")] [JsonProperty("language")]
public string? Language { get; set; } public string Language { get; set; } = default!;
/// <summary>
/// The universally unique identifier for the library.
/// </summary>
[JsonProperty("uuid")]
public string Uuid { get; set; } = default!;
[JsonProperty("Location")] [JsonProperty("Location")]
public List<LibrarySectionLocation>? Location { get; set; } public List<LibrarySectionLocation>? Location { get; set; }

View File

@@ -16,10 +16,10 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// <summary> /// <summary>
/// OK /// OK
/// </summary> /// </summary>
public class RequestHandlerSlashGetResponses200 public class LibrarySections
{ {
[JsonProperty("MediaContainer")] [JsonProperty("MediaContainer")]
public RequestHandlerSlashGetResponses200MediaContainer? MediaContainer { get; set; } public LibrarySectionsMediaContainer? MediaContainer { get; set; }
} }
} }

View File

@@ -12,7 +12,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
using LukeHagar.PlexAPI.SDK.Utils; using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json; using Newtonsoft.Json;
public class RequestHandlerSlashGetResponses200Directory public class LibrarySectionsDirectory
{ {
[JsonProperty("count")] [JsonProperty("count")]

View File

@@ -23,7 +23,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
public class RequestHandlerSlashGetResponses200MediaContainer public class LibrarySectionsMediaContainer
{ {
[JsonProperty("identifier")] [JsonProperty("identifier")]
@@ -206,6 +206,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public bool? VoiceSearch { get; set; } public bool? VoiceSearch { get; set; }
[JsonProperty("Directory")] [JsonProperty("Directory")]
public List<RequestHandlerSlashGetResponses200Directory>? Directory { get; set; } public List<LibrarySectionsDirectory>? Directory { get; set; }
} }
} }

View File

@@ -0,0 +1,62 @@
//------------------------------------------------------------------------------
// <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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
/// <summary>
/// Your current mailing list status
/// </summary>
public enum MailingListStatus
{
[JsonProperty("active")]
Active,
[JsonProperty("unsubscribed")]
Unsubscribed,
[JsonProperty("removed")]
Removed,
}
public static class MailingListStatusExtension
{
public static string Value(this MailingListStatus value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static MailingListStatus ToEnum(this string value)
{
foreach(var field in typeof(MailingListStatus).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 MailingListStatus)
{
return (MailingListStatus)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum MailingListStatus");
}
}
}

View File

@@ -25,25 +25,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
{ {
[JsonProperty("aspectRatio")] [JsonProperty("aspectRatio")]
public double? AspectRatio { get; set; } public float? AspectRatio { get; set; }
[JsonProperty("audioChannels")] [JsonProperty("audioChannels")]
public long? AudioChannels { get; set; } public int? AudioChannels { get; set; }
[JsonProperty("audioCodec")] [JsonProperty("audioCodec")]
public object? AudioCodec { get; set; } public string? AudioCodec { get; set; }
[JsonProperty("audioProfile")] [JsonProperty("audioProfile")]
public object? AudioProfile { get; set; } public string? AudioProfile { get; set; }
[JsonProperty("bitrate")] [JsonProperty("bitrate")]
public long? Bitrate { get; set; } public int? Bitrate { get; set; }
[JsonProperty("container")] [JsonProperty("container")]
public object? Container { get; set; } public string? Container { get; set; }
[JsonProperty("duration")] [JsonProperty("duration")]
public long? Duration { get; set; } public int? Duration { get; set; }
[JsonProperty("has64bitOffsets")] [JsonProperty("has64bitOffsets")]
public bool? Has64bitOffsets { get; set; } public bool? Has64bitOffsets { get; set; }
@@ -52,10 +52,10 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public bool? HasVoiceActivity { get; set; } public bool? HasVoiceActivity { get; set; }
[JsonProperty("height")] [JsonProperty("height")]
public long? Height { get; set; } public int? Height { get; set; }
[JsonProperty("id")] [JsonProperty("id")]
public long? Id { get; set; } public long Id { get; set; } = default!;
[JsonProperty("optimizedForStreaming")] [JsonProperty("optimizedForStreaming")]
public bool? OptimizedForStreaming { get; set; } public bool? OptimizedForStreaming { get; set; }
@@ -64,19 +64,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public List<Part>? Part { get; set; } public List<Part>? Part { get; set; }
[JsonProperty("videoCodec")] [JsonProperty("videoCodec")]
public object? VideoCodec { get; set; } public string? VideoCodec { get; set; }
[JsonProperty("videoFrameRate")] [JsonProperty("videoFrameRate")]
public object? VideoFrameRate { get; set; } public string? VideoFrameRate { get; set; }
[JsonProperty("videoProfile")] [JsonProperty("videoProfile")]
public object? VideoProfile { get; set; } public string? VideoProfile { get; set; }
[JsonProperty("videoResolution")] [JsonProperty("videoResolution")]
public object? VideoResolution { get; set; } public string? VideoResolution { get; set; }
[JsonProperty("width")] [JsonProperty("width")]
public long? Width { get; set; } public int? Width { get; set; }
[JsonProperty("additionalProperties")] [JsonProperty("additionalProperties")]
public Dictionary<string, object>? AdditionalProperties { get; set; } public Dictionary<string, object>? AdditionalProperties { get; set; }

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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class MediaContainerWithDecisionGuids
{
/// <summary>
/// The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[JsonProperty("id")]
public string Id { get; set; } = default!;
}
}

View File

@@ -25,25 +25,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
{ {
[JsonProperty("aspectRatio")] [JsonProperty("aspectRatio")]
public double? AspectRatio { get; set; } public float? AspectRatio { get; set; }
[JsonProperty("audioChannels")] [JsonProperty("audioChannels")]
public long? AudioChannels { get; set; } public int? AudioChannels { get; set; }
[JsonProperty("audioCodec")] [JsonProperty("audioCodec")]
public object? AudioCodec { get; set; } public string? AudioCodec { get; set; }
[JsonProperty("audioProfile")] [JsonProperty("audioProfile")]
public object? AudioProfile { get; set; } public string? AudioProfile { get; set; }
[JsonProperty("bitrate")] [JsonProperty("bitrate")]
public long? Bitrate { get; set; } public int? Bitrate { get; set; }
[JsonProperty("container")] [JsonProperty("container")]
public object? Container { get; set; } public string? Container { get; set; }
[JsonProperty("duration")] [JsonProperty("duration")]
public long? Duration { get; set; } public int? Duration { get; set; }
[JsonProperty("has64bitOffsets")] [JsonProperty("has64bitOffsets")]
public bool? Has64bitOffsets { get; set; } public bool? Has64bitOffsets { get; set; }
@@ -52,10 +52,10 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public bool? HasVoiceActivity { get; set; } public bool? HasVoiceActivity { get; set; }
[JsonProperty("height")] [JsonProperty("height")]
public long? Height { get; set; } public int? Height { get; set; }
[JsonProperty("id")] [JsonProperty("id")]
public long? Id { get; set; } public long Id { get; set; } = default!;
[JsonProperty("optimizedForStreaming")] [JsonProperty("optimizedForStreaming")]
public bool? OptimizedForStreaming { get; set; } public bool? OptimizedForStreaming { get; set; }
@@ -64,19 +64,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public List<MediaContainerWithDecisionPart>? Part { get; set; } public List<MediaContainerWithDecisionPart>? Part { get; set; }
[JsonProperty("videoCodec")] [JsonProperty("videoCodec")]
public object? VideoCodec { get; set; } public string? VideoCodec { get; set; }
[JsonProperty("videoFrameRate")] [JsonProperty("videoFrameRate")]
public object? VideoFrameRate { get; set; } public string? VideoFrameRate { get; set; }
[JsonProperty("videoProfile")] [JsonProperty("videoProfile")]
public object? VideoProfile { get; set; } public string? VideoProfile { get; set; }
[JsonProperty("videoResolution")] [JsonProperty("videoResolution")]
public object? VideoResolution { get; set; } public string? VideoResolution { get; set; }
[JsonProperty("width")] [JsonProperty("width")]
public long? Width { get; set; } public int? Width { get; set; }
[JsonProperty("abr")] [JsonProperty("abr")]
public bool? Abr { get; set; } public bool? Abr { get; set; }

View File

@@ -12,6 +12,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils; using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json; using Newtonsoft.Json;
using NodaTime;
using System.Collections.Generic; using System.Collections.Generic;
/// <summary> /// <summary>
@@ -32,43 +33,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// The title of the item (e.g. “300” or “The Simpsons”) /// The title of the item (e.g. “300” or “The Simpsons”)
/// </summary> /// </summary>
[JsonProperty("title")] [JsonProperty("title")]
public object? Title { get; set; } public string Title { get; set; } = default!;
/// <summary> /// <summary>
/// The type of the video item, such as `movie`, `episode`, or `clip`. /// The type of the video item, such as `movie`, `episode`, or `clip`.
/// </summary> /// </summary>
[JsonProperty("type")] [JsonProperty("type")]
public object? Type { get; set; } public string Type { get; set; } = default!;
/// <summary> /// <summary>
/// When present, contains the disc number for a track on multi-disc albums. /// When present, contains the disc number for a track on multi-disc albums.
/// </summary> /// </summary>
[JsonProperty("absoluteIndex")] [JsonProperty("absoluteIndex")]
public long? AbsoluteIndex { get; set; } public int? AbsoluteIndex { get; set; }
/// <summary> /// <summary>
/// In units of seconds since the epoch, returns the time at which the item was added to the library. /// In units of seconds since the epoch, returns the time at which the item was added to the library.
/// </summary> /// </summary>
[JsonProperty("addedAt")] [JsonProperty("addedAt")]
public long? AddedAt { get; set; } public long AddedAt { get; set; } = default!;
/// <summary> /// <summary>
/// When present, the URL for the background artwork for the item. /// When present, the URL for the background artwork for the item.
/// </summary> /// </summary>
[JsonProperty("art")] [JsonProperty("art")]
public object? Art { get; set; } public string? Art { get; set; }
/// <summary> /// <summary>
/// Some rating systems separate reviewer ratings from audience ratings /// Some rating systems separate reviewer ratings from audience ratings
/// </summary> /// </summary>
[JsonProperty("audienceRating")] [JsonProperty("audienceRating")]
public double? AudienceRating { get; set; } public float? AudienceRating { get; set; }
/// <summary> /// <summary>
/// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).
/// </summary> /// </summary>
[JsonProperty("audienceRatingImage")] [JsonProperty("audienceRatingImage")]
public object? AudienceRatingImage { get; set; } public string? AudienceRatingImage { get; set; }
[JsonProperty("Autotag")] [JsonProperty("Autotag")]
public List<Tag>? Autotag { get; set; } public List<Tag>? Autotag { get; set; }
@@ -77,25 +78,31 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the URL for a banner graphic for the item. /// When present, the URL for a banner graphic for the item.
/// </summary> /// </summary>
[JsonProperty("banner")] [JsonProperty("banner")]
public object? Banner { get; set; } public string? Banner { get; set; }
/// <summary> /// <summary>
/// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).
/// </summary> /// </summary>
[JsonProperty("chapterSource")] [JsonProperty("chapterSource")]
public object? ChapterSource { get; set; } public string? ChapterSource { get; set; }
/// <summary>
/// The number of child items associated with this media item.
/// </summary>
[JsonProperty("childCount")]
public int? ChildCount { get; set; }
/// <summary> /// <summary>
/// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).
/// </summary> /// </summary>
[JsonProperty("composite")] [JsonProperty("composite")]
public object? Composite { get; set; } public string? Composite { get; set; }
/// <summary> /// <summary>
/// If known, the content rating (e.g. MPAA) for an item. /// If known, the content rating (e.g. MPAA) for an item.
/// </summary> /// </summary>
[JsonProperty("contentRating")] [JsonProperty("contentRating")]
public object? ContentRating { get; set; } public string? ContentRating { get; set; }
[JsonProperty("Country")] [JsonProperty("Country")]
public List<Tag>? Country { get; set; } public List<Tag>? Country { get; set; }
@@ -107,7 +114,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the duration for the item, in units of milliseconds. /// When present, the duration for the item, in units of milliseconds.
/// </summary> /// </summary>
[JsonProperty("duration")] [JsonProperty("duration")]
public long? Duration { get; set; } public int? Duration { get; set; }
/// <summary> /// <summary>
/// Typically only seen in metadata at a library&apos;s top level /// Typically only seen in metadata at a library&apos;s top level
@@ -124,6 +131,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
[JsonProperty("grandparentArt")] [JsonProperty("grandparentArt")]
public string? GrandparentArt { get; set; } public string? GrandparentArt { get; set; }
/// <summary>
/// The GUID of the grandparent media item.
/// </summary>
[JsonProperty("grandparentGuid")]
public string? GrandparentGuid { get; set; }
/// <summary> /// <summary>
/// The `hero` of the grandparent /// The `hero` of the grandparent
/// </summary> /// </summary>
@@ -160,14 +173,20 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
[JsonProperty("grandparentTitle")] [JsonProperty("grandparentTitle")]
public string? GrandparentTitle { get; set; } public string? GrandparentTitle { get; set; }
/// <summary>
/// The globally unique identifier for the media item.
/// </summary>
[JsonProperty("guid")]
public string? Guid { get; set; }
[JsonProperty("Guid")] [JsonProperty("Guid")]
public List<Tag>? Guid { get; set; } public List<MediaContainerWithDecisionGuids>? Guids { get; set; }
/// <summary> /// <summary>
/// When present, the URL for a hero image for the item. /// When present, the URL for a hero image for the item.
/// </summary> /// </summary>
[JsonProperty("hero")] [JsonProperty("hero")]
public object? Hero { get; set; } public string? Hero { get; set; }
[JsonProperty("Image")] [JsonProperty("Image")]
public List<Image>? Image { get; set; } public List<Image>? Image { get; set; }
@@ -176,17 +195,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.
/// </summary> /// </summary>
[JsonProperty("index")] [JsonProperty("index")]
public long? Index { get; set; } public int? Index { get; set; }
/// <summary> /// <summary>
/// The key at which the item&apos;s details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. /// The key at which the item&apos;s details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.
/// </summary> /// </summary>
[JsonProperty("key")] [JsonProperty("key")]
public object? Key { get; set; } public string Key { get; set; } = default!;
/// <summary>
/// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.
/// </summary>
[JsonProperty("lastViewedAt")] [JsonProperty("lastViewedAt")]
public long? LastViewedAt { get; set; } public long? LastViewedAt { get; set; }
@@ -194,7 +210,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// For shows and seasons, contains the number of total episodes. /// For shows and seasons, contains the number of total episodes.
/// </summary> /// </summary>
[JsonProperty("leafCount")] [JsonProperty("leafCount")]
public long? LeafCount { get; set; } public int? LeafCount { get; set; }
[JsonProperty("Media")] [JsonProperty("Media")]
public List<MediaContainerWithDecisionMedia>? Media { get; set; } public List<MediaContainerWithDecisionMedia>? Media { get; set; }
@@ -203,13 +219,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don&apos;t use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don&apos;t use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.
/// </summary> /// </summary>
[JsonProperty("originallyAvailableAt")] [JsonProperty("originallyAvailableAt")]
public object? OriginallyAvailableAt { get; set; } public LocalDate? OriginallyAvailableAt { get; set; }
/// <summary> /// <summary>
/// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title. /// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title.
/// </summary> /// </summary>
[JsonProperty("originalTitle")] [JsonProperty("originalTitle")]
public object? OriginalTitle { get; set; } public string? OriginalTitle { get; set; }
/// <summary>
/// The GUID of the parent media item.
/// </summary>
[JsonProperty("parentGuid")]
public string? ParentGuid { get; set; }
/// <summary> /// <summary>
/// The `hero` of the parent /// The `hero` of the parent
@@ -221,7 +243,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// The `index` of the parent /// The `index` of the parent
/// </summary> /// </summary>
[JsonProperty("parentIndex")] [JsonProperty("parentIndex")]
public long? ParentIndex { get; set; } public int? ParentIndex { get; set; }
/// <summary> /// <summary>
/// The `key` of the parent /// The `key` of the parent
@@ -251,7 +273,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.
/// </summary> /// </summary>
[JsonProperty("primaryExtraKey")] [JsonProperty("primaryExtraKey")]
public object? PrimaryExtraKey { get; set; } public string? PrimaryExtraKey { get; set; }
/// <summary> /// <summary>
/// Prompt to give the user for this directory (such as `Search Movies`) /// Prompt to give the user for this directory (such as `Search Movies`)
@@ -263,7 +285,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.
/// </summary> /// </summary>
[JsonProperty("rating")] [JsonProperty("rating")]
public double? Rating { get; set; } public float? Rating { get; set; }
[JsonProperty("Rating")] [JsonProperty("Rating")]
public List<Tag>? RatingArray { get; set; } public List<Tag>? RatingArray { get; set; }
@@ -272,19 +294,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// Number of ratings under this metadata /// Number of ratings under this metadata
/// </summary> /// </summary>
[JsonProperty("ratingCount")] [JsonProperty("ratingCount")]
public long? RatingCount { get; set; } public int? RatingCount { get; set; }
/// <summary> /// <summary>
/// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.
/// </summary> /// </summary>
[JsonProperty("ratingImage")] [JsonProperty("ratingImage")]
public object? RatingImage { get; set; } public string? RatingImage { get; set; }
/// <summary> /// <summary>
/// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.
/// </summary> /// </summary>
[JsonProperty("ratingKey")] [JsonProperty("ratingKey")]
public object? RatingKey { get; set; } public string? RatingKey { get; set; }
[JsonProperty("Role")] [JsonProperty("Role")]
public List<Tag>? Role { get; set; } public List<Tag>? Role { get; set; }
@@ -323,43 +345,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).
/// </summary> /// </summary>
[JsonProperty("studio")] [JsonProperty("studio")]
public object? Studio { get; set; } public string? Studio { get; set; }
/// <summary> /// <summary>
/// The subtype of the video item, such as `photo` when the video item is in a photo library /// The subtype of the video item, such as `photo` when the video item is in a photo library
/// </summary> /// </summary>
[JsonProperty("subtype")] [JsonProperty("subtype")]
public object? Subtype { get; set; } public string? Subtype { get; set; }
/// <summary> /// <summary>
/// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).
/// </summary> /// </summary>
[JsonProperty("summary")] [JsonProperty("summary")]
public object? Summary { get; set; } public string? Summary { get; set; }
/// <summary> /// <summary>
/// When present, a pithy one-liner about the item (usually only seen for movies). /// When present, a pithy one-liner about the item (usually only seen for movies).
/// </summary> /// </summary>
[JsonProperty("tagline")] [JsonProperty("tagline")]
public object? Tagline { get; set; } public string? Tagline { get; set; }
/// <summary> /// <summary>
/// When present, the URL for theme music for the item (usually only for TV shows). /// When present, the URL for theme music for the item (usually only for TV shows).
/// </summary> /// </summary>
[JsonProperty("theme")] [JsonProperty("theme")]
public object? Theme { get; set; } public string? Theme { get; set; }
/// <summary> /// <summary>
/// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.
/// </summary> /// </summary>
[JsonProperty("thumb")] [JsonProperty("thumb")]
public object? Thumb { get; set; } public string? Thumb { get; set; }
/// <summary> /// <summary>
/// Whene present, this is the string used for sorting the item. It&apos;s usually the title with any leading articles removed (e.g. “Simpsons”). /// Whene present, this is the string used for sorting the item. It&apos;s usually the title with any leading articles removed (e.g. “Simpsons”).
/// </summary> /// </summary>
[JsonProperty("titleSort")] [JsonProperty("titleSort")]
public object? TitleSort { get; set; } public string? TitleSort { get; set; }
/// <summary> /// <summary>
/// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).
@@ -371,25 +393,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When the user has rated an item, this contains the user rating /// When the user has rated an item, this contains the user rating
/// </summary> /// </summary>
[JsonProperty("userRating")] [JsonProperty("userRating")]
public double? UserRating { get; set; } public float? UserRating { get; set; }
/// <summary> /// <summary>
/// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions.
/// </summary> /// </summary>
[JsonProperty("viewCount")] [JsonProperty("viewCount")]
public long? ViewCount { get; set; } public int? ViewCount { get; set; }
/// <summary> /// <summary>
/// For shows and seasons, contains the number of viewed episodes. /// For shows and seasons, contains the number of viewed episodes.
/// </summary> /// </summary>
[JsonProperty("viewedLeafCount")] [JsonProperty("viewedLeafCount")]
public long? ViewedLeafCount { get; set; } public int? ViewedLeafCount { get; set; }
/// <summary> /// <summary>
/// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.
/// </summary> /// </summary>
[JsonProperty("viewOffset")] [JsonProperty("viewOffset")]
public long? ViewOffset { get; set; } public int? ViewOffset { get; set; }
[JsonProperty("Writer")] [JsonProperty("Writer")]
public List<Tag>? Writer { get; set; } public List<Tag>? Writer { get; set; }
@@ -398,7 +420,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the year associated with the item&apos;s release (e.g. release year for a movie). /// When present, the year associated with the item&apos;s release (e.g. release year for a movie).
/// </summary> /// </summary>
[JsonProperty("year")] [JsonProperty("year")]
public long? Year { get; set; } public int? Year { get; set; }
[JsonProperty("additionalProperties")] [JsonProperty("additionalProperties")]
public Dictionary<string, object>? AdditionalProperties { get; set; } public Dictionary<string, object>? AdditionalProperties { get; set; }

View File

@@ -24,38 +24,53 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public class MediaContainerWithDecisionPart public class MediaContainerWithDecisionPart
{ {
/// <summary>
/// Indicates if the part is accessible.
/// </summary>
[JsonProperty("accessible")]
public bool? Accessible { get; set; }
[JsonProperty("audioProfile")] [JsonProperty("audioProfile")]
public object? AudioProfile { get; set; } public string? AudioProfile { get; set; }
/// <summary> /// <summary>
/// The container of the media file, such as `mp4` or `mkv` /// The container of the media file, such as `mp4` or `mkv`
/// </summary> /// </summary>
[JsonProperty("container")] [JsonProperty("container")]
public object? Container { get; set; } public string? Container { get; set; }
/// <summary> /// <summary>
/// The duration of the media item, in milliseconds /// The duration of the media item, in milliseconds
/// </summary> /// </summary>
[JsonProperty("duration")] [JsonProperty("duration")]
public long? Duration { get; set; } public int? Duration { get; set; }
/// <summary>
/// Indicates if the part exists.
/// </summary>
[JsonProperty("exists")]
public bool? Exists { get; set; }
/// <summary> /// <summary>
/// The local file path at which the part is stored on the server /// The local file path at which the part is stored on the server
/// </summary> /// </summary>
[JsonProperty("file")] [JsonProperty("file")]
public object? File { get; set; } public string? File { get; set; }
[JsonProperty("has64bitOffsets")] [JsonProperty("has64bitOffsets")]
public bool? Has64bitOffsets { get; set; } public bool? Has64bitOffsets { get; set; }
[JsonProperty("id")] [JsonProperty("id")]
public long? Id { get; set; } public long Id { get; set; } = default!;
[JsonProperty("indexes")]
public string? Indexes { get; set; }
/// <summary> /// <summary>
/// The key from which the media can be streamed /// The key from which the media can be streamed
/// </summary> /// </summary>
[JsonProperty("key")] [JsonProperty("key")]
public object? Key { get; set; } public string Key { get; set; } = default!;
[JsonProperty("optimizedForStreaming")] [JsonProperty("optimizedForStreaming")]
public bool? OptimizedForStreaming { get; set; } public bool? OptimizedForStreaming { get; set; }
@@ -70,7 +85,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public List<MediaContainerWithDecisionStream>? Stream { get; set; } public List<MediaContainerWithDecisionStream>? Stream { get; set; }
[JsonProperty("videoProfile")] [JsonProperty("videoProfile")]
public object? VideoProfile { get; set; } public string? VideoProfile { get; set; }
[JsonProperty("decision")] [JsonProperty("decision")]
public Decision? Decision { get; set; } public Decision? Decision { get; set; }

View File

@@ -24,113 +24,306 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public class MediaContainerWithDecisionStream public class MediaContainerWithDecisionStream
{ {
/// <summary>
/// Indicates if this stream is default.
/// </summary>
[JsonProperty("default")] [JsonProperty("default")]
public bool? Default { get; set; } public bool? Default { get; set; }
/// <summary>
/// Audio channel layout.
/// </summary>
[JsonProperty("audioChannelLayout")] [JsonProperty("audioChannelLayout")]
public object? AudioChannelLayout { get; set; } public string? AudioChannelLayout { get; set; }
[JsonProperty("bitDepth")]
public long? BitDepth { get; set; }
[JsonProperty("bitrate")]
public long? Bitrate { get; set; }
/// <summary> /// <summary>
/// For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. /// Number of audio channels (for audio streams).
/// </summary>
[JsonProperty("channels")]
public int? Channels { get; set; }
/// <summary>
/// Bit depth of the video stream.
/// </summary>
[JsonProperty("bitDepth")]
public int? BitDepth { get; set; }
/// <summary>
/// Dolby Vision BL compatibility ID.
/// </summary>
[JsonProperty("DOVIBLCompatID")]
public int? DOVIBLCompatID { get; set; }
/// <summary>
/// Indicates if Dolby Vision BL is present.
/// </summary>
[JsonProperty("DOVIBLPresent")]
public bool? DOVIBLPresent { get; set; }
/// <summary>
/// Indicates if Dolby Vision EL is present.
/// </summary>
[JsonProperty("DOVIELPresent")]
public bool? DOVIELPresent { get; set; }
/// <summary>
/// Dolby Vision level.
/// </summary>
[JsonProperty("DOVILevel")]
public int? DOVILevel { get; set; }
/// <summary>
/// Indicates if Dolby Vision is present.
/// </summary>
[JsonProperty("DOVIPresent")]
public bool? DOVIPresent { get; set; }
/// <summary>
/// Dolby Vision profile.
/// </summary>
[JsonProperty("DOVIProfile")]
public int? DOVIProfile { get; set; }
/// <summary>
/// Indicates if Dolby Vision RPU is present.
/// </summary>
[JsonProperty("DOVIRPUPresent")]
public bool? DOVIRPUPresent { get; set; }
/// <summary>
/// Dolby Vision version.
/// </summary>
[JsonProperty("DOVIVersion")]
public string? DOVIVersion { get; set; }
/// <summary>
/// Bitrate of the stream.
/// </summary>
[JsonProperty("bitrate")]
public int? Bitrate { get; set; }
/// <summary>
/// Indicates if the stream can auto-sync.
/// </summary> /// </summary>
[JsonProperty("canAutoSync")] [JsonProperty("canAutoSync")]
public bool? CanAutoSync { get; set; } public bool? CanAutoSync { get; set; }
/// <summary>
/// Chroma sample location.
/// </summary>
[JsonProperty("chromaLocation")] [JsonProperty("chromaLocation")]
public object? ChromaLocation { get; set; } public string? ChromaLocation { get; set; }
[JsonProperty("chromaSubsampling")]
public object? ChromaSubsampling { get; set; }
/// <summary> /// <summary>
/// The codec of the stream, such as `h264` or `aac` /// Chroma subsampling format.
/// </summary>
[JsonProperty("chromaSubsampling")]
public string? ChromaSubsampling { get; set; }
/// <summary>
/// Coded video height.
/// </summary>
[JsonProperty("codedHeight")]
public int? CodedHeight { get; set; }
/// <summary>
/// Coded video width.
/// </summary>
[JsonProperty("codedWidth")]
public int? CodedWidth { get; set; }
[JsonProperty("closedCaptions")]
public bool? ClosedCaptions { get; set; }
/// <summary>
/// Codec used by the stream.
/// </summary> /// </summary>
[JsonProperty("codec")] [JsonProperty("codec")]
public object? Codec { get; set; } public string Codec { get; set; } = default!;
[JsonProperty("colorPrimaries")]
public object? ColorPrimaries { get; set; }
[JsonProperty("colorRange")]
public object? ColorRange { get; set; }
[JsonProperty("colorSpace")]
public object? ColorSpace { get; set; }
[JsonProperty("colorTrc")]
public object? ColorTrc { get; set; }
/// <summary> /// <summary>
/// A friendly name for the stream, often comprised of the language and codec information /// Color primaries used.
/// </summary>
[JsonProperty("colorPrimaries")]
public string? ColorPrimaries { get; set; }
/// <summary>
/// Color range (e.g., tv).
/// </summary>
[JsonProperty("colorRange")]
public string? ColorRange { get; set; }
/// <summary>
/// Color space.
/// </summary>
[JsonProperty("colorSpace")]
public string? ColorSpace { get; set; }
/// <summary>
/// Color transfer characteristics.
/// </summary>
[JsonProperty("colorTrc")]
public string? ColorTrc { get; set; }
/// <summary>
/// Display title for the stream.
/// </summary> /// </summary>
[JsonProperty("displayTitle")] [JsonProperty("displayTitle")]
public object? DisplayTitle { get; set; } public string DisplayTitle { get; set; } = default!;
/// <summary>
/// Extended display title for the stream.
/// </summary>
[JsonProperty("extendedDisplayTitle")]
public string? ExtendedDisplayTitle { get; set; }
/// <summary>
/// Frame rate of the stream.
/// </summary>
[JsonProperty("frameRate")] [JsonProperty("frameRate")]
public double? FrameRate { get; set; } public float? FrameRate { get; set; }
[JsonProperty("hasScalingMatrix")] [JsonProperty("hasScalingMatrix")]
public object? HasScalingMatrix { get; set; } public bool? HasScalingMatrix { get; set; }
[JsonProperty("height")]
public long? Height { get; set; }
[JsonProperty("id")]
public long? Id { get; set; }
/// <summary> /// <summary>
/// If the stream is part of the `Part` and not an external resource, the index of the stream within that part /// Height of the video stream.
/// </summary>
[JsonProperty("height")]
public int? Height { get; set; }
/// <summary>
/// Unique stream identifier.
/// </summary>
[JsonProperty("id")]
public int Id { get; set; } = default!;
/// <summary>
/// Index of the stream.
/// </summary> /// </summary>
[JsonProperty("index")] [JsonProperty("index")]
public long? Index { get; set; } public int? Index { get; set; }
/// <summary> /// <summary>
/// If the stream is independently streamable, the key from which it can be streamed /// Key to access this stream part.
/// </summary> /// </summary>
[JsonProperty("key")] [JsonProperty("key")]
public object? Key { get; set; } public string Key { get; set; } = default!;
[JsonProperty("language")]
public object? Language { get; set; }
/// <summary> /// <summary>
/// The three character language code for the stream contents /// Language of the stream.
/// </summary>
[JsonProperty("language")]
public string? Language { get; set; }
/// <summary>
/// ISO language code.
/// </summary> /// </summary>
[JsonProperty("languageCode")] [JsonProperty("languageCode")]
public object? LanguageCode { get; set; } public string? LanguageCode { get; set; }
/// <summary>
/// Language tag (e.g., en).
/// </summary>
[JsonProperty("languageTag")]
public string? LanguageTag { get; set; }
/// <summary>
/// Format of the stream (e.g., srt).
/// </summary>
[JsonProperty("format")]
public string? Format { get; set; }
/// <summary>
/// Indicates whether header compression is enabled.
/// </summary>
[JsonProperty("headerCompression")]
public bool? HeaderCompression { get; set; }
/// <summary>
/// Video level.
/// </summary>
[JsonProperty("level")] [JsonProperty("level")]
public long? Level { get; set; } public int? Level { get; set; }
/// <summary>
/// Indicates if this is the original stream.
/// </summary>
[JsonProperty("original")]
public bool? Original { get; set; }
/// <summary>
/// Video profile.
/// </summary>
[JsonProperty("profile")] [JsonProperty("profile")]
public object? Profile { get; set; } public string? Profile { get; set; }
/// <summary>
/// Number of reference frames.
/// </summary>
[JsonProperty("refFrames")] [JsonProperty("refFrames")]
public long? RefFrames { get; set; } public int? RefFrames { get; set; }
/// <summary>
/// Sampling rate for the audio stream.
/// </summary>
[JsonProperty("samplingRate")] [JsonProperty("samplingRate")]
public long? SamplingRate { get; set; } public int? SamplingRate { get; set; }
[JsonProperty("scanType")]
public string? ScanType { get; set; }
[JsonProperty("embeddedInVideo")]
public string? EmbeddedInVideo { get; set; }
/// <summary>
/// Indicates if this stream is selected (applicable for audio streams).
/// </summary>
[JsonProperty("selected")] [JsonProperty("selected")]
public bool? Selected { get; set; } public bool? Selected { get; set; }
[JsonProperty("streamIdentifier")] [JsonProperty("forced")]
public long? StreamIdentifier { get; set; } public bool? Forced { get; set; }
/// <summary> /// <summary>
/// A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics /// Indicates if the stream is for the hearing impaired.
/// </summary>
[JsonProperty("hearingImpaired")]
public bool? HearingImpaired { get; set; }
/// <summary>
/// Indicates if the stream is a dub.
/// </summary>
[JsonProperty("dub")]
public bool? Dub { get; set; }
/// <summary>
/// Optional title for the stream (e.g., language variant).
/// </summary>
[JsonProperty("title")]
public string? Title { get; set; }
[JsonProperty("streamIdentifier")]
public int? StreamIdentifier { get; set; }
/// <summary>
/// Stream type:<br/>
///
/// <remarks>
/// - VIDEO = 1<br/>
/// - AUDIO = 2<br/>
/// - SUBTITLE = 3<br/>
///
/// </remarks>
/// </summary> /// </summary>
[JsonProperty("streamType")] [JsonProperty("streamType")]
public long? StreamType { get; set; } public long StreamType { get; } = 1;
/// <summary>
/// Width of the video stream.
/// </summary>
[JsonProperty("width")] [JsonProperty("width")]
public long? Width { get; set; } public int? Width { get; set; }
[JsonProperty("decision")] [JsonProperty("decision")]
public MediaContainerWithDecisionDecision? Decision { get; set; } public MediaContainerWithDecisionDecision? Decision { get; set; }

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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class MediaContainerWithNestedMetadataGuids
{
/// <summary>
/// The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[JsonProperty("id")]
public string Id { get; set; } = default!;
}
}

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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class MediaContainerWithPlaylistMetadataGuids
{
/// <summary>
/// The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[JsonProperty("id")]
public string Id { get; set; } = default!;
}
}

View File

@@ -12,6 +12,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils; using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json; using Newtonsoft.Json;
using NodaTime;
using System.Collections.Generic; using System.Collections.Generic;
/// <summary> /// <summary>
@@ -38,25 +39,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).
/// </summary> /// </summary>
[JsonProperty("composite")] [JsonProperty("composite")]
public object? Composite { get; set; } public string? Composite { get; set; }
/// <summary> /// <summary>
/// When present, the duration for the item, in units of milliseconds. /// When present, the duration for the item, in units of milliseconds.
/// </summary> /// </summary>
[JsonProperty("duration")] [JsonProperty("duration")]
public long? Duration { get; set; } public int? Duration { get; set; }
/// <summary> /// <summary>
/// The key at which the item&apos;s details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. /// The key at which the item&apos;s details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.
/// </summary> /// </summary>
[JsonProperty("key")] [JsonProperty("key")]
public object? Key { get; set; } public string Key { get; set; } = default!;
/// <summary> /// <summary>
/// For shows and seasons, contains the number of total episodes. /// For shows and seasons, contains the number of total episodes.
/// </summary> /// </summary>
[JsonProperty("leafCount")] [JsonProperty("leafCount")]
public long? LeafCount { get; set; } public int? LeafCount { get; set; }
/// <summary> /// <summary>
/// The type of the playlist. /// The type of the playlist.
@@ -80,43 +81,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// The title of the item (e.g. “300” or “The Simpsons”) /// The title of the item (e.g. “300” or “The Simpsons”)
/// </summary> /// </summary>
[JsonProperty("title")] [JsonProperty("title")]
public object? Title { get; set; } public string Title { get; set; } = default!;
/// <summary> /// <summary>
/// The type of the video item, such as `movie`, `episode`, or `clip`. /// The type of the video item, such as `movie`, `episode`, or `clip`.
/// </summary> /// </summary>
[JsonProperty("type")] [JsonProperty("type")]
public object? Type { get; set; } public string Type { get; set; } = default!;
/// <summary> /// <summary>
/// When present, contains the disc number for a track on multi-disc albums. /// When present, contains the disc number for a track on multi-disc albums.
/// </summary> /// </summary>
[JsonProperty("absoluteIndex")] [JsonProperty("absoluteIndex")]
public long? AbsoluteIndex { get; set; } public int? AbsoluteIndex { get; set; }
/// <summary> /// <summary>
/// In units of seconds since the epoch, returns the time at which the item was added to the library. /// In units of seconds since the epoch, returns the time at which the item was added to the library.
/// </summary> /// </summary>
[JsonProperty("addedAt")] [JsonProperty("addedAt")]
public long? AddedAt { get; set; } public long AddedAt { get; set; } = default!;
/// <summary> /// <summary>
/// When present, the URL for the background artwork for the item. /// When present, the URL for the background artwork for the item.
/// </summary> /// </summary>
[JsonProperty("art")] [JsonProperty("art")]
public object? Art { get; set; } public string? Art { get; set; }
/// <summary> /// <summary>
/// Some rating systems separate reviewer ratings from audience ratings /// Some rating systems separate reviewer ratings from audience ratings
/// </summary> /// </summary>
[JsonProperty("audienceRating")] [JsonProperty("audienceRating")]
public double? AudienceRating { get; set; } public float? AudienceRating { get; set; }
/// <summary> /// <summary>
/// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).
/// </summary> /// </summary>
[JsonProperty("audienceRatingImage")] [JsonProperty("audienceRatingImage")]
public object? AudienceRatingImage { get; set; } public string? AudienceRatingImage { get; set; }
[JsonProperty("Autotag")] [JsonProperty("Autotag")]
public List<Tag>? Autotag { get; set; } public List<Tag>? Autotag { get; set; }
@@ -125,19 +126,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the URL for a banner graphic for the item. /// When present, the URL for a banner graphic for the item.
/// </summary> /// </summary>
[JsonProperty("banner")] [JsonProperty("banner")]
public object? Banner { get; set; } public string? Banner { get; set; }
/// <summary> /// <summary>
/// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).
/// </summary> /// </summary>
[JsonProperty("chapterSource")] [JsonProperty("chapterSource")]
public object? ChapterSource { get; set; } public string? ChapterSource { get; set; }
/// <summary>
/// The number of child items associated with this media item.
/// </summary>
[JsonProperty("childCount")]
public int? ChildCount { get; set; }
/// <summary> /// <summary>
/// If known, the content rating (e.g. MPAA) for an item. /// If known, the content rating (e.g. MPAA) for an item.
/// </summary> /// </summary>
[JsonProperty("contentRating")] [JsonProperty("contentRating")]
public object? ContentRating { get; set; } public string? ContentRating { get; set; }
[JsonProperty("Country")] [JsonProperty("Country")]
public List<Tag>? Country { get; set; } public List<Tag>? Country { get; set; }
@@ -160,6 +167,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
[JsonProperty("grandparentArt")] [JsonProperty("grandparentArt")]
public string? GrandparentArt { get; set; } public string? GrandparentArt { get; set; }
/// <summary>
/// The GUID of the grandparent media item.
/// </summary>
[JsonProperty("grandparentGuid")]
public string? GrandparentGuid { get; set; }
/// <summary> /// <summary>
/// The `hero` of the grandparent /// The `hero` of the grandparent
/// </summary> /// </summary>
@@ -196,14 +209,20 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
[JsonProperty("grandparentTitle")] [JsonProperty("grandparentTitle")]
public string? GrandparentTitle { get; set; } public string? GrandparentTitle { get; set; }
/// <summary>
/// The globally unique identifier for the media item.
/// </summary>
[JsonProperty("guid")]
public string? Guid { get; set; }
[JsonProperty("Guid")] [JsonProperty("Guid")]
public List<Tag>? Guid { get; set; } public List<MediaContainerWithPlaylistMetadataGuids>? Guids { get; set; }
/// <summary> /// <summary>
/// When present, the URL for a hero image for the item. /// When present, the URL for a hero image for the item.
/// </summary> /// </summary>
[JsonProperty("hero")] [JsonProperty("hero")]
public object? Hero { get; set; } public string? Hero { get; set; }
[JsonProperty("Image")] [JsonProperty("Image")]
public List<Image>? Image { get; set; } public List<Image>? Image { get; set; }
@@ -212,11 +231,8 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.
/// </summary> /// </summary>
[JsonProperty("index")] [JsonProperty("index")]
public long? Index { get; set; } public int? Index { get; set; }
/// <summary>
/// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.
/// </summary>
[JsonProperty("lastViewedAt")] [JsonProperty("lastViewedAt")]
public long? LastViewedAt { get; set; } public long? LastViewedAt { get; set; }
@@ -227,13 +243,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don&apos;t use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don&apos;t use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.
/// </summary> /// </summary>
[JsonProperty("originallyAvailableAt")] [JsonProperty("originallyAvailableAt")]
public object? OriginallyAvailableAt { get; set; } public LocalDate? OriginallyAvailableAt { get; set; }
/// <summary> /// <summary>
/// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title. /// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title.
/// </summary> /// </summary>
[JsonProperty("originalTitle")] [JsonProperty("originalTitle")]
public object? OriginalTitle { get; set; } public string? OriginalTitle { get; set; }
/// <summary>
/// The GUID of the parent media item.
/// </summary>
[JsonProperty("parentGuid")]
public string? ParentGuid { get; set; }
/// <summary> /// <summary>
/// The `hero` of the parent /// The `hero` of the parent
@@ -245,7 +267,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// The `index` of the parent /// The `index` of the parent
/// </summary> /// </summary>
[JsonProperty("parentIndex")] [JsonProperty("parentIndex")]
public long? ParentIndex { get; set; } public int? ParentIndex { get; set; }
/// <summary> /// <summary>
/// The `key` of the parent /// The `key` of the parent
@@ -275,7 +297,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.
/// </summary> /// </summary>
[JsonProperty("primaryExtraKey")] [JsonProperty("primaryExtraKey")]
public object? PrimaryExtraKey { get; set; } public string? PrimaryExtraKey { get; set; }
/// <summary> /// <summary>
/// Prompt to give the user for this directory (such as `Search Movies`) /// Prompt to give the user for this directory (such as `Search Movies`)
@@ -287,7 +309,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.
/// </summary> /// </summary>
[JsonProperty("rating")] [JsonProperty("rating")]
public double? Rating { get; set; } public float? Rating { get; set; }
[JsonProperty("Rating")] [JsonProperty("Rating")]
public List<Tag>? RatingArray { get; set; } public List<Tag>? RatingArray { get; set; }
@@ -296,19 +318,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// Number of ratings under this metadata /// Number of ratings under this metadata
/// </summary> /// </summary>
[JsonProperty("ratingCount")] [JsonProperty("ratingCount")]
public long? RatingCount { get; set; } public int? RatingCount { get; set; }
/// <summary> /// <summary>
/// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.
/// </summary> /// </summary>
[JsonProperty("ratingImage")] [JsonProperty("ratingImage")]
public object? RatingImage { get; set; } public string? RatingImage { get; set; }
/// <summary> /// <summary>
/// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.
/// </summary> /// </summary>
[JsonProperty("ratingKey")] [JsonProperty("ratingKey")]
public object? RatingKey { get; set; } public string? RatingKey { get; set; }
[JsonProperty("Role")] [JsonProperty("Role")]
public List<Tag>? Role { get; set; } public List<Tag>? Role { get; set; }
@@ -347,43 +369,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).
/// </summary> /// </summary>
[JsonProperty("studio")] [JsonProperty("studio")]
public object? Studio { get; set; } public string? Studio { get; set; }
/// <summary> /// <summary>
/// The subtype of the video item, such as `photo` when the video item is in a photo library /// The subtype of the video item, such as `photo` when the video item is in a photo library
/// </summary> /// </summary>
[JsonProperty("subtype")] [JsonProperty("subtype")]
public object? Subtype { get; set; } public string? Subtype { get; set; }
/// <summary> /// <summary>
/// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).
/// </summary> /// </summary>
[JsonProperty("summary")] [JsonProperty("summary")]
public object? Summary { get; set; } public string? Summary { get; set; }
/// <summary> /// <summary>
/// When present, a pithy one-liner about the item (usually only seen for movies). /// When present, a pithy one-liner about the item (usually only seen for movies).
/// </summary> /// </summary>
[JsonProperty("tagline")] [JsonProperty("tagline")]
public object? Tagline { get; set; } public string? Tagline { get; set; }
/// <summary> /// <summary>
/// When present, the URL for theme music for the item (usually only for TV shows). /// When present, the URL for theme music for the item (usually only for TV shows).
/// </summary> /// </summary>
[JsonProperty("theme")] [JsonProperty("theme")]
public object? Theme { get; set; } public string? Theme { get; set; }
/// <summary> /// <summary>
/// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.
/// </summary> /// </summary>
[JsonProperty("thumb")] [JsonProperty("thumb")]
public object? Thumb { get; set; } public string? Thumb { get; set; }
/// <summary> /// <summary>
/// Whene present, this is the string used for sorting the item. It&apos;s usually the title with any leading articles removed (e.g. “Simpsons”). /// Whene present, this is the string used for sorting the item. It&apos;s usually the title with any leading articles removed (e.g. “Simpsons”).
/// </summary> /// </summary>
[JsonProperty("titleSort")] [JsonProperty("titleSort")]
public object? TitleSort { get; set; } public string? TitleSort { get; set; }
/// <summary> /// <summary>
/// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).
@@ -395,25 +417,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When the user has rated an item, this contains the user rating /// When the user has rated an item, this contains the user rating
/// </summary> /// </summary>
[JsonProperty("userRating")] [JsonProperty("userRating")]
public double? UserRating { get; set; } public float? UserRating { get; set; }
/// <summary> /// <summary>
/// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions.
/// </summary> /// </summary>
[JsonProperty("viewCount")] [JsonProperty("viewCount")]
public long? ViewCount { get; set; } public int? ViewCount { get; set; }
/// <summary> /// <summary>
/// For shows and seasons, contains the number of viewed episodes. /// For shows and seasons, contains the number of viewed episodes.
/// </summary> /// </summary>
[JsonProperty("viewedLeafCount")] [JsonProperty("viewedLeafCount")]
public long? ViewedLeafCount { get; set; } public int? ViewedLeafCount { get; set; }
/// <summary> /// <summary>
/// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.
/// </summary> /// </summary>
[JsonProperty("viewOffset")] [JsonProperty("viewOffset")]
public long? ViewOffset { get; set; } public int? ViewOffset { get; set; }
[JsonProperty("Writer")] [JsonProperty("Writer")]
public List<Tag>? Writer { get; set; } public List<Tag>? Writer { get; set; }
@@ -422,7 +444,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the year associated with the item&apos;s release (e.g. release year for a movie). /// When present, the year associated with the item&apos;s release (e.g. release year for a movie).
/// </summary> /// </summary>
[JsonProperty("year")] [JsonProperty("year")]
public long? Year { get; set; } public int? Year { get; set; }
[JsonProperty("additionalProperties")] [JsonProperty("additionalProperties")]
public Dictionary<string, object>? AdditionalProperties { get; set; } public Dictionary<string, object>? AdditionalProperties { get; set; }

View File

@@ -9,9 +9,65 @@
#nullable enable #nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Components namespace LukeHagar.PlexAPI.SDK.Models.Components
{ {
using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils; using LukeHagar.PlexAPI.SDK.Utils;
/// <summary>
/// A querystring-based filtering language used to select subsets of media. When provided as an object, properties are serialized as a querystring using form style with explode.<br/>
///
/// <remarks>
/// <br/>
/// Only the defined properties below are allowed. The object serializes to a querystring format like: `type=4&amp;sourceType=2&amp;sort=duration:desc,index`<br/>
///
/// </remarks>
/// </summary>
public class MediaQuery public class MediaQuery
{ {
/// <summary>
/// The type of media to retrieve or filter by.<br/>
///
/// <remarks>
/// <br/>
/// 1 = movie<br/>
/// 2 = show<br/>
/// 3 = season<br/>
/// 4 = episode<br/>
/// 5 = artist<br/>
/// 6 = album<br/>
/// 7 = track<br/>
/// 8 = photo_album<br/>
/// 9 = photo<br/>
/// <br/>
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries<br/>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:name=type")]
public MediaType? Type { get; set; }
/// <summary>
/// Change the default level to which fields refer (used with type for hierarchical queries)
/// </summary>
[SpeakeasyMetadata("queryParam:name=sourceType")]
public long? SourceType { get; set; }
/// <summary>
/// Field(s) to sort by, with optional modifiers. Use comma to separate multiple fields, and :desc or :nullsLast for modifiers (e.g., &quot;duration:desc,index&quot;)
/// </summary>
[SpeakeasyMetadata("queryParam:name=sort")]
public string? Sort { get; set; }
/// <summary>
/// Field to group results by (similar to SQL GROUP BY)
/// </summary>
[SpeakeasyMetadata("queryParam:name=group")]
public string? Group { get; set; }
/// <summary>
/// Maximum number of results to return
/// </summary>
[SpeakeasyMetadata("queryParam:name=limit")]
public long? Limit { 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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
/// <summary>
/// Whether or not the account has media reviews visibility enabled
/// </summary>
public enum MediaReviewsVisibility
{
NoOne = 0,
CriticsOnly = 1,
PlexUsersOnly = 2,
PlexUsersAndCritics = 3,
}
}

View File

@@ -0,0 +1,46 @@
//------------------------------------------------------------------------------
// <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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
/// <summary>
/// The type of media to retrieve or filter by.<br/>
///
/// <remarks>
/// <br/>
/// 1 = movie<br/>
/// 2 = show<br/>
/// 3 = season<br/>
/// 4 = episode<br/>
/// 5 = artist<br/>
/// 6 = album<br/>
/// 7 = track<br/>
/// 8 = photo_album<br/>
/// 9 = photo<br/>
/// <br/>
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries<br/>
///
/// </remarks>
/// </summary>
public enum MediaType
{
Movie = 1,
TvShow = 2,
Season = 3,
Episode = 4,
Artist = 5,
Album = 6,
Track = 7,
PhotoAlbum = 8,
Photo = 9,
}
}

View File

@@ -0,0 +1,80 @@
//------------------------------------------------------------------------------
// <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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
/// <summary>
/// The type of media content in the Plex library. This can represent videos, music, or photos.<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
public enum MediaTypeString
{
[JsonProperty("movie")]
Movie,
[JsonProperty("show")]
TvShow,
[JsonProperty("season")]
Season,
[JsonProperty("episode")]
Episode,
[JsonProperty("artist")]
Artist,
[JsonProperty("album")]
Album,
[JsonProperty("track")]
Track,
[JsonProperty("photoalbum")]
PhotoAlbum,
[JsonProperty("photo")]
Photo,
[JsonProperty("collection")]
Collection,
}
public static class MediaTypeStringExtension
{
public static string Value(this MediaTypeString value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static MediaTypeString ToEnum(this string value)
{
foreach(var field in typeof(MediaTypeString).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 MediaTypeString)
{
return (MediaTypeString)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum MediaTypeString");
}
}
}

View File

@@ -12,6 +12,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils; using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json; using Newtonsoft.Json;
using NodaTime;
using System.Collections.Generic; using System.Collections.Generic;
/// <summary> /// <summary>
@@ -32,43 +33,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// The title of the item (e.g. “300” or “The Simpsons”) /// The title of the item (e.g. “300” or “The Simpsons”)
/// </summary> /// </summary>
[JsonProperty("title")] [JsonProperty("title")]
public object? Title { get; set; } public string Title { get; set; } = default!;
/// <summary> /// <summary>
/// The type of the video item, such as `movie`, `episode`, or `clip`. /// The type of the video item, such as `movie`, `episode`, or `clip`.
/// </summary> /// </summary>
[JsonProperty("type")] [JsonProperty("type")]
public object? Type { get; set; } public string Type { get; set; } = default!;
/// <summary> /// <summary>
/// When present, contains the disc number for a track on multi-disc albums. /// When present, contains the disc number for a track on multi-disc albums.
/// </summary> /// </summary>
[JsonProperty("absoluteIndex")] [JsonProperty("absoluteIndex")]
public long? AbsoluteIndex { get; set; } public int? AbsoluteIndex { get; set; }
/// <summary> /// <summary>
/// In units of seconds since the epoch, returns the time at which the item was added to the library. /// In units of seconds since the epoch, returns the time at which the item was added to the library.
/// </summary> /// </summary>
[JsonProperty("addedAt")] [JsonProperty("addedAt")]
public long? AddedAt { get; set; } public long AddedAt { get; set; } = default!;
/// <summary> /// <summary>
/// When present, the URL for the background artwork for the item. /// When present, the URL for the background artwork for the item.
/// </summary> /// </summary>
[JsonProperty("art")] [JsonProperty("art")]
public object? Art { get; set; } public string? Art { get; set; }
/// <summary> /// <summary>
/// Some rating systems separate reviewer ratings from audience ratings /// Some rating systems separate reviewer ratings from audience ratings
/// </summary> /// </summary>
[JsonProperty("audienceRating")] [JsonProperty("audienceRating")]
public double? AudienceRating { get; set; } public float? AudienceRating { get; set; }
/// <summary> /// <summary>
/// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).
/// </summary> /// </summary>
[JsonProperty("audienceRatingImage")] [JsonProperty("audienceRatingImage")]
public object? AudienceRatingImage { get; set; } public string? AudienceRatingImage { get; set; }
[JsonProperty("Autotag")] [JsonProperty("Autotag")]
public List<Tag>? Autotag { get; set; } public List<Tag>? Autotag { get; set; }
@@ -77,25 +78,31 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the URL for a banner graphic for the item. /// When present, the URL for a banner graphic for the item.
/// </summary> /// </summary>
[JsonProperty("banner")] [JsonProperty("banner")]
public object? Banner { get; set; } public string? Banner { get; set; }
/// <summary> /// <summary>
/// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).
/// </summary> /// </summary>
[JsonProperty("chapterSource")] [JsonProperty("chapterSource")]
public object? ChapterSource { get; set; } public string? ChapterSource { get; set; }
/// <summary>
/// The number of child items associated with this media item.
/// </summary>
[JsonProperty("childCount")]
public int? ChildCount { get; set; }
/// <summary> /// <summary>
/// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).
/// </summary> /// </summary>
[JsonProperty("composite")] [JsonProperty("composite")]
public object? Composite { get; set; } public string? Composite { get; set; }
/// <summary> /// <summary>
/// If known, the content rating (e.g. MPAA) for an item. /// If known, the content rating (e.g. MPAA) for an item.
/// </summary> /// </summary>
[JsonProperty("contentRating")] [JsonProperty("contentRating")]
public object? ContentRating { get; set; } public string? ContentRating { get; set; }
[JsonProperty("Country")] [JsonProperty("Country")]
public List<Tag>? Country { get; set; } public List<Tag>? Country { get; set; }
@@ -107,7 +114,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the duration for the item, in units of milliseconds. /// When present, the duration for the item, in units of milliseconds.
/// </summary> /// </summary>
[JsonProperty("duration")] [JsonProperty("duration")]
public long? Duration { get; set; } public int? Duration { get; set; }
/// <summary> /// <summary>
/// Typically only seen in metadata at a library&apos;s top level /// Typically only seen in metadata at a library&apos;s top level
@@ -124,6 +131,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
[JsonProperty("grandparentArt")] [JsonProperty("grandparentArt")]
public string? GrandparentArt { get; set; } public string? GrandparentArt { get; set; }
/// <summary>
/// The GUID of the grandparent media item.
/// </summary>
[JsonProperty("grandparentGuid")]
public string? GrandparentGuid { get; set; }
/// <summary> /// <summary>
/// The `hero` of the grandparent /// The `hero` of the grandparent
/// </summary> /// </summary>
@@ -160,14 +173,20 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
[JsonProperty("grandparentTitle")] [JsonProperty("grandparentTitle")]
public string? GrandparentTitle { get; set; } public string? GrandparentTitle { get; set; }
/// <summary>
/// The globally unique identifier for the media item.
/// </summary>
[JsonProperty("guid")]
public string? Guid { get; set; }
[JsonProperty("Guid")] [JsonProperty("Guid")]
public List<Tag>? Guid { get; set; } public List<Models.Components.Guids>? Guids { get; set; }
/// <summary> /// <summary>
/// When present, the URL for a hero image for the item. /// When present, the URL for a hero image for the item.
/// </summary> /// </summary>
[JsonProperty("hero")] [JsonProperty("hero")]
public object? Hero { get; set; } public string? Hero { get; set; }
[JsonProperty("Image")] [JsonProperty("Image")]
public List<Image>? Image { get; set; } public List<Image>? Image { get; set; }
@@ -176,17 +195,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.
/// </summary> /// </summary>
[JsonProperty("index")] [JsonProperty("index")]
public long? Index { get; set; } public int? Index { get; set; }
/// <summary> /// <summary>
/// The key at which the item&apos;s details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. /// The key at which the item&apos;s details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.
/// </summary> /// </summary>
[JsonProperty("key")] [JsonProperty("key")]
public object? Key { get; set; } public string Key { get; set; } = default!;
/// <summary>
/// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.
/// </summary>
[JsonProperty("lastViewedAt")] [JsonProperty("lastViewedAt")]
public long? LastViewedAt { get; set; } public long? LastViewedAt { get; set; }
@@ -194,7 +210,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// For shows and seasons, contains the number of total episodes. /// For shows and seasons, contains the number of total episodes.
/// </summary> /// </summary>
[JsonProperty("leafCount")] [JsonProperty("leafCount")]
public long? LeafCount { get; set; } public int? LeafCount { get; set; }
[JsonProperty("Media")] [JsonProperty("Media")]
public List<Media>? Media { get; set; } public List<Media>? Media { get; set; }
@@ -203,13 +219,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don&apos;t use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don&apos;t use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.
/// </summary> /// </summary>
[JsonProperty("originallyAvailableAt")] [JsonProperty("originallyAvailableAt")]
public object? OriginallyAvailableAt { get; set; } public LocalDate? OriginallyAvailableAt { get; set; }
/// <summary> /// <summary>
/// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title. /// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title.
/// </summary> /// </summary>
[JsonProperty("originalTitle")] [JsonProperty("originalTitle")]
public object? OriginalTitle { get; set; } public string? OriginalTitle { get; set; }
/// <summary>
/// The GUID of the parent media item.
/// </summary>
[JsonProperty("parentGuid")]
public string? ParentGuid { get; set; }
/// <summary> /// <summary>
/// The `hero` of the parent /// The `hero` of the parent
@@ -221,7 +243,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// The `index` of the parent /// The `index` of the parent
/// </summary> /// </summary>
[JsonProperty("parentIndex")] [JsonProperty("parentIndex")]
public long? ParentIndex { get; set; } public int? ParentIndex { get; set; }
/// <summary> /// <summary>
/// The `key` of the parent /// The `key` of the parent
@@ -251,7 +273,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.
/// </summary> /// </summary>
[JsonProperty("primaryExtraKey")] [JsonProperty("primaryExtraKey")]
public object? PrimaryExtraKey { get; set; } public string? PrimaryExtraKey { get; set; }
/// <summary> /// <summary>
/// Prompt to give the user for this directory (such as `Search Movies`) /// Prompt to give the user for this directory (such as `Search Movies`)
@@ -263,7 +285,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.
/// </summary> /// </summary>
[JsonProperty("rating")] [JsonProperty("rating")]
public double? Rating { get; set; } public float? Rating { get; set; }
[JsonProperty("Rating")] [JsonProperty("Rating")]
public List<Tag>? RatingArray { get; set; } public List<Tag>? RatingArray { get; set; }
@@ -272,19 +294,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// Number of ratings under this metadata /// Number of ratings under this metadata
/// </summary> /// </summary>
[JsonProperty("ratingCount")] [JsonProperty("ratingCount")]
public long? RatingCount { get; set; } public int? RatingCount { get; set; }
/// <summary> /// <summary>
/// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.
/// </summary> /// </summary>
[JsonProperty("ratingImage")] [JsonProperty("ratingImage")]
public object? RatingImage { get; set; } public string? RatingImage { get; set; }
/// <summary> /// <summary>
/// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.
/// </summary> /// </summary>
[JsonProperty("ratingKey")] [JsonProperty("ratingKey")]
public object? RatingKey { get; set; } public string? RatingKey { get; set; }
[JsonProperty("Role")] [JsonProperty("Role")]
public List<Tag>? Role { get; set; } public List<Tag>? Role { get; set; }
@@ -323,43 +345,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).
/// </summary> /// </summary>
[JsonProperty("studio")] [JsonProperty("studio")]
public object? Studio { get; set; } public string? Studio { get; set; }
/// <summary> /// <summary>
/// The subtype of the video item, such as `photo` when the video item is in a photo library /// The subtype of the video item, such as `photo` when the video item is in a photo library
/// </summary> /// </summary>
[JsonProperty("subtype")] [JsonProperty("subtype")]
public object? Subtype { get; set; } public string? Subtype { get; set; }
/// <summary> /// <summary>
/// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).
/// </summary> /// </summary>
[JsonProperty("summary")] [JsonProperty("summary")]
public object? Summary { get; set; } public string? Summary { get; set; }
/// <summary> /// <summary>
/// When present, a pithy one-liner about the item (usually only seen for movies). /// When present, a pithy one-liner about the item (usually only seen for movies).
/// </summary> /// </summary>
[JsonProperty("tagline")] [JsonProperty("tagline")]
public object? Tagline { get; set; } public string? Tagline { get; set; }
/// <summary> /// <summary>
/// When present, the URL for theme music for the item (usually only for TV shows). /// When present, the URL for theme music for the item (usually only for TV shows).
/// </summary> /// </summary>
[JsonProperty("theme")] [JsonProperty("theme")]
public object? Theme { get; set; } public string? Theme { get; set; }
/// <summary> /// <summary>
/// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.
/// </summary> /// </summary>
[JsonProperty("thumb")] [JsonProperty("thumb")]
public object? Thumb { get; set; } public string? Thumb { get; set; }
/// <summary> /// <summary>
/// Whene present, this is the string used for sorting the item. It&apos;s usually the title with any leading articles removed (e.g. “Simpsons”). /// Whene present, this is the string used for sorting the item. It&apos;s usually the title with any leading articles removed (e.g. “Simpsons”).
/// </summary> /// </summary>
[JsonProperty("titleSort")] [JsonProperty("titleSort")]
public object? TitleSort { get; set; } public string? TitleSort { get; set; }
/// <summary> /// <summary>
/// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).
@@ -371,25 +393,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When the user has rated an item, this contains the user rating /// When the user has rated an item, this contains the user rating
/// </summary> /// </summary>
[JsonProperty("userRating")] [JsonProperty("userRating")]
public double? UserRating { get; set; } public float? UserRating { get; set; }
/// <summary> /// <summary>
/// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions.
/// </summary> /// </summary>
[JsonProperty("viewCount")] [JsonProperty("viewCount")]
public long? ViewCount { get; set; } public int? ViewCount { get; set; }
/// <summary> /// <summary>
/// For shows and seasons, contains the number of viewed episodes. /// For shows and seasons, contains the number of viewed episodes.
/// </summary> /// </summary>
[JsonProperty("viewedLeafCount")] [JsonProperty("viewedLeafCount")]
public long? ViewedLeafCount { get; set; } public int? ViewedLeafCount { get; set; }
/// <summary> /// <summary>
/// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.
/// </summary> /// </summary>
[JsonProperty("viewOffset")] [JsonProperty("viewOffset")]
public long? ViewOffset { get; set; } public int? ViewOffset { get; set; }
[JsonProperty("Writer")] [JsonProperty("Writer")]
public List<Tag>? Writer { get; set; } public List<Tag>? Writer { get; set; }
@@ -398,7 +420,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the year associated with the item&apos;s release (e.g. release year for a movie). /// When present, the year associated with the item&apos;s release (e.g. release year for a movie).
/// </summary> /// </summary>
[JsonProperty("year")] [JsonProperty("year")]
public long? Year { get; set; } public int? Year { get; set; }
[JsonProperty("additionalProperties")] [JsonProperty("additionalProperties")]
public Dictionary<string, object>? AdditionalProperties { get; set; } public Dictionary<string, object>? AdditionalProperties { get; set; }

View File

@@ -12,6 +12,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils; using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json; using Newtonsoft.Json;
using NodaTime;
using System.Collections.Generic; using System.Collections.Generic;
/// <summary> /// <summary>
@@ -32,43 +33,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// The title of the item (e.g. “300” or “The Simpsons”) /// The title of the item (e.g. “300” or “The Simpsons”)
/// </summary> /// </summary>
[JsonProperty("title")] [JsonProperty("title")]
public object? Title { get; set; } public string Title { get; set; } = default!;
/// <summary> /// <summary>
/// The type of the video item, such as `movie`, `episode`, or `clip`. /// The type of the video item, such as `movie`, `episode`, or `clip`.
/// </summary> /// </summary>
[JsonProperty("type")] [JsonProperty("type")]
public object? Type { get; set; } public string Type { get; set; } = default!;
/// <summary> /// <summary>
/// When present, contains the disc number for a track on multi-disc albums. /// When present, contains the disc number for a track on multi-disc albums.
/// </summary> /// </summary>
[JsonProperty("absoluteIndex")] [JsonProperty("absoluteIndex")]
public long? AbsoluteIndex { get; set; } public int? AbsoluteIndex { get; set; }
/// <summary> /// <summary>
/// In units of seconds since the epoch, returns the time at which the item was added to the library. /// In units of seconds since the epoch, returns the time at which the item was added to the library.
/// </summary> /// </summary>
[JsonProperty("addedAt")] [JsonProperty("addedAt")]
public long? AddedAt { get; set; } public long AddedAt { get; set; } = default!;
/// <summary> /// <summary>
/// When present, the URL for the background artwork for the item. /// When present, the URL for the background artwork for the item.
/// </summary> /// </summary>
[JsonProperty("art")] [JsonProperty("art")]
public object? Art { get; set; } public string? Art { get; set; }
/// <summary> /// <summary>
/// Some rating systems separate reviewer ratings from audience ratings /// Some rating systems separate reviewer ratings from audience ratings
/// </summary> /// </summary>
[JsonProperty("audienceRating")] [JsonProperty("audienceRating")]
public double? AudienceRating { get; set; } public float? AudienceRating { get; set; }
/// <summary> /// <summary>
/// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).
/// </summary> /// </summary>
[JsonProperty("audienceRatingImage")] [JsonProperty("audienceRatingImage")]
public object? AudienceRatingImage { get; set; } public string? AudienceRatingImage { get; set; }
[JsonProperty("Autotag")] [JsonProperty("Autotag")]
public List<Tag>? Autotag { get; set; } public List<Tag>? Autotag { get; set; }
@@ -77,25 +78,31 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the URL for a banner graphic for the item. /// When present, the URL for a banner graphic for the item.
/// </summary> /// </summary>
[JsonProperty("banner")] [JsonProperty("banner")]
public object? Banner { get; set; } public string? Banner { get; set; }
/// <summary> /// <summary>
/// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).
/// </summary> /// </summary>
[JsonProperty("chapterSource")] [JsonProperty("chapterSource")]
public object? ChapterSource { get; set; } public string? ChapterSource { get; set; }
/// <summary>
/// The number of child items associated with this media item.
/// </summary>
[JsonProperty("childCount")]
public int? ChildCount { get; set; }
/// <summary> /// <summary>
/// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).
/// </summary> /// </summary>
[JsonProperty("composite")] [JsonProperty("composite")]
public object? Composite { get; set; } public string? Composite { get; set; }
/// <summary> /// <summary>
/// If known, the content rating (e.g. MPAA) for an item. /// If known, the content rating (e.g. MPAA) for an item.
/// </summary> /// </summary>
[JsonProperty("contentRating")] [JsonProperty("contentRating")]
public object? ContentRating { get; set; } public string? ContentRating { get; set; }
[JsonProperty("Country")] [JsonProperty("Country")]
public List<Tag>? Country { get; set; } public List<Tag>? Country { get; set; }
@@ -107,7 +114,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the duration for the item, in units of milliseconds. /// When present, the duration for the item, in units of milliseconds.
/// </summary> /// </summary>
[JsonProperty("duration")] [JsonProperty("duration")]
public long? Duration { get; set; } public int? Duration { get; set; }
/// <summary> /// <summary>
/// Typically only seen in metadata at a library&apos;s top level /// Typically only seen in metadata at a library&apos;s top level
@@ -124,6 +131,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
[JsonProperty("grandparentArt")] [JsonProperty("grandparentArt")]
public string? GrandparentArt { get; set; } public string? GrandparentArt { get; set; }
/// <summary>
/// The GUID of the grandparent media item.
/// </summary>
[JsonProperty("grandparentGuid")]
public string? GrandparentGuid { get; set; }
/// <summary> /// <summary>
/// The `hero` of the grandparent /// The `hero` of the grandparent
/// </summary> /// </summary>
@@ -160,14 +173,20 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
[JsonProperty("grandparentTitle")] [JsonProperty("grandparentTitle")]
public string? GrandparentTitle { get; set; } public string? GrandparentTitle { get; set; }
/// <summary>
/// The globally unique identifier for the media item.
/// </summary>
[JsonProperty("guid")]
public string? Guid { get; set; }
[JsonProperty("Guid")] [JsonProperty("Guid")]
public List<Tag>? Guid { get; set; } public List<MediaContainerWithNestedMetadataGuids>? Guids { get; set; }
/// <summary> /// <summary>
/// When present, the URL for a hero image for the item. /// When present, the URL for a hero image for the item.
/// </summary> /// </summary>
[JsonProperty("hero")] [JsonProperty("hero")]
public object? Hero { get; set; } public string? Hero { get; set; }
[JsonProperty("Image")] [JsonProperty("Image")]
public List<Image>? Image { get; set; } public List<Image>? Image { get; set; }
@@ -176,17 +195,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.
/// </summary> /// </summary>
[JsonProperty("index")] [JsonProperty("index")]
public long? Index { get; set; } public int? Index { get; set; }
/// <summary> /// <summary>
/// The key at which the item&apos;s details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. /// The key at which the item&apos;s details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.
/// </summary> /// </summary>
[JsonProperty("key")] [JsonProperty("key")]
public object? Key { get; set; } public string Key { get; set; } = default!;
/// <summary>
/// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.
/// </summary>
[JsonProperty("lastViewedAt")] [JsonProperty("lastViewedAt")]
public long? LastViewedAt { get; set; } public long? LastViewedAt { get; set; }
@@ -194,7 +210,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// For shows and seasons, contains the number of total episodes. /// For shows and seasons, contains the number of total episodes.
/// </summary> /// </summary>
[JsonProperty("leafCount")] [JsonProperty("leafCount")]
public long? LeafCount { get; set; } public int? LeafCount { get; set; }
[JsonProperty("Media")] [JsonProperty("Media")]
public List<Media>? Media { get; set; } public List<Media>? Media { get; set; }
@@ -203,13 +219,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don&apos;t use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don&apos;t use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.
/// </summary> /// </summary>
[JsonProperty("originallyAvailableAt")] [JsonProperty("originallyAvailableAt")]
public object? OriginallyAvailableAt { get; set; } public LocalDate? OriginallyAvailableAt { get; set; }
/// <summary> /// <summary>
/// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title. /// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title.
/// </summary> /// </summary>
[JsonProperty("originalTitle")] [JsonProperty("originalTitle")]
public object? OriginalTitle { get; set; } public string? OriginalTitle { get; set; }
/// <summary>
/// The GUID of the parent media item.
/// </summary>
[JsonProperty("parentGuid")]
public string? ParentGuid { get; set; }
/// <summary> /// <summary>
/// The `hero` of the parent /// The `hero` of the parent
@@ -221,7 +243,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// The `index` of the parent /// The `index` of the parent
/// </summary> /// </summary>
[JsonProperty("parentIndex")] [JsonProperty("parentIndex")]
public long? ParentIndex { get; set; } public int? ParentIndex { get; set; }
/// <summary> /// <summary>
/// The `key` of the parent /// The `key` of the parent
@@ -251,7 +273,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.
/// </summary> /// </summary>
[JsonProperty("primaryExtraKey")] [JsonProperty("primaryExtraKey")]
public object? PrimaryExtraKey { get; set; } public string? PrimaryExtraKey { get; set; }
/// <summary> /// <summary>
/// Prompt to give the user for this directory (such as `Search Movies`) /// Prompt to give the user for this directory (such as `Search Movies`)
@@ -263,7 +285,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.
/// </summary> /// </summary>
[JsonProperty("rating")] [JsonProperty("rating")]
public double? Rating { get; set; } public float? Rating { get; set; }
[JsonProperty("Rating")] [JsonProperty("Rating")]
public List<Tag>? RatingArray { get; set; } public List<Tag>? RatingArray { get; set; }
@@ -272,19 +294,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// Number of ratings under this metadata /// Number of ratings under this metadata
/// </summary> /// </summary>
[JsonProperty("ratingCount")] [JsonProperty("ratingCount")]
public long? RatingCount { get; set; } public int? RatingCount { get; set; }
/// <summary> /// <summary>
/// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.
/// </summary> /// </summary>
[JsonProperty("ratingImage")] [JsonProperty("ratingImage")]
public object? RatingImage { get; set; } public string? RatingImage { get; set; }
/// <summary> /// <summary>
/// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.
/// </summary> /// </summary>
[JsonProperty("ratingKey")] [JsonProperty("ratingKey")]
public object? RatingKey { get; set; } public string? RatingKey { get; set; }
[JsonProperty("Role")] [JsonProperty("Role")]
public List<Tag>? Role { get; set; } public List<Tag>? Role { get; set; }
@@ -323,43 +345,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).
/// </summary> /// </summary>
[JsonProperty("studio")] [JsonProperty("studio")]
public object? Studio { get; set; } public string? Studio { get; set; }
/// <summary> /// <summary>
/// The subtype of the video item, such as `photo` when the video item is in a photo library /// The subtype of the video item, such as `photo` when the video item is in a photo library
/// </summary> /// </summary>
[JsonProperty("subtype")] [JsonProperty("subtype")]
public object? Subtype { get; set; } public string? Subtype { get; set; }
/// <summary> /// <summary>
/// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).
/// </summary> /// </summary>
[JsonProperty("summary")] [JsonProperty("summary")]
public object? Summary { get; set; } public string? Summary { get; set; }
/// <summary> /// <summary>
/// When present, a pithy one-liner about the item (usually only seen for movies). /// When present, a pithy one-liner about the item (usually only seen for movies).
/// </summary> /// </summary>
[JsonProperty("tagline")] [JsonProperty("tagline")]
public object? Tagline { get; set; } public string? Tagline { get; set; }
/// <summary> /// <summary>
/// When present, the URL for theme music for the item (usually only for TV shows). /// When present, the URL for theme music for the item (usually only for TV shows).
/// </summary> /// </summary>
[JsonProperty("theme")] [JsonProperty("theme")]
public object? Theme { get; set; } public string? Theme { get; set; }
/// <summary> /// <summary>
/// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.
/// </summary> /// </summary>
[JsonProperty("thumb")] [JsonProperty("thumb")]
public object? Thumb { get; set; } public string? Thumb { get; set; }
/// <summary> /// <summary>
/// Whene present, this is the string used for sorting the item. It&apos;s usually the title with any leading articles removed (e.g. “Simpsons”). /// Whene present, this is the string used for sorting the item. It&apos;s usually the title with any leading articles removed (e.g. “Simpsons”).
/// </summary> /// </summary>
[JsonProperty("titleSort")] [JsonProperty("titleSort")]
public object? TitleSort { get; set; } public string? TitleSort { get; set; }
/// <summary> /// <summary>
/// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).
@@ -371,25 +393,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When the user has rated an item, this contains the user rating /// When the user has rated an item, this contains the user rating
/// </summary> /// </summary>
[JsonProperty("userRating")] [JsonProperty("userRating")]
public double? UserRating { get; set; } public float? UserRating { get; set; }
/// <summary> /// <summary>
/// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions.
/// </summary> /// </summary>
[JsonProperty("viewCount")] [JsonProperty("viewCount")]
public long? ViewCount { get; set; } public int? ViewCount { get; set; }
/// <summary> /// <summary>
/// For shows and seasons, contains the number of viewed episodes. /// For shows and seasons, contains the number of viewed episodes.
/// </summary> /// </summary>
[JsonProperty("viewedLeafCount")] [JsonProperty("viewedLeafCount")]
public long? ViewedLeafCount { get; set; } public int? ViewedLeafCount { get; set; }
/// <summary> /// <summary>
/// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.
/// </summary> /// </summary>
[JsonProperty("viewOffset")] [JsonProperty("viewOffset")]
public long? ViewOffset { get; set; } public int? ViewOffset { get; set; }
[JsonProperty("Writer")] [JsonProperty("Writer")]
public List<Tag>? Writer { get; set; } public List<Tag>? Writer { get; set; }
@@ -398,7 +420,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// When present, the year associated with the item&apos;s release (e.g. release year for a movie). /// When present, the year associated with the item&apos;s release (e.g. release year for a movie).
/// </summary> /// </summary>
[JsonProperty("year")] [JsonProperty("year")]
public long? Year { get; set; } public int? Year { get; set; }
[JsonProperty("MetadataItem")] [JsonProperty("MetadataItem")]
public List<Items>? MetadataItemValue { get; set; } public List<Items>? MetadataItemValue { get; set; }

View File

@@ -24,38 +24,53 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public class Part public class Part
{ {
/// <summary>
/// Indicates if the part is accessible.
/// </summary>
[JsonProperty("accessible")]
public bool? Accessible { get; set; }
[JsonProperty("audioProfile")] [JsonProperty("audioProfile")]
public object? AudioProfile { get; set; } public string? AudioProfile { get; set; }
/// <summary> /// <summary>
/// The container of the media file, such as `mp4` or `mkv` /// The container of the media file, such as `mp4` or `mkv`
/// </summary> /// </summary>
[JsonProperty("container")] [JsonProperty("container")]
public object? Container { get; set; } public string? Container { get; set; }
/// <summary> /// <summary>
/// The duration of the media item, in milliseconds /// The duration of the media item, in milliseconds
/// </summary> /// </summary>
[JsonProperty("duration")] [JsonProperty("duration")]
public long? Duration { get; set; } public int? Duration { get; set; }
/// <summary>
/// Indicates if the part exists.
/// </summary>
[JsonProperty("exists")]
public bool? Exists { get; set; }
/// <summary> /// <summary>
/// The local file path at which the part is stored on the server /// The local file path at which the part is stored on the server
/// </summary> /// </summary>
[JsonProperty("file")] [JsonProperty("file")]
public object? File { get; set; } public string? File { get; set; }
[JsonProperty("has64bitOffsets")] [JsonProperty("has64bitOffsets")]
public bool? Has64bitOffsets { get; set; } public bool? Has64bitOffsets { get; set; }
[JsonProperty("id")] [JsonProperty("id")]
public long? Id { get; set; } public long Id { get; set; } = default!;
[JsonProperty("indexes")]
public string? Indexes { get; set; }
/// <summary> /// <summary>
/// The key from which the media can be streamed /// The key from which the media can be streamed
/// </summary> /// </summary>
[JsonProperty("key")] [JsonProperty("key")]
public object? Key { get; set; } public string Key { get; set; } = default!;
[JsonProperty("optimizedForStreaming")] [JsonProperty("optimizedForStreaming")]
public bool? OptimizedForStreaming { get; set; } public bool? OptimizedForStreaming { get; set; }
@@ -70,7 +85,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public List<Stream>? Stream { get; set; } public List<Stream>? Stream { get; set; }
[JsonProperty("videoProfile")] [JsonProperty("videoProfile")]
public object? VideoProfile { get; set; } public string? VideoProfile { get; set; }
[JsonProperty("additionalProperties")] [JsonProperty("additionalProperties")]
public Dictionary<string, object>? AdditionalProperties { get; set; } public Dictionary<string, object>? AdditionalProperties { get; set; }

View File

@@ -0,0 +1,96 @@
//------------------------------------------------------------------------------
// <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.Components
{
using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
public class PlexDevice
{
[JsonProperty("name")]
public string Name { get; set; } = default!;
[JsonProperty("product")]
public string Product { get; set; } = default!;
[JsonProperty("productVersion")]
public string ProductVersion { get; set; } = default!;
[JsonProperty("platform", NullValueHandling = NullValueHandling.Include)]
public string? Platform { get; set; }
[JsonProperty("platformVersion", NullValueHandling = NullValueHandling.Include)]
public string? PlatformVersion { get; set; }
[JsonProperty("device", NullValueHandling = NullValueHandling.Include)]
public string? Device { get; set; }
[JsonProperty("clientIdentifier")]
public string ClientIdentifier { get; set; } = default!;
[JsonProperty("createdAt")]
public DateTime CreatedAt { get; set; } = default!;
[JsonProperty("lastSeenAt")]
public DateTime LastSeenAt { get; set; } = default!;
[JsonProperty("provides")]
public string Provides { get; set; } = default!;
/// <summary>
/// ownerId is null when the device is owned by the token used to send the request
/// </summary>
[JsonProperty("ownerId", NullValueHandling = NullValueHandling.Include)]
public long? OwnerId { get; set; }
[JsonProperty("sourceTitle", NullValueHandling = NullValueHandling.Include)]
public string? SourceTitle { get; set; }
[JsonProperty("publicAddress")]
public string PublicAddress { get; set; } = default!;
[JsonProperty("accessToken")]
public string AccessToken { get; set; } = default!;
[JsonProperty("owned")]
public bool Owned { get; set; } = default!;
[JsonProperty("home")]
public bool Home { get; set; } = default!;
[JsonProperty("synced")]
public bool Synced { get; set; } = default!;
[JsonProperty("relay")]
public bool Relay { get; set; } = default!;
[JsonProperty("presence")]
public bool Presence { get; set; } = default!;
[JsonProperty("httpsRequired")]
public bool HttpsRequired { get; set; } = default!;
[JsonProperty("publicAddressMatches")]
public bool PublicAddressMatches { get; set; } = default!;
[JsonProperty("dnsRebindingProtection")]
public bool DnsRebindingProtection { get; set; } = default!;
[JsonProperty("natLoopbackSupported")]
public bool NatLoopbackSupported { get; set; } = default!;
[JsonProperty("connections")]
public List<Connections> Connections { get; set; } = default!;
}
}

View File

@@ -0,0 +1,60 @@
//------------------------------------------------------------------------------
// <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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
/// <summary>
/// The protocol used for the connection (http, https, etc)
/// </summary>
public enum PlexDeviceProtocol
{
[JsonProperty("http")]
Http,
[JsonProperty("https")]
Https,
}
public static class PlexDeviceProtocolExtension
{
public static string Value(this PlexDeviceProtocol value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static PlexDeviceProtocol ToEnum(this string value)
{
foreach(var field in typeof(PlexDeviceProtocol).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 PlexDeviceProtocol)
{
return (PlexDeviceProtocol)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum PlexDeviceProtocol");
}
}
}

View File

@@ -0,0 +1,38 @@
//------------------------------------------------------------------------------
// <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.Components
{
using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
public class Services
{
[JsonProperty("identifier")]
public string Identifier { get; set; } = default!;
[JsonProperty("endpoint")]
public string Endpoint { get; set; } = default!;
[JsonProperty("token", NullValueHandling = NullValueHandling.Include)]
public string? Token { get; set; }
[JsonProperty("secret", NullValueHandling = NullValueHandling.Include)]
public string? Secret { get; set; }
[JsonProperty("status")]
public UserPlexAccountStatus Status { get; set; } = default!;
}
}

View File

@@ -23,113 +23,306 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public class Stream public class Stream
{ {
/// <summary>
/// Indicates if this stream is default.
/// </summary>
[JsonProperty("default")] [JsonProperty("default")]
public bool? Default { get; set; } public bool? Default { get; set; }
/// <summary>
/// Audio channel layout.
/// </summary>
[JsonProperty("audioChannelLayout")] [JsonProperty("audioChannelLayout")]
public object? AudioChannelLayout { get; set; } public string? AudioChannelLayout { get; set; }
[JsonProperty("bitDepth")]
public long? BitDepth { get; set; }
[JsonProperty("bitrate")]
public long? Bitrate { get; set; }
/// <summary> /// <summary>
/// For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. /// Number of audio channels (for audio streams).
/// </summary>
[JsonProperty("channels")]
public int? Channels { get; set; }
/// <summary>
/// Bit depth of the video stream.
/// </summary>
[JsonProperty("bitDepth")]
public int? BitDepth { get; set; }
/// <summary>
/// Dolby Vision BL compatibility ID.
/// </summary>
[JsonProperty("DOVIBLCompatID")]
public int? DOVIBLCompatID { get; set; }
/// <summary>
/// Indicates if Dolby Vision BL is present.
/// </summary>
[JsonProperty("DOVIBLPresent")]
public bool? DOVIBLPresent { get; set; }
/// <summary>
/// Indicates if Dolby Vision EL is present.
/// </summary>
[JsonProperty("DOVIELPresent")]
public bool? DOVIELPresent { get; set; }
/// <summary>
/// Dolby Vision level.
/// </summary>
[JsonProperty("DOVILevel")]
public int? DOVILevel { get; set; }
/// <summary>
/// Indicates if Dolby Vision is present.
/// </summary>
[JsonProperty("DOVIPresent")]
public bool? DOVIPresent { get; set; }
/// <summary>
/// Dolby Vision profile.
/// </summary>
[JsonProperty("DOVIProfile")]
public int? DOVIProfile { get; set; }
/// <summary>
/// Indicates if Dolby Vision RPU is present.
/// </summary>
[JsonProperty("DOVIRPUPresent")]
public bool? DOVIRPUPresent { get; set; }
/// <summary>
/// Dolby Vision version.
/// </summary>
[JsonProperty("DOVIVersion")]
public string? DOVIVersion { get; set; }
/// <summary>
/// Bitrate of the stream.
/// </summary>
[JsonProperty("bitrate")]
public int? Bitrate { get; set; }
/// <summary>
/// Indicates if the stream can auto-sync.
/// </summary> /// </summary>
[JsonProperty("canAutoSync")] [JsonProperty("canAutoSync")]
public bool? CanAutoSync { get; set; } public bool? CanAutoSync { get; set; }
/// <summary>
/// Chroma sample location.
/// </summary>
[JsonProperty("chromaLocation")] [JsonProperty("chromaLocation")]
public object? ChromaLocation { get; set; } public string? ChromaLocation { get; set; }
[JsonProperty("chromaSubsampling")]
public object? ChromaSubsampling { get; set; }
/// <summary> /// <summary>
/// The codec of the stream, such as `h264` or `aac` /// Chroma subsampling format.
/// </summary>
[JsonProperty("chromaSubsampling")]
public string? ChromaSubsampling { get; set; }
/// <summary>
/// Coded video height.
/// </summary>
[JsonProperty("codedHeight")]
public int? CodedHeight { get; set; }
/// <summary>
/// Coded video width.
/// </summary>
[JsonProperty("codedWidth")]
public int? CodedWidth { get; set; }
[JsonProperty("closedCaptions")]
public bool? ClosedCaptions { get; set; }
/// <summary>
/// Codec used by the stream.
/// </summary> /// </summary>
[JsonProperty("codec")] [JsonProperty("codec")]
public object? Codec { get; set; } public string Codec { get; set; } = default!;
[JsonProperty("colorPrimaries")]
public object? ColorPrimaries { get; set; }
[JsonProperty("colorRange")]
public object? ColorRange { get; set; }
[JsonProperty("colorSpace")]
public object? ColorSpace { get; set; }
[JsonProperty("colorTrc")]
public object? ColorTrc { get; set; }
/// <summary> /// <summary>
/// A friendly name for the stream, often comprised of the language and codec information /// Color primaries used.
/// </summary>
[JsonProperty("colorPrimaries")]
public string? ColorPrimaries { get; set; }
/// <summary>
/// Color range (e.g., tv).
/// </summary>
[JsonProperty("colorRange")]
public string? ColorRange { get; set; }
/// <summary>
/// Color space.
/// </summary>
[JsonProperty("colorSpace")]
public string? ColorSpace { get; set; }
/// <summary>
/// Color transfer characteristics.
/// </summary>
[JsonProperty("colorTrc")]
public string? ColorTrc { get; set; }
/// <summary>
/// Display title for the stream.
/// </summary> /// </summary>
[JsonProperty("displayTitle")] [JsonProperty("displayTitle")]
public object? DisplayTitle { get; set; } public string DisplayTitle { get; set; } = default!;
/// <summary>
/// Extended display title for the stream.
/// </summary>
[JsonProperty("extendedDisplayTitle")]
public string? ExtendedDisplayTitle { get; set; }
/// <summary>
/// Frame rate of the stream.
/// </summary>
[JsonProperty("frameRate")] [JsonProperty("frameRate")]
public double? FrameRate { get; set; } public float? FrameRate { get; set; }
[JsonProperty("hasScalingMatrix")] [JsonProperty("hasScalingMatrix")]
public object? HasScalingMatrix { get; set; } public bool? HasScalingMatrix { get; set; }
[JsonProperty("height")]
public long? Height { get; set; }
[JsonProperty("id")]
public long? Id { get; set; }
/// <summary> /// <summary>
/// If the stream is part of the `Part` and not an external resource, the index of the stream within that part /// Height of the video stream.
/// </summary>
[JsonProperty("height")]
public int? Height { get; set; }
/// <summary>
/// Unique stream identifier.
/// </summary>
[JsonProperty("id")]
public int Id { get; set; } = default!;
/// <summary>
/// Index of the stream.
/// </summary> /// </summary>
[JsonProperty("index")] [JsonProperty("index")]
public long? Index { get; set; } public int? Index { get; set; }
/// <summary> /// <summary>
/// If the stream is independently streamable, the key from which it can be streamed /// Key to access this stream part.
/// </summary> /// </summary>
[JsonProperty("key")] [JsonProperty("key")]
public object? Key { get; set; } public string Key { get; set; } = default!;
[JsonProperty("language")]
public object? Language { get; set; }
/// <summary> /// <summary>
/// The three character language code for the stream contents /// Language of the stream.
/// </summary>
[JsonProperty("language")]
public string? Language { get; set; }
/// <summary>
/// ISO language code.
/// </summary> /// </summary>
[JsonProperty("languageCode")] [JsonProperty("languageCode")]
public object? LanguageCode { get; set; } public string? LanguageCode { get; set; }
/// <summary>
/// Language tag (e.g., en).
/// </summary>
[JsonProperty("languageTag")]
public string? LanguageTag { get; set; }
/// <summary>
/// Format of the stream (e.g., srt).
/// </summary>
[JsonProperty("format")]
public string? Format { get; set; }
/// <summary>
/// Indicates whether header compression is enabled.
/// </summary>
[JsonProperty("headerCompression")]
public bool? HeaderCompression { get; set; }
/// <summary>
/// Video level.
/// </summary>
[JsonProperty("level")] [JsonProperty("level")]
public long? Level { get; set; } public int? Level { get; set; }
/// <summary>
/// Indicates if this is the original stream.
/// </summary>
[JsonProperty("original")]
public bool? Original { get; set; }
/// <summary>
/// Video profile.
/// </summary>
[JsonProperty("profile")] [JsonProperty("profile")]
public object? Profile { get; set; } public string? Profile { get; set; }
/// <summary>
/// Number of reference frames.
/// </summary>
[JsonProperty("refFrames")] [JsonProperty("refFrames")]
public long? RefFrames { get; set; } public int? RefFrames { get; set; }
/// <summary>
/// Sampling rate for the audio stream.
/// </summary>
[JsonProperty("samplingRate")] [JsonProperty("samplingRate")]
public long? SamplingRate { get; set; } public int? SamplingRate { get; set; }
[JsonProperty("scanType")]
public string? ScanType { get; set; }
[JsonProperty("embeddedInVideo")]
public string? EmbeddedInVideo { get; set; }
/// <summary>
/// Indicates if this stream is selected (applicable for audio streams).
/// </summary>
[JsonProperty("selected")] [JsonProperty("selected")]
public bool? Selected { get; set; } public bool? Selected { get; set; }
[JsonProperty("streamIdentifier")] [JsonProperty("forced")]
public long? StreamIdentifier { get; set; } public bool? Forced { get; set; }
/// <summary> /// <summary>
/// A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics /// Indicates if the stream is for the hearing impaired.
/// </summary>
[JsonProperty("hearingImpaired")]
public bool? HearingImpaired { get; set; }
/// <summary>
/// Indicates if the stream is a dub.
/// </summary>
[JsonProperty("dub")]
public bool? Dub { get; set; }
/// <summary>
/// Optional title for the stream (e.g., language variant).
/// </summary>
[JsonProperty("title")]
public string? Title { get; set; }
[JsonProperty("streamIdentifier")]
public int? StreamIdentifier { get; set; }
/// <summary>
/// Stream type:<br/>
///
/// <remarks>
/// - VIDEO = 1<br/>
/// - AUDIO = 2<br/>
/// - SUBTITLE = 3<br/>
///
/// </remarks>
/// </summary> /// </summary>
[JsonProperty("streamType")] [JsonProperty("streamType")]
public long? StreamType { get; set; } public long StreamType { get; } = 1;
/// <summary>
/// Width of the video stream.
/// </summary>
[JsonProperty("width")] [JsonProperty("width")]
public long? Width { get; set; } public int? Width { get; set; }
[JsonProperty("additionalProperties")] [JsonProperty("additionalProperties")]
public Dictionary<string, object>? AdditionalProperties { get; set; } public Dictionary<string, object>? AdditionalProperties { get; set; }

View File

@@ -0,0 +1,62 @@
//------------------------------------------------------------------------------
// <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.Components
{
using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
/// <summary>
/// If the account&apos;s Plex Pass subscription is active
/// </summary>
public class Subscription
{
/// <summary>
/// List of features allowed on your Plex Pass subscription
/// </summary>
[JsonProperty("features")]
public List<string>? Features { get; set; }
/// <summary>
/// If the account&apos;s Plex Pass subscription is active
/// </summary>
[JsonProperty("active")]
public bool? Active { get; set; }
/// <summary>
/// Date the account subscribed to Plex Pass
/// </summary>
[JsonProperty("subscribedAt")]
public string? SubscribedAt { get; set; } = null;
/// <summary>
/// String representation of subscriptionActive
/// </summary>
[JsonProperty("status")]
public UserPlexAccountSubscriptionStatus? Status { get; set; }
/// <summary>
/// Payment service used for your Plex Pass subscription
/// </summary>
[JsonProperty("paymentService")]
public string? PaymentService { get; set; } = null;
/// <summary>
/// Name of Plex Pass subscription plan
/// </summary>
[JsonProperty("plan")]
public string? Plan { get; set; } = null;
}
}

View File

@@ -35,11 +35,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// A filter parameter that can be used to query for more content that matches this tag value. /// A filter parameter that can be used to query for more content that matches this tag value.
/// </summary> /// </summary>
[JsonProperty("filter")] [JsonProperty("filter")]
public object? Filter { get; set; } public string? Filter { get; set; }
[JsonProperty("id")] [JsonProperty("id")]
public long? Id { get; set; } public int? Id { get; set; }
/// <summary>
/// The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.
/// </summary>
[JsonProperty("ratingKey")] [JsonProperty("ratingKey")]
public string? RatingKey { get; set; } public string? RatingKey { get; set; }
@@ -47,24 +50,24 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
/// The role this actor played /// The role this actor played
/// </summary> /// </summary>
[JsonProperty("role")] [JsonProperty("role")]
public object? Role { get; set; } public string? Role { get; set; }
/// <summary> /// <summary>
/// The value of the tag (the name) /// The value of the tag (the name)
/// </summary> /// </summary>
[JsonProperty("tag")] [JsonProperty("tag")]
public object? TagValue { get; set; } public string TagValue { get; set; } = default!;
/// <summary> /// <summary>
/// Plex identifier for this tag which can be used to fetch additional information from plex.tv /// Plex identifier for this tag which can be used to fetch additional information from plex.tv
/// </summary> /// </summary>
[JsonProperty("tagKey")] [JsonProperty("tagKey")]
public object? TagKey { get; set; } public string? TagKey { get; set; }
[JsonProperty("tagType")] [JsonProperty("tagType")]
public long? TagType { get; set; } public int? TagType { get; set; }
[JsonProperty("thumb")] [JsonProperty("thumb")]
public object? Thumb { get; set; } public string? Thumb { get; set; }
} }
} }

View File

@@ -0,0 +1,250 @@
//------------------------------------------------------------------------------
// <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.Components
{
using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
public class UserPlexAccount
{
/// <summary>
/// Unknown
/// </summary>
[JsonProperty("adsConsent")]
public bool? AdsConsent { get; set; } = null;
[JsonProperty("adsConsentReminderAt")]
public long? AdsConsentReminderAt { get; set; } = null;
[JsonProperty("adsConsentSetAt")]
public long? AdsConsentSetAt { get; set; } = null;
/// <summary>
/// Unknown
/// </summary>
[JsonProperty("anonymous")]
public bool? Anonymous { get; set; } = false;
/// <summary>
/// The account token
/// </summary>
[JsonProperty("authToken")]
public string AuthToken { get; set; } = default!;
/// <summary>
/// If the two-factor authentication backup codes have been created
/// </summary>
[JsonProperty("backupCodesCreated")]
public bool? BackupCodesCreated { get; set; } = false;
/// <summary>
/// If the account has been confirmed
/// </summary>
[JsonProperty("confirmed")]
public bool? Confirmed { get; set; } = false;
/// <summary>
/// The account country
/// </summary>
[JsonProperty("country")]
public string? Country { get; set; }
/// <summary>
/// The account email address
/// </summary>
[JsonProperty("email")]
public string Email { get; set; } = default!;
/// <summary>
/// If login with email only is enabled
/// </summary>
[JsonProperty("emailOnlyAuth")]
public bool? EmailOnlyAuth { get; set; } = false;
/// <summary>
/// If experimental features are enabled
/// </summary>
[JsonProperty("experimentalFeatures")]
public bool? ExperimentalFeatures { get; set; } = false;
/// <summary>
/// Your account full name
/// </summary>
[JsonProperty("friendlyName")]
public string FriendlyName { get; set; } = default!;
/// <summary>
/// List of devices your allowed to use with this account
/// </summary>
[JsonProperty("entitlements")]
public List<string>? Entitlements { get; set; }
/// <summary>
/// If the account is a Plex Home guest user
/// </summary>
[JsonProperty("guest")]
public bool? Guest { get; set; } = false;
/// <summary>
/// If the account has a password
/// </summary>
[JsonProperty("hasPassword")]
public bool? HasPassword { get; set; } = true;
/// <summary>
/// If the account is a Plex Home user
/// </summary>
[JsonProperty("home")]
public bool? Home { get; set; } = false;
/// <summary>
/// If the account is the Plex Home admin
/// </summary>
[JsonProperty("homeAdmin")]
public bool? HomeAdmin { get; set; } = false;
/// <summary>
/// The number of accounts in the Plex Home
/// </summary>
[JsonProperty("homeSize")]
public int? HomeSize { get; set; }
/// <summary>
/// The Plex account ID
/// </summary>
[JsonProperty("id")]
public int Id { get; set; } = default!;
/// <summary>
/// Unix epoch datetime in seconds
/// </summary>
[JsonProperty("joinedAt")]
public long JoinedAt { get; set; } = default!;
/// <summary>
/// The account locale
/// </summary>
[JsonProperty("locale")]
public string? Locale { get; set; } = null;
/// <summary>
/// If you are subscribed to the Plex newsletter
/// </summary>
[JsonProperty("mailingListActive")]
public bool? MailingListActive { get; set; } = false;
/// <summary>
/// Your current mailing list status
/// </summary>
[JsonProperty("mailingListStatus")]
public Models.Components.MailingListStatus? MailingListStatus { get; set; }
/// <summary>
/// The maximum number of accounts allowed in the Plex Home
/// </summary>
[JsonProperty("maxHomeSize")]
public int? MaxHomeSize { get; set; }
/// <summary>
/// [Might be removed] The hashed Plex Home PIN
/// </summary>
[Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible")]
[JsonProperty("pin")]
public string? Pin { get; set; }
[JsonProperty("profile")]
public UserProfile? Profile { get; set; }
/// <summary>
/// If the account has a Plex Home PIN enabled
/// </summary>
[JsonProperty("protected")]
public bool? Protected { get; set; } = false;
/// <summary>
/// Unix epoch datetime in seconds
/// </summary>
[JsonProperty("rememberExpiresAt")]
public long? RememberExpiresAt { get; set; }
/// <summary>
/// If the account is a Plex Home managed user
/// </summary>
[JsonProperty("restricted")]
public bool? Restricted { get; set; } = false;
/// <summary>
/// [Might be removed] List of account roles. Plexpass membership listed here
/// </summary>
[JsonProperty("roles")]
public List<string>? Roles { get; set; }
/// <summary>
/// Unknown
/// </summary>
[JsonProperty("scrobbleTypes")]
public string? ScrobbleTypes { get; set; }
[JsonProperty("services")]
public List<Models.Components.Services>? Services { get; set; }
/// <summary>
/// If the account&apos;s Plex Pass subscription is active
/// </summary>
[JsonProperty("subscription")]
public Models.Components.Subscription? Subscription { get; set; }
/// <summary>
/// Description of the Plex Pass subscription
/// </summary>
[JsonProperty("subscriptionDescription")]
public string? SubscriptionDescription { get; set; } = null;
[JsonProperty("subscriptions")]
public List<UserPlexAccountSubscription>? Subscriptions { get; set; }
/// <summary>
/// URL of the account thumbnail
/// </summary>
[JsonProperty("thumb")]
public string? Thumb { get; set; }
/// <summary>
/// The title of the account (username or friendly name)
/// </summary>
[JsonProperty("title")]
public string Title { get; set; } = default!;
/// <summary>
/// If two-factor authentication is enabled
/// </summary>
[JsonProperty("twoFactorEnabled")]
public bool? TwoFactorEnabled { get; set; } = false;
/// <summary>
/// The account username
/// </summary>
[JsonProperty("username")]
public string Username { get; set; } = default!;
/// <summary>
/// The account UUID
/// </summary>
[JsonProperty("uuid")]
public string Uuid { get; set; } = default!;
[JsonProperty("attributionPartner")]
public string? AttributionPartner { get; set; } = null;
}
}

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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
[JsonConverter(typeof(OpenEnumConverter))]
public class UserPlexAccountStatus : IEquatable<UserPlexAccountStatus>
{
public static readonly UserPlexAccountStatus Online = new UserPlexAccountStatus("online");
public static readonly UserPlexAccountStatus Offline = new UserPlexAccountStatus("offline");
private static readonly Dictionary <string, UserPlexAccountStatus> _knownValues =
new Dictionary <string, UserPlexAccountStatus> ()
{
["online"] = Online,
["offline"] = Offline
};
private static readonly ConcurrentDictionary<string, UserPlexAccountStatus> _values =
new ConcurrentDictionary<string, UserPlexAccountStatus>(_knownValues);
private UserPlexAccountStatus(string value)
{
if (value == null) throw new ArgumentNullException(nameof(value));
Value = value;
}
public string Value { get; }
public static UserPlexAccountStatus Of(string value)
{
return _values.GetOrAdd(value, _ => new UserPlexAccountStatus(value));
}
public static implicit operator UserPlexAccountStatus(string value) => Of(value);
public static implicit operator string(UserPlexAccountStatus userplexaccountstatus) => userplexaccountstatus.Value;
public static UserPlexAccountStatus[] Values()
{
return _values.Values.ToArray();
}
public override string ToString() => Value.ToString();
public bool IsKnown()
{
return _knownValues.ContainsKey(Value);
}
public override bool Equals(object? obj) => Equals(obj as UserPlexAccountStatus);
public bool Equals(UserPlexAccountStatus? other)
{
if (ReferenceEquals(this, other)) return true;
if (other is null) return false;
return string.Equals(Value, other.Value);
}
public override int GetHashCode() => Value.GetHashCode();
}
}

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.Components
{
using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
public class UserPlexAccountSubscription
{
/// <summary>
/// List of features allowed on your Plex Pass subscription
/// </summary>
[JsonProperty("features")]
public List<string>? Features { get; set; }
/// <summary>
/// If the account&apos;s Plex Pass subscription is active
/// </summary>
[JsonProperty("active")]
public bool? Active { get; set; }
/// <summary>
/// Date the account subscribed to Plex Pass
/// </summary>
[JsonProperty("subscribedAt")]
public string? SubscribedAt { get; set; } = null;
/// <summary>
/// String representation of subscriptionActive
/// </summary>
[JsonProperty("status")]
public UserPlexAccountSubscriptionsStatus? Status { get; set; }
/// <summary>
/// Payment service used for your Plex Pass subscription
/// </summary>
[JsonProperty("paymentService")]
public string? PaymentService { get; set; } = null;
/// <summary>
/// Name of Plex Pass subscription plan
/// </summary>
[JsonProperty("plan")]
public string? Plan { get; set; } = null;
}
}

View File

@@ -0,0 +1,78 @@
//------------------------------------------------------------------------------
// <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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
/// <summary>
/// String representation of subscriptionActive
/// </summary>
[JsonConverter(typeof(OpenEnumConverter))]
public class UserPlexAccountSubscriptionStatus : IEquatable<UserPlexAccountSubscriptionStatus>
{
public static readonly UserPlexAccountSubscriptionStatus Inactive = new UserPlexAccountSubscriptionStatus("Inactive");
public static readonly UserPlexAccountSubscriptionStatus Active = new UserPlexAccountSubscriptionStatus("Active");
private static readonly Dictionary <string, UserPlexAccountSubscriptionStatus> _knownValues =
new Dictionary <string, UserPlexAccountSubscriptionStatus> ()
{
["Inactive"] = Inactive,
["Active"] = Active
};
private static readonly ConcurrentDictionary<string, UserPlexAccountSubscriptionStatus> _values =
new ConcurrentDictionary<string, UserPlexAccountSubscriptionStatus>(_knownValues);
private UserPlexAccountSubscriptionStatus(string value)
{
if (value == null) throw new ArgumentNullException(nameof(value));
Value = value;
}
public string Value { get; }
public static UserPlexAccountSubscriptionStatus Of(string value)
{
return _values.GetOrAdd(value, _ => new UserPlexAccountSubscriptionStatus(value));
}
public static implicit operator UserPlexAccountSubscriptionStatus(string value) => Of(value);
public static implicit operator string(UserPlexAccountSubscriptionStatus userplexaccountsubscriptionstatus) => userplexaccountsubscriptionstatus.Value;
public static UserPlexAccountSubscriptionStatus[] Values()
{
return _values.Values.ToArray();
}
public override string ToString() => Value.ToString();
public bool IsKnown()
{
return _knownValues.ContainsKey(Value);
}
public override bool Equals(object? obj) => Equals(obj as UserPlexAccountSubscriptionStatus);
public bool Equals(UserPlexAccountSubscriptionStatus? other)
{
if (ReferenceEquals(this, other)) return true;
if (other is null) return false;
return string.Equals(Value, other.Value);
}
public override int GetHashCode() => Value.GetHashCode();
}
}

View File

@@ -0,0 +1,78 @@
//------------------------------------------------------------------------------
// <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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
/// <summary>
/// String representation of subscriptionActive
/// </summary>
[JsonConverter(typeof(OpenEnumConverter))]
public class UserPlexAccountSubscriptionsStatus : IEquatable<UserPlexAccountSubscriptionsStatus>
{
public static readonly UserPlexAccountSubscriptionsStatus Inactive = new UserPlexAccountSubscriptionsStatus("Inactive");
public static readonly UserPlexAccountSubscriptionsStatus Active = new UserPlexAccountSubscriptionsStatus("Active");
private static readonly Dictionary <string, UserPlexAccountSubscriptionsStatus> _knownValues =
new Dictionary <string, UserPlexAccountSubscriptionsStatus> ()
{
["Inactive"] = Inactive,
["Active"] = Active
};
private static readonly ConcurrentDictionary<string, UserPlexAccountSubscriptionsStatus> _values =
new ConcurrentDictionary<string, UserPlexAccountSubscriptionsStatus>(_knownValues);
private UserPlexAccountSubscriptionsStatus(string value)
{
if (value == null) throw new ArgumentNullException(nameof(value));
Value = value;
}
public string Value { get; }
public static UserPlexAccountSubscriptionsStatus Of(string value)
{
return _values.GetOrAdd(value, _ => new UserPlexAccountSubscriptionsStatus(value));
}
public static implicit operator UserPlexAccountSubscriptionsStatus(string value) => Of(value);
public static implicit operator string(UserPlexAccountSubscriptionsStatus userplexaccountsubscriptionsstatus) => userplexaccountsubscriptionsstatus.Value;
public static UserPlexAccountSubscriptionsStatus[] Values()
{
return _values.Values.ToArray();
}
public override string ToString() => Value.ToString();
public bool IsKnown()
{
return _knownValues.ContainsKey(Value);
}
public override bool Equals(object? obj) => Equals(obj as UserPlexAccountSubscriptionsStatus);
public bool Equals(UserPlexAccountSubscriptionsStatus? other)
{
if (ReferenceEquals(this, other)) return true;
if (other is null) return false;
return string.Equals(Value, other.Value);
}
public override int GetHashCode() => Value.GetHashCode();
}
}

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.Components
{
using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System.Collections.Generic;
public class UserProfile
{
/// <summary>
/// If the account has automatically select audio and subtitle tracks enabled
/// </summary>
[JsonProperty("autoSelectAudio")]
public bool? AutoSelectAudio { get; set; } = true;
/// <summary>
/// The preferred audio language for the account
/// </summary>
[JsonProperty("defaultAudioLanguage", NullValueHandling = NullValueHandling.Include)]
public string? DefaultAudioLanguage { get; set; }
[JsonProperty("defaultAudioAccessibility")]
public DefaultAudioAccessibility? DefaultAudioAccessibility { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.DefaultAudioAccessibility.PreferNonAccessibility;
/// <summary>
/// The preferred audio languages for the account
/// </summary>
[JsonProperty("defaultAudioLanguages")]
public List<string>? DefaultAudioLanguages { get; set; } = null;
/// <summary>
/// The preferred subtitle language for the account
/// </summary>
[JsonProperty("defaultSubtitleLanguage", NullValueHandling = NullValueHandling.Include)]
public string? DefaultSubtitleLanguage { get; set; }
/// <summary>
/// The preferred subtitle languages for the account
/// </summary>
[JsonProperty("defaultSubtitleLanguages")]
public List<string>? DefaultSubtitleLanguages { get; set; } = null;
[JsonProperty("autoSelectSubtitle")]
public AutoSelectSubtitle? AutoSelectSubtitle { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.AutoSelectSubtitle.ManuallySelected;
[JsonProperty("defaultSubtitleAccessibility")]
public DefaultSubtitleAccessibility? DefaultSubtitleAccessibility { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.DefaultSubtitleAccessibility.PreferNonSdh;
[JsonProperty("defaultSubtitleForced")]
public DefaultSubtitleForced? DefaultSubtitleForced { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.DefaultSubtitleForced.PreferNonForced;
[JsonProperty("watchedIndicator")]
public WatchedIndicator? WatchedIndicator { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.WatchedIndicator.None;
[JsonProperty("mediaReviewsVisibility")]
public MediaReviewsVisibility? MediaReviewsVisibility { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.MediaReviewsVisibility.NoOne;
/// <summary>
/// The languages for media reviews visibility
/// </summary>
[JsonProperty("mediaReviewsLanguages")]
public List<string>? MediaReviewsLanguages { get; set; } = null;
}
}

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.Components
{
using LukeHagar.PlexAPI.SDK.Utils;
/// <summary>
/// Whether or not media watched indicators are enabled (little orange dot on media)
/// </summary>
public enum WatchedIndicator
{
None = 0,
MoviesAndTvShows = 1,
Movies = 2,
TvShows = 3,
}
}

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 Errors
{
[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 GetServerResourcesErrors
{
[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,58 @@
//------------------------------------------------------------------------------
// <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;
using System.Collections.Generic;
using System.Net.Http;
public class GetServerResourcesUnauthorizedPayload
{
[JsonProperty("errors")]
public List<GetServerResourcesErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
/// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary>
public class GetServerResourcesUnauthorized : PlexAPIError
{
/// <summary>
/// The original data that was passed to this exception.
/// </summary>
public GetServerResourcesUnauthorizedPayload Payload { get; }
[Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerResourcesUnauthorized.Payload.Errors instead.")]
public List<GetServerResourcesErrors>? Errors { get; set; }
public GetServerResourcesUnauthorized(
GetServerResourcesUnauthorizedPayload payload,
HttpResponseMessage rawResponse,
string body
): base("API error occurred", rawResponse, body)
{
Payload = payload;
#pragma warning disable CS0618
Errors = payload.Errors;
#pragma warning restore CS0618
}
}
}

View File

@@ -0,0 +1,58 @@
//------------------------------------------------------------------------------
// <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;
using System.Collections.Generic;
using System.Net.Http;
public class GetTokenDetailsBadRequestPayload
{
[JsonProperty("errors")]
public List<Errors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
/// <summary>
/// Bad Request - A parameter was not specified, or was specified incorrectly.
/// </summary>
public class GetTokenDetailsBadRequest : PlexAPIError
{
/// <summary>
/// The original data that was passed to this exception.
/// </summary>
public GetTokenDetailsBadRequestPayload Payload { get; }
[Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTokenDetailsBadRequest.Payload.Errors instead.")]
public List<Errors>? Errors { get; set; }
public GetTokenDetailsBadRequest(
GetTokenDetailsBadRequestPayload payload,
HttpResponseMessage rawResponse,
string body
): base("API error occurred", rawResponse, body)
{
Payload = payload;
#pragma warning disable CS0618
Errors = payload.Errors;
#pragma warning restore CS0618
}
}
}

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 GetTokenDetailsErrors
{
[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,58 @@
//------------------------------------------------------------------------------
// <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;
using System.Collections.Generic;
using System.Net.Http;
public class GetTokenDetailsUnauthorizedPayload
{
[JsonProperty("errors")]
public List<GetTokenDetailsErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
/// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary>
public class GetTokenDetailsUnauthorized : PlexAPIError
{
/// <summary>
/// The original data that was passed to this exception.
/// </summary>
public GetTokenDetailsUnauthorizedPayload Payload { get; }
[Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTokenDetailsUnauthorized.Payload.Errors instead.")]
public List<GetTokenDetailsErrors>? Errors { get; set; }
public GetTokenDetailsUnauthorized(
GetTokenDetailsUnauthorizedPayload payload,
HttpResponseMessage rawResponse,
string body
): base("API error occurred", rawResponse, body)
{
Payload = payload;
#pragma warning disable CS0618
Errors = payload.Errors;
#pragma warning restore CS0618
}
}
}

View File

@@ -0,0 +1,58 @@
//------------------------------------------------------------------------------
// <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;
using System.Collections.Generic;
using System.Net.Http;
public class GetUsersBadRequestPayload
{
[JsonProperty("errors")]
public List<GetUsersErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
/// <summary>
/// Bad Request - A parameter was not specified, or was specified incorrectly.
/// </summary>
public class GetUsersBadRequest : PlexAPIError
{
/// <summary>
/// The original data that was passed to this exception.
/// </summary>
public GetUsersBadRequestPayload Payload { get; }
[Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetUsersBadRequest.Payload.Errors instead.")]
public List<GetUsersErrors>? Errors { get; set; }
public GetUsersBadRequest(
GetUsersBadRequestPayload payload,
HttpResponseMessage rawResponse,
string body
): base("API error occurred", rawResponse, body)
{
Payload = payload;
#pragma warning disable CS0618
Errors = payload.Errors;
#pragma warning restore CS0618
}
}
}

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 GetUsersErrors
{
[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,58 @@
//------------------------------------------------------------------------------
// <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;
using System.Collections.Generic;
using System.Net.Http;
public class GetUsersUnauthorizedPayload
{
[JsonProperty("errors")]
public List<GetUsersUsersErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
/// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary>
public class GetUsersUnauthorized : PlexAPIError
{
/// <summary>
/// The original data that was passed to this exception.
/// </summary>
public GetUsersUnauthorizedPayload Payload { get; }
[Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetUsersUnauthorized.Payload.Errors instead.")]
public List<GetUsersUsersErrors>? Errors { get; set; }
public GetUsersUnauthorized(
GetUsersUnauthorizedPayload payload,
HttpResponseMessage rawResponse,
string body
): base("API error occurred", rawResponse, body)
{
Payload = payload;
#pragma warning disable CS0618
Errors = payload.Errors;
#pragma warning restore CS0618
}
}
}

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 GetUsersUsersErrors
{
[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 PostUsersSignInDataAuthenticationErrors
{
[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,58 @@
//------------------------------------------------------------------------------
// <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;
using System.Collections.Generic;
using System.Net.Http;
public class PostUsersSignInDataBadRequestPayload
{
[JsonProperty("errors")]
public List<PostUsersSignInDataErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
/// <summary>
/// Bad Request - A parameter was not specified, or was specified incorrectly.
/// </summary>
public class PostUsersSignInDataBadRequest : PlexAPIError
{
/// <summary>
/// The original data that was passed to this exception.
/// </summary>
public PostUsersSignInDataBadRequestPayload Payload { get; }
[Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use PostUsersSignInDataBadRequest.Payload.Errors instead.")]
public List<PostUsersSignInDataErrors>? Errors { get; set; }
public PostUsersSignInDataBadRequest(
PostUsersSignInDataBadRequestPayload payload,
HttpResponseMessage rawResponse,
string body
): base("API error occurred", rawResponse, body)
{
Payload = payload;
#pragma warning disable CS0618
Errors = payload.Errors;
#pragma warning restore CS0618
}
}
}

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 PostUsersSignInDataErrors
{
[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,58 @@
//------------------------------------------------------------------------------
// <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;
using System.Collections.Generic;
using System.Net.Http;
public class PostUsersSignInDataUnauthorizedPayload
{
[JsonProperty("errors")]
public List<PostUsersSignInDataAuthenticationErrors>? Errors { get; set; }
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
[JsonProperty("-")]
public HttpResponseMessage? RawResponse { get; set; }
}
/// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary>
public class PostUsersSignInDataUnauthorized : PlexAPIError
{
/// <summary>
/// The original data that was passed to this exception.
/// </summary>
public PostUsersSignInDataUnauthorizedPayload Payload { get; }
[Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use PostUsersSignInDataUnauthorized.Payload.Errors instead.")]
public List<PostUsersSignInDataAuthenticationErrors>? Errors { get; set; }
public PostUsersSignInDataUnauthorized(
PostUsersSignInDataUnauthorizedPayload payload,
HttpResponseMessage rawResponse,
string body
): base("API error occurred", rawResponse, body)
{
Payload = payload;
#pragma warning disable CS0618
Errors = payload.Errors;
#pragma warning restore CS0618
}
}
}

View File

@@ -120,43 +120,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Indicates the client supports ABR. /// Indicates the client supports ABR.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustQuality")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustQuality")]
public BoolInt? AutoAdjustQuality { get; set; } public BoolInt? AutoAdjustQuality { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Indicates if the server should adjust subtitles based on Voice Activity Data. /// Indicates if the server should adjust subtitles based on Voice Activity Data.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustSubtitle")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustSubtitle")]
public BoolInt? AutoAdjustSubtitle { get; set; } public BoolInt? AutoAdjustSubtitle { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Indicates the client supports direct playing the indicated content. /// Indicates the client supports direct playing the indicated content.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=directPlay")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directPlay")]
public BoolInt? DirectPlay { get; set; } public BoolInt? DirectPlay { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Indicates the client supports direct streaming the video of the indicated content. /// Indicates the client supports direct streaming the video of the indicated content.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStream")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStream")]
public BoolInt? DirectStream { get; set; } public BoolInt? DirectStream { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Indicates the client supports direct streaming the audio of the indicated content. /// Indicates the client supports direct streaming the audio of the indicated content.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStreamAudio")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStreamAudio")]
public BoolInt? DirectStreamAudio { get; set; } public BoolInt? DirectStreamAudio { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Indicates if resolution should be adjusted for orientation. /// Indicates if resolution should be adjusted for orientation.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=disableResolutionRotation")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=disableResolutionRotation")]
public BoolInt? DisableResolutionRotation { get; set; } public BoolInt? DisableResolutionRotation { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 /// Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=hasMDE")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=hasMDE")]
public BoolInt? HasMDE { get; set; } public BoolInt? HasMDE { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Network type of the client, can be used to help determine target bitrate. /// Network type of the client, can be used to help determine target bitrate.

View File

@@ -135,12 +135,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// If set, paths are relative to `Media Upload` path /// If set, paths are relative to `Media Upload` path
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=relative")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=relative")]
public BoolInt? Relative { get; set; } public BoolInt? Relative { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// If set, import media from iTunes. /// If set, import media from iTunes.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=importFromiTunes")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=importFromiTunes")]
public BoolInt? ImportFromiTunes { get; set; } public BoolInt? ImportFromiTunes { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
} }
} }

View File

@@ -103,9 +103,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string? Format { get; set; } public string? Format { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=forced")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=forced")]
public BoolInt? Forced { get; set; } public BoolInt? Forced { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=hearingImpaired")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=hearingImpaired")]
public BoolInt? HearingImpaired { get; set; } public BoolInt? HearingImpaired { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
} }
} }

View File

@@ -103,6 +103,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Play this item next (defaults to 0 - queueing at the end of manually queued items). /// Play this item next (defaults to 0 - queueing at the end of manually queued items).
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=next")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=next")]
public BoolInt? Next { get; set; } public BoolInt? Next { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
} }
} }

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>
/// Indicates if the user has access to all libraries.
/// </summary>
public enum AllLibraries
{
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>
/// Indicates if the user is allowed to upload from a camera.
/// </summary>
public enum AllowCameraUpload
{
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>
/// Indicates if the user has access to channels.
/// </summary>
public enum AllowChannels
{
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>
/// Indicates if the user can manage subtitles.
/// </summary>
public enum AllowSubtitleAdmin
{
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>
/// Indicates if the user is allowed to sync media.
/// </summary>
public enum AllowSync
{
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>
/// Indicates if the user is allowed to use tuners.
/// </summary>
public enum AllowTuners
{
Disable = 0,
Enable = 1,
}
}

View File

@@ -85,12 +85,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install immediately. /// Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install immediately.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=tonight")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=tonight")]
public BoolInt? Tonight { get; set; } public BoolInt? Tonight { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Indicate that the latest version should be marked as skipped. The &lt;Release&gt; entry for this version will have the `state` set to `skipped`. /// Indicate that the latest version should be marked as skipped. The &lt;Release&gt; entry for this version will have the `state` set to `skipped`.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=skip")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=skip")]
public BoolInt? Skip { get; set; } public BoolInt? Skip { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
} }
} }

View File

@@ -100,7 +100,26 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string? FieldQuery { get; set; } public string? FieldQuery { get; set; }
/// <summary> /// <summary>
/// This is a complex query built of several parameters. See <a href="#section/API-Info/Media-Queries">API Info section</a> for information on building media queries /// A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic.<br/>
///
/// <remarks>
/// <br/>
/// The query supports:<br/>
/// - Fields: integer, boolean, tag, string, date, language<br/>
/// - Operators: =, !=, ==, !==, &lt;=, &gt;=, &gt;&gt;=, &lt;&lt;= (varies by field type)<br/>
/// - Boolean operators: &amp; (AND), , (OR), push/pop (parentheses), or=1 (explicit OR)<br/>
/// - Sorting: sort parameter with :desc, :nullsLast modifiers<br/>
/// - Grouping: group parameter<br/>
/// - Limits: limit parameter<br/>
/// <br/>
/// Examples:<br/>
/// - Object format: `{type: 4, sourceType: 2, title: &quot;24&quot;}` → `type=4&amp;sourceType=2&amp;title=24`<br/>
/// - String format: `type=4&amp;sourceType=2&amp;title==24` - type = 4 AND sourceType = 2 AND title = &quot;24&quot;<br/>
/// - Complex: `push=1&amp;index=1&amp;or=1&amp;rating=2&amp;pop=1&amp;duration=10` - (index = 1 OR rating = 2) AND duration = 10<br/>
/// <br/>
/// See <a href="#section/API-Info/Media-Queries">API Info section</a> for detailed information on building media queries.<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")]
public MediaQuery? MediaQuery { get; set; } public MediaQuery? MediaQuery { 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;
public class Billing
{
[JsonProperty("internalPaymentMethod")]
public InternalPaymentMethod InternalPaymentMethod { get; set; } = default!;
[JsonProperty("paymentMethodId", NullValueHandling = NullValueHandling.Include)]
public long? PaymentMethodId { get; set; }
}
}

View File

@@ -11,44 +11,90 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
{ {
using LukeHagar.PlexAPI.SDK.Utils; using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json; using Newtonsoft.Json;
using System;
public class ButlerTask /// <summary>
/// The task name
/// </summary>
public enum ButlerTask
{ {
[JsonProperty("AutomaticUpdates")]
/// <summary> AutomaticUpdates,
/// A user-friendly description of the task [JsonProperty("BackupDatabase")]
/// </summary> BackupDatabase,
[JsonProperty("description")] [JsonProperty("ButlerTaskGenerateAdMarkers")]
public string? Description { get; set; } ButlerTaskGenerateAdMarkers,
[JsonProperty("ButlerTaskGenerateCreditsMarkers")]
/// <summary> ButlerTaskGenerateCreditsMarkers,
/// Whether this task is enabled or not [JsonProperty("ButlerTaskGenerateIntroMarkers")]
/// </summary> ButlerTaskGenerateIntroMarkers,
[JsonProperty("enabled")] [JsonProperty("ButlerTaskGenerateVoiceActivity")]
public bool? Enabled { get; set; } ButlerTaskGenerateVoiceActivity,
[JsonProperty("CleanOldBundles")]
/// <summary> CleanOldBundles,
/// The interval (in days) of when this task is run. A value of 1 is run every day, 7 is every week, etc. [JsonProperty("CleanOldCacheFiles")]
/// </summary> CleanOldCacheFiles,
[JsonProperty("interval")] [JsonProperty("DeepMediaAnalysis")]
public long? Interval { get; set; } DeepMediaAnalysis,
[JsonProperty("GarbageCollectBlobs")]
/// <summary> GarbageCollectBlobs,
/// The name of the task [JsonProperty("GarbageCollectLibraryMedia")]
/// </summary> GarbageCollectLibraryMedia,
[JsonProperty("name")] [JsonProperty("GenerateBlurHashes")]
public string? Name { get; set; } GenerateBlurHashes,
[JsonProperty("GenerateChapterThumbs")]
/// <summary> GenerateChapterThumbs,
/// Indicates whether the timing of the task is randomized within the butler interval [JsonProperty("GenerateMediaIndexFiles")]
/// </summary> GenerateMediaIndexFiles,
[JsonProperty("scheduleRandomized")] [JsonProperty("LoudnessAnalysis")]
public bool? ScheduleRandomized { get; set; } LoudnessAnalysis,
[JsonProperty("MusicAnalysis")]
/// <summary> MusicAnalysis,
/// A user-friendly title of the task [JsonProperty("OptimizeDatabase")]
/// </summary> OptimizeDatabase,
[JsonProperty("title")] [JsonProperty("RefreshEpgGuides")]
public string? Title { get; set; } RefreshEpgGuides,
[JsonProperty("RefreshLibraries")]
RefreshLibraries,
[JsonProperty("RefreshLocalMedia")]
RefreshLocalMedia,
[JsonProperty("RefreshPeriodicMetadata")]
RefreshPeriodicMetadata,
[JsonProperty("UpgradeMediaAnalysis")]
UpgradeMediaAnalysis,
} }
public static class ButlerTaskExtension
{
public static string Value(this ButlerTask value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static ButlerTask ToEnum(this string value)
{
foreach(var field in typeof(ButlerTask).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 ButlerTask)
{
return (ButlerTask)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum ButlerTask");
}
}
} }

View File

@@ -18,6 +18,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
{ {
[JsonProperty("ButlerTask")] [JsonProperty("ButlerTask")]
public List<ButlerTask>? ButlerTask { get; set; } public List<GetTasksButlerTask>? ButlerTask { get; set; }
} }
} }

View File

@@ -85,6 +85,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Indicate that you want to start download any updates found. /// Indicate that you want to start download any updates found.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=download")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=download")]
public BoolInt? Download { get; set; } public BoolInt? Download { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
} }
} }

View File

@@ -106,9 +106,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string? Uri { get; set; } public string? Uri { get; set; }
/// <summary> /// <summary>
/// The metadata type to filter by /// The type of media to retrieve or filter by.<br/>
///
/// <remarks>
/// <br/>
/// 1 = movie<br/>
/// 2 = show<br/>
/// 3 = season<br/>
/// 4 = episode<br/>
/// 5 = artist<br/>
/// 6 = album<br/>
/// 7 = track<br/>
/// 8 = photo_album<br/>
/// 9 = photo<br/>
/// <br/>
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries<br/>
///
/// </remarks>
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")]
public long? Type { get; set; } public MediaType? Type { get; set; }
} }
} }

View File

@@ -97,18 +97,18 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether this hub should be displayed in recommended /// Whether this hub should be displayed in recommended
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToRecommended")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToRecommended")]
public BoolInt? PromotedToRecommended { get; set; } public BoolInt? PromotedToRecommended { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Whether this hub should be displayed in admin&apos;s home /// Whether this hub should be displayed in admin&apos;s home
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToOwnHome")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToOwnHome")]
public BoolInt? PromotedToOwnHome { get; set; } public BoolInt? PromotedToOwnHome { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Whether this hub should be displayed in shared user&apos;s home /// Whether this hub should be displayed in shared user&apos;s home
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToSharedHome")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToSharedHome")]
public BoolInt? PromotedToSharedHome { get; set; } public BoolInt? PromotedToSharedHome { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
} }
} }

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>
/// The state of this queue<br/>
///
/// <remarks>
/// - deciding: At least one item is still being decided<br/>
/// - waiting: At least one item is waiting for transcode and none are currently transcoding<br/>
/// - processing: At least one item is being transcoded<br/>
/// - done: All items are available (or potentially expired)<br/>
/// - error: At least one item has encountered an error<br/>
///
/// </remarks>
/// </summary>
public enum CreateDownloadQueueStatus
{
[JsonProperty("deciding")]
Deciding,
[JsonProperty("waiting")]
Waiting,
[JsonProperty("processing")]
Processing,
[JsonProperty("done")]
Done,
[JsonProperty("error")]
Error,
}
public static class CreateDownloadQueueStatusExtension
{
public static string Value(this CreateDownloadQueueStatus value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static CreateDownloadQueueStatus ToEnum(this string value)
{
foreach(var field in typeof(CreateDownloadQueueStatus).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 CreateDownloadQueueStatus)
{
return (CreateDownloadQueueStatus)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum CreateDownloadQueueStatus");
}
}
}

View File

@@ -110,19 +110,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether to shuffle the playlist, defaults to 0. /// Whether to shuffle the playlist, defaults to 0.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=shuffle")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=shuffle")]
public BoolInt? Shuffle { get; set; } public BoolInt? Shuffle { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// If the PQ is bigger than the window, fill any empty space with wraparound items, defaults to 0. /// If the PQ is bigger than the window, fill any empty space with wraparound items, defaults to 0.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=repeat")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=repeat")]
public BoolInt? Repeat { get; set; } public BoolInt? Repeat { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Whether to create a continuous play queue (e.g. from an episode), defaults to 0. /// Whether to create a continuous play queue (e.g. from an episode), defaults to 0.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=continuous")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=continuous")]
public BoolInt? Continuous { get; set; } public BoolInt? Continuous { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Number of trailers to prepend a movie with not including the pre-roll. If omitted the pre-roll will not be returned in the play queue. When resuming a movie `extrasPrefixCount` should be omitted as a parameter instead of passing 0. /// Number of trailers to prepend a movie with not including the pre-roll. If omitted the pre-roll will not be returned in the play queue. When resuming a movie `extrasPrefixCount` should be omitted as a parameter instead of passing 0.
@@ -134,12 +134,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Only applies to queues of type photo, whether to retrieve all descendent photos from an album or section, defaults to 1. /// Only applies to queues of type photo, whether to retrieve all descendent photos from an album or section, defaults to 1.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=recursive")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=recursive")]
public BoolInt? Recursive { get; set; } public BoolInt? Recursive { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary> /// <summary>
/// Only applies to queues of type show or seasons, whether to return a queue that is started on the On Deck episode if one exists. Otherwise begins the play queue on the beginning of the show or season. /// Only applies to queues of type show or seasons, whether to return a queue that is started on the On Deck episode if one exists. Otherwise begins the play queue on the beginning of the show or season.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=onDeck")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=onDeck")]
public BoolInt? OnDeck { get; set; } public BoolInt? OnDeck { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
} }
} }

View File

@@ -91,6 +91,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// If set, response will return an activity with the actual deletion process. Otherwise request will return when deletion is complete /// If set, response will return an activity with the actual deletion process. Otherwise request will return when deletion is complete
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=async")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=async")]
public BoolInt? Async { get; set; } public BoolInt? Async { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
} }
} }

View File

@@ -91,6 +91,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false. /// Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false.
/// </summary> /// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=proxy")] [SpeakeasyMetadata("queryParam:style=form,explode=true,name=proxy")]
public BoolInt? Proxy { get; set; } public BoolInt? Proxy { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
} }
} }

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