## 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**
This commit is contained in:
speakeasybot
2025-12-01 00:32:52 +00:00
parent 70dbffa1d4
commit c0836c3b34
345 changed files with 10172 additions and 2364 deletions

View File

@@ -120,43 +120,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Indicates the client supports ABR.
/// </summary>
[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>
/// Indicates if the server should adjust subtitles based on Voice Activity Data.
/// </summary>
[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>
/// Indicates the client supports direct playing the indicated content.
/// </summary>
[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>
/// Indicates the client supports direct streaming the video of the indicated content.
/// </summary>
[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>
/// Indicates the client supports direct streaming the audio of the indicated content.
/// </summary>
[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>
/// Indicates if resolution should be adjusted for orientation.
/// </summary>
[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>
/// 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>
[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>
/// 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
/// </summary>
[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>
/// If set, import media from iTunes.
/// </summary>
[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; }
[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")]
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).
/// </summary>
[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.
/// </summary>
[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>
/// 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>
[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; }
/// <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>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")]
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 Newtonsoft.Json;
using System;
public class ButlerTask
/// <summary>
/// The task name
/// </summary>
public enum ButlerTask
{
/// <summary>
/// A user-friendly description of the task
/// </summary>
[JsonProperty("description")]
public string? Description { get; set; }
/// <summary>
/// Whether this task is enabled or not
/// </summary>
[JsonProperty("enabled")]
public bool? Enabled { get; set; }
/// <summary>
/// The interval (in days) of when this task is run. A value of 1 is run every day, 7 is every week, etc.
/// </summary>
[JsonProperty("interval")]
public long? Interval { get; set; }
/// <summary>
/// The name of the task
/// </summary>
[JsonProperty("name")]
public string? Name { get; set; }
/// <summary>
/// Indicates whether the timing of the task is randomized within the butler interval
/// </summary>
[JsonProperty("scheduleRandomized")]
public bool? ScheduleRandomized { get; set; }
/// <summary>
/// A user-friendly title of the task
/// </summary>
[JsonProperty("title")]
public string? Title { get; set; }
[JsonProperty("AutomaticUpdates")]
AutomaticUpdates,
[JsonProperty("BackupDatabase")]
BackupDatabase,
[JsonProperty("ButlerTaskGenerateAdMarkers")]
ButlerTaskGenerateAdMarkers,
[JsonProperty("ButlerTaskGenerateCreditsMarkers")]
ButlerTaskGenerateCreditsMarkers,
[JsonProperty("ButlerTaskGenerateIntroMarkers")]
ButlerTaskGenerateIntroMarkers,
[JsonProperty("ButlerTaskGenerateVoiceActivity")]
ButlerTaskGenerateVoiceActivity,
[JsonProperty("CleanOldBundles")]
CleanOldBundles,
[JsonProperty("CleanOldCacheFiles")]
CleanOldCacheFiles,
[JsonProperty("DeepMediaAnalysis")]
DeepMediaAnalysis,
[JsonProperty("GarbageCollectBlobs")]
GarbageCollectBlobs,
[JsonProperty("GarbageCollectLibraryMedia")]
GarbageCollectLibraryMedia,
[JsonProperty("GenerateBlurHashes")]
GenerateBlurHashes,
[JsonProperty("GenerateChapterThumbs")]
GenerateChapterThumbs,
[JsonProperty("GenerateMediaIndexFiles")]
GenerateMediaIndexFiles,
[JsonProperty("LoudnessAnalysis")]
LoudnessAnalysis,
[JsonProperty("MusicAnalysis")]
MusicAnalysis,
[JsonProperty("OptimizeDatabase")]
OptimizeDatabase,
[JsonProperty("RefreshEpgGuides")]
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")]
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.
/// </summary>
[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; }
/// <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>
[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
/// </summary>
[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>
/// Whether this hub should be displayed in admin&apos;s home
/// </summary>
[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>
/// Whether this hub should be displayed in shared user&apos;s home
/// </summary>
[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.
/// </summary>
[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>
/// If the PQ is bigger than the window, fill any empty space with wraparound items, defaults to 0.
/// </summary>
[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>
/// Whether to create a continuous play queue (e.g. from an episode), defaults to 0.
/// </summary>
[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>
/// 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.
/// </summary>
[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>
/// 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>
[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
/// </summary>
[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.
/// </summary>
[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;
}
}

View File

@@ -88,6 +88,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false.
/// </summary>
[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;
}
}

View File

@@ -85,9 +85,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string Ids { get; set; } = default!;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")]
public BoolInt? Force { get; set; }
public BoolInt? Force { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=manual")]
public BoolInt? Manual { get; set; }
public BoolInt? Manual { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -88,7 +88,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Indicate whether detection should be re-run
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")]
public BoolInt? Force { get; set; }
public BoolInt? Force { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// The threshold for determining if content is an intro or not

View File

@@ -88,12 +88,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Indicate whether detection should be re-run
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")]
public BoolInt? Force { get; set; }
public BoolInt? Force { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Indicate whether detection is manually run
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=manual")]
public BoolInt? Manual { get; set; }
public BoolInt? Manual { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -35,6 +35,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// </remarks>
/// </summary>
[JsonProperty("status")]
public Models.Requests.Status? Status { get; set; }
public CreateDownloadQueueStatus? Status { get; set; }
}
}

View File

@@ -85,6 +85,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string Ids { get; set; } = default!;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")]
public BoolInt? Force { get; set; }
public BoolInt? Force { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -92,7 +92,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Only return hubs which are &quot;transient&quot;, meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=onlyTransient")]
public BoolInt? OnlyTransient { get; set; }
public BoolInt? OnlyTransient { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// If provided, limit to only specified hubs

View File

@@ -85,12 +85,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Indicates whether the active grabs should be included as well
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeGrabs")]
public BoolInt? IncludeGrabs { get; set; }
public BoolInt? IncludeGrabs { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Compute the storage of recorded items desired by this subscription
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeStorage")]
public BoolInt? IncludeStorage { get; set; }
public BoolInt? IncludeStorage { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -91,6 +91,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Wait for augmentation completion before returning
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=wait")]
public BoolInt? Wait { get; set; }
public BoolInt? Wait { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -88,7 +88,26 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public long SectionId { get; set; } = default!;
/// <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>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")]
public MediaQuery? MediaQuery { get; set; }

View File

@@ -94,7 +94,26 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public long? Type { get; set; }
/// <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>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")]
public MediaQuery? MediaQuery { get; set; }

View File

@@ -100,7 +100,26 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public long? Sort { get; set; }
/// <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>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")]
public MediaQuery? MediaQuery { get; set; }

View File

@@ -121,6 +121,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether to add noise to the ouput image. Noise can reduce color banding with the gradients. Image sizes with noise will be larger.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=noise")]
public BoolInt? Noise { get; set; }
public BoolInt? Noise { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -91,6 +91,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether or not to include details for a section (types, filters, and sorts). Only exists for backwards compatibility, media providers other than the server libraries have it on always.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeDetails")]
public BoolInt? IncludeDetails { get; set; }
public BoolInt? IncludeDetails { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -82,7 +82,26 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string? Marketplace { get; set; }
/// <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>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")]
public MediaQuery? MediaQuery { get; set; }

View File

@@ -82,19 +82,35 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string? Marketplace { get; set; }
/// <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>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")]
public long? Type { get; set; }
public MediaType? Type { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeFullMetadata")]
public BoolInt? IncludeFullMetadata { get; set; }
public BoolInt? IncludeFullMetadata { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeAncestorMetadata")]
public BoolInt? IncludeAncestorMetadata { get; set; }
public BoolInt? IncludeAncestorMetadata { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeAlternateMetadataSources")]
public BoolInt? IncludeAlternateMetadataSources { get; set; }
public BoolInt? IncludeAlternateMetadataSources { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined.

View File

@@ -103,6 +103,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether this is a file download
/// </summary>
[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

@@ -97,6 +97,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Only return hubs which are &quot;transient&quot;, meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=onlyTransient")]
public BoolInt? OnlyTransient { get; set; }
public BoolInt? OnlyTransient { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -89,48 +89,48 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Determines if file check should be performed asynchronously. An activity is created to indicate progress. Default is false.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncCheckFiles")]
public BoolInt? AsyncCheckFiles { get; set; }
public BoolInt? AsyncCheckFiles { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Determines if local media agent refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncRefreshLocalMediaAgent")]
public BoolInt? AsyncRefreshLocalMediaAgent { get; set; }
public BoolInt? AsyncRefreshLocalMediaAgent { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Determines if analysis refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncRefreshAnalysis")]
public BoolInt? AsyncRefreshAnalysis { get; set; }
public BoolInt? AsyncRefreshAnalysis { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Determines if file check should be performed synchronously. Specifying `asyncCheckFiles` will cause this option to be ignored. Default is false.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=checkFiles")]
public BoolInt? CheckFiles { get; set; }
public BoolInt? CheckFiles { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Determines if synchronous local media agent and analysis refresh should be skipped. Specifying async versions will cause synchronous versions to be skipped. Default is false.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=skipRefresh")]
public BoolInt? SkipRefresh { get; set; }
public BoolInt? SkipRefresh { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Determines if file existence check should be performed synchronously. Specifying `checkFiles` will imply this option. Default is false.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=checkFileAvailability")]
public BoolInt? CheckFileAvailability { get; set; }
public BoolInt? CheckFileAvailability { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Add metadata augmentations. An activity is created to indicate progress. Option will be ignored if specified by non-admin or if multiple metadata items are requested. Default is false.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncAugmentMetadata")]
public BoolInt? AsyncAugmentMetadata { get; set; }
public BoolInt? AsyncAugmentMetadata { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Number of augmentations to add. Requires `asyncAugmentMetadata` to be specified.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=augmentCount")]
public BoolInt? AugmentCount { get; set; }
public BoolInt? AugmentCount { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -91,7 +91,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// If the server should transfer ownership to the requesting client (used in remote control scenarios).
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=own")]
public BoolInt? Own { get; set; }
public BoolInt? Own { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// The play queue item ID for the center of the window - this doesn&apos;t change the current selected item.
@@ -109,12 +109,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether to include the items before the center (if 0, center is not included either), defaults to 1.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeBefore")]
public BoolInt? IncludeBefore { get; set; }
public BoolInt? IncludeBefore { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Whether to include the items after the center (if 0, center is not included either), defaults to 1.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeAfter")]
public BoolInt? IncludeAfter { get; set; }
public BoolInt? IncludeAfter { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -0,0 +1,28 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetPlaylistGeneratorItemsGuids
{
/// <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

@@ -13,6 +13,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using NodaTime;
using System.Collections.Generic;
/// <summary>
@@ -33,43 +34,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// The title of the item (e.g. “300” or “The Simpsons”)
/// </summary>
[JsonProperty("title")]
public object? Title { get; set; }
public string Title { get; set; } = default!;
/// <summary>
/// The type of the video item, such as `movie`, `episode`, or `clip`.
/// </summary>
[JsonProperty("type")]
public object? Type { get; set; }
public string Type { get; set; } = default!;
/// <summary>
/// When present, contains the disc number for a track on multi-disc albums.
/// </summary>
[JsonProperty("absoluteIndex")]
public long? AbsoluteIndex { get; set; }
public int? AbsoluteIndex { get; set; }
/// <summary>
/// In units of seconds since the epoch, returns the time at which the item was added to the library.
/// </summary>
[JsonProperty("addedAt")]
public long? AddedAt { get; set; }
public long AddedAt { get; set; } = default!;
/// <summary>
/// When present, the URL for the background artwork for the item.
/// </summary>
[JsonProperty("art")]
public object? Art { get; set; }
public string? Art { get; set; }
/// <summary>
/// Some rating systems separate reviewer ratings from audience ratings
/// </summary>
[JsonProperty("audienceRating")]
public double? AudienceRating { get; set; }
public float? AudienceRating { get; set; }
/// <summary>
/// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).
/// </summary>
[JsonProperty("audienceRatingImage")]
public object? AudienceRatingImage { get; set; }
public string? AudienceRatingImage { get; set; }
[JsonProperty("Autotag")]
public List<Tag>? Autotag { get; set; }
@@ -78,25 +79,31 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, the URL for a banner graphic for the item.
/// </summary>
[JsonProperty("banner")]
public object? Banner { get; set; }
public string? Banner { get; set; }
/// <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).
/// </summary>
[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>
/// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).
/// </summary>
[JsonProperty("composite")]
public object? Composite { get; set; }
public string? Composite { get; set; }
/// <summary>
/// If known, the content rating (e.g. MPAA) for an item.
/// </summary>
[JsonProperty("contentRating")]
public object? ContentRating { get; set; }
public string? ContentRating { get; set; }
[JsonProperty("Country")]
public List<Tag>? Country { get; set; }
@@ -108,7 +115,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, the duration for the item, in units of milliseconds.
/// </summary>
[JsonProperty("duration")]
public long? Duration { get; set; }
public int? Duration { get; set; }
/// <summary>
/// Typically only seen in metadata at a library&apos;s top level
@@ -125,6 +132,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
[JsonProperty("grandparentArt")]
public string? GrandparentArt { get; set; }
/// <summary>
/// The GUID of the grandparent media item.
/// </summary>
[JsonProperty("grandparentGuid")]
public string? GrandparentGuid { get; set; }
/// <summary>
/// The `hero` of the grandparent
/// </summary>
@@ -161,14 +174,20 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
[JsonProperty("grandparentTitle")]
public string? GrandparentTitle { get; set; }
/// <summary>
/// The globally unique identifier for the media item.
/// </summary>
[JsonProperty("guid")]
public string? Guid { get; set; }
[JsonProperty("Guid")]
public List<Tag>? Guid { get; set; }
public List<GetPlaylistGeneratorItemsGuids>? Guids { get; set; }
/// <summary>
/// When present, the URL for a hero image for the item.
/// </summary>
[JsonProperty("hero")]
public object? Hero { get; set; }
public string? Hero { get; set; }
[JsonProperty("Image")]
public List<Image>? Image { get; set; }
@@ -177,17 +196,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.
/// </summary>
[JsonProperty("index")]
public long? Index { get; set; }
public int? Index { get; set; }
/// <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.
/// </summary>
[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")]
public long? LastViewedAt { get; set; }
@@ -195,7 +211,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// For shows and seasons, contains the number of total episodes.
/// </summary>
[JsonProperty("leafCount")]
public long? LeafCount { get; set; }
public int? LeafCount { get; set; }
[JsonProperty("Media")]
public List<Media>? Media { get; set; }
@@ -204,13 +220,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// 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>
[JsonProperty("originallyAvailableAt")]
public object? OriginallyAvailableAt { get; set; }
public LocalDate? OriginallyAvailableAt { get; set; }
/// <summary>
/// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title.
/// </summary>
[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>
/// The `hero` of the parent
@@ -222,7 +244,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// The `index` of the parent
/// </summary>
[JsonProperty("parentIndex")]
public long? ParentIndex { get; set; }
public int? ParentIndex { get; set; }
/// <summary>
/// The `key` of the parent
@@ -252,7 +274,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// 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>
[JsonProperty("primaryExtraKey")]
public object? PrimaryExtraKey { get; set; }
public string? PrimaryExtraKey { get; set; }
/// <summary>
/// Prompt to give the user for this directory (such as `Search Movies`)
@@ -264,7 +286,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.
/// </summary>
[JsonProperty("rating")]
public double? Rating { get; set; }
public float? Rating { get; set; }
[JsonProperty("Rating")]
public List<Tag>? RatingArray { get; set; }
@@ -273,19 +295,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Number of ratings under this metadata
/// </summary>
[JsonProperty("ratingCount")]
public long? RatingCount { get; set; }
public int? RatingCount { get; set; }
/// <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.
/// </summary>
[JsonProperty("ratingImage")]
public object? RatingImage { get; set; }
public string? RatingImage { get; set; }
/// <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.
/// </summary>
[JsonProperty("ratingKey")]
public object? RatingKey { get; set; }
public string? RatingKey { get; set; }
[JsonProperty("Role")]
public List<Tag>? Role { get; set; }
@@ -324,43 +346,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).
/// </summary>
[JsonProperty("studio")]
public object? Studio { get; set; }
public string? Studio { get; set; }
/// <summary>
/// The subtype of the video item, such as `photo` when the video item is in a photo library
/// </summary>
[JsonProperty("subtype")]
public object? Subtype { get; set; }
public string? Subtype { get; set; }
/// <summary>
/// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).
/// </summary>
[JsonProperty("summary")]
public object? Summary { get; set; }
public string? Summary { get; set; }
/// <summary>
/// When present, a pithy one-liner about the item (usually only seen for movies).
/// </summary>
[JsonProperty("tagline")]
public object? Tagline { get; set; }
public string? Tagline { get; set; }
/// <summary>
/// When present, the URL for theme music for the item (usually only for TV shows).
/// </summary>
[JsonProperty("theme")]
public object? Theme { get; set; }
public string? Theme { get; set; }
/// <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.
/// </summary>
[JsonProperty("thumb")]
public object? Thumb { get; set; }
public string? Thumb { get; set; }
/// <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”).
/// </summary>
[JsonProperty("titleSort")]
public object? TitleSort { get; set; }
public string? TitleSort { get; set; }
/// <summary>
/// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).
@@ -372,25 +394,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When the user has rated an item, this contains the user rating
/// </summary>
[JsonProperty("userRating")]
public double? UserRating { get; set; }
public float? UserRating { get; set; }
/// <summary>
/// When a users has completed watched or listened to an item, this attribute contains the number of consumptions.
/// </summary>
[JsonProperty("viewCount")]
public long? ViewCount { get; set; }
public int? ViewCount { get; set; }
/// <summary>
/// For shows and seasons, contains the number of viewed episodes.
/// </summary>
[JsonProperty("viewedLeafCount")]
public long? ViewedLeafCount { get; set; }
public int? ViewedLeafCount { get; set; }
/// <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.
/// </summary>
[JsonProperty("viewOffset")]
public long? ViewOffset { get; set; }
public int? ViewOffset { get; set; }
[JsonProperty("Writer")]
public List<Tag>? Writer { get; set; }
@@ -399,7 +421,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, the year associated with the item&apos;s release (e.g. release year for a movie).
/// </summary>
[JsonProperty("year")]
public long? Year { get; set; }
public int? Year { get; set; }
/// <summary>
/// The state of processing if this generator is part of an optimizer playlist

View File

@@ -97,6 +97,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Only return hubs which are &quot;transient&quot;, meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=onlyTransient")]
public BoolInt? OnlyTransient { get; set; }
public BoolInt? OnlyTransient { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -97,6 +97,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Only return hubs which are &quot;transient&quot;, meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=onlyTransient")]
public BoolInt? OnlyTransient { get; set; }
public BoolInt? OnlyTransient { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -97,6 +97,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Only return hubs which are &quot;transient&quot;, meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=onlyTransient")]
public BoolInt? OnlyTransient { get; set; }
public BoolInt? OnlyTransient { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -94,7 +94,26 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public long UpdatedAt { get; set; } = default!;
/// <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>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")]
public MediaQuery? MediaQuery { get; set; }

View File

@@ -0,0 +1,54 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
public class GetServerResourcesRequest
{
/// <summary>
/// Indicates the client accepts the indicated media types
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")]
public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml;
/// <summary>
/// An opaque identifier unique to the client
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")]
public string? ClientIdentifier { get; set; }
/// <summary>
/// Include Https entries in the results
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeHttps")]
public IncludeHttps? IncludeHttps { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeHttps.False;
/// <summary>
/// Include Relay addresses in the results <br/>
///
/// <remarks>
/// E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400<br/>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeRelay")]
public IncludeRelay? IncludeRelay { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeRelay.False;
/// <summary>
/// Include IPv6 entries in the results
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeIPv6")]
public IncludeIPv6? IncludeIPv6 { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeIPv6.False;
}
}

View File

@@ -0,0 +1,41 @@
//------------------------------------------------------------------------------
// <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.Components;
using LukeHagar.PlexAPI.SDK.Utils;
using System;
using System.Collections.Generic;
using System.Net.Http;
public class GetServerResourcesResponse
{
/// <summary>
/// HTTP response content type for this operation
/// </summary>
public string? ContentType { get; set; } = default!;
/// <summary>
/// HTTP response status code for this operation
/// </summary>
public int StatusCode { get; set; } = default!;
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
public HttpResponseMessage RawResponse { get; set; } = default!;
/// <summary>
/// List of Plex Devices. This includes Plex hosted servers and clients
/// </summary>
public List<PlexDevice>? PlexDevices { get; set; }
}
}

View File

@@ -91,6 +91,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Force refresh
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=refresh")]
public BoolInt? Refresh { get; set; }
public BoolInt? Refresh { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -109,6 +109,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether the server should attempt to automatically adjust the subtitle timestamps to match the media
/// </summary>
[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;
}
}

View File

@@ -88,12 +88,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Indicates whether the active grabs should be included as well
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeGrabs")]
public BoolInt? IncludeGrabs { get; set; }
public BoolInt? IncludeGrabs { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Compute the storage of recorded items desired by this subscription
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeStorage")]
public BoolInt? IncludeStorage { get; set; }
public BoolInt? IncludeStorage { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -82,9 +82,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string? Marketplace { get; set; }
/// <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>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")]
public long? Type { get; set; }
public MediaType? Type { get; set; }
}
}

View File

@@ -0,0 +1,54 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
public class GetTasksButlerTask
{
/// <summary>
/// A user-friendly description of the task
/// </summary>
[JsonProperty("description")]
public string? Description { get; set; }
/// <summary>
/// Whether this task is enabled or not
/// </summary>
[JsonProperty("enabled")]
public bool? Enabled { get; set; }
/// <summary>
/// The interval (in days) of when this task is run. A value of 1 is run every day, 7 is every week, etc.
/// </summary>
[JsonProperty("interval")]
public long? Interval { get; set; }
/// <summary>
/// The name of the task
/// </summary>
[JsonProperty("name")]
public string? Name { get; set; }
/// <summary>
/// Indicates whether the timing of the task is randomized within the butler interval
/// </summary>
[JsonProperty("scheduleRandomized")]
public bool? ScheduleRandomized { get; set; }
/// <summary>
/// A user-friendly title of the task
/// </summary>
[JsonProperty("title")]
public string? Title { get; set; }
}
}

View File

@@ -0,0 +1,84 @@
//------------------------------------------------------------------------------
// <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.Components;
using LukeHagar.PlexAPI.SDK.Utils;
public class GetTokenDetailsRequest
{
/// <summary>
/// Indicates the client accepts the indicated media types
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")]
public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml;
/// <summary>
/// An opaque identifier unique to the client
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")]
public string? ClientIdentifier { get; set; }
/// <summary>
/// The name of the client product
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")]
public string? Product { get; set; }
/// <summary>
/// The version of the client application
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")]
public string? Version { get; set; }
/// <summary>
/// The platform of the client
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")]
public string? Platform { get; set; }
/// <summary>
/// The version of the platform
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")]
public string? PlatformVersion { get; set; }
/// <summary>
/// A relatively friendly name for the client device
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")]
public string? Device { get; set; }
/// <summary>
/// A potentially less friendly identifier for the device model
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")]
public string? Model { get; set; }
/// <summary>
/// The device vendor
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")]
public string? DeviceVendor { get; set; }
/// <summary>
/// A friendly name for the client
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")]
public string? DeviceName { get; set; }
/// <summary>
/// The marketplace on which the client application is distributed
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")]
public string? Marketplace { get; set; }
}
}

View File

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

View File

@@ -0,0 +1,56 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System.Collections.Generic;
/// <summary>
/// Container holding user and server details.
/// </summary>
public class GetUsersMediaContainer
{
/// <summary>
/// The friendly name of the Plex instance.
/// </summary>
[JsonProperty("friendlyName")]
public string FriendlyName { get; set; } = default!;
[JsonProperty("identifier")]
public string Identifier { get; set; } = default!;
/// <summary>
/// Unique Machine identifier of the Plex server.
/// </summary>
[JsonProperty("machineIdentifier")]
public string MachineIdentifier { get; set; } = default!;
/// <summary>
/// Total number of users.
/// </summary>
[JsonProperty("totalSize")]
public long TotalSize { get; set; } = default!;
/// <summary>
/// Number of users in the current response.
/// </summary>
[JsonProperty("size")]
public long Size { get; set; } = default!;
/// <summary>
/// List of users with access to the Plex server.
/// </summary>
[JsonProperty("User")]
public List<Models.Requests.User> User { get; set; } = default!;
}
}

View File

@@ -0,0 +1,84 @@
//------------------------------------------------------------------------------
// <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.Components;
using LukeHagar.PlexAPI.SDK.Utils;
public class GetUsersRequest
{
/// <summary>
/// Indicates the client accepts the indicated media types
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")]
public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml;
/// <summary>
/// An opaque identifier unique to the client
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")]
public string? ClientIdentifier { get; set; }
/// <summary>
/// The name of the client product
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")]
public string? Product { get; set; }
/// <summary>
/// The version of the client application
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")]
public string? Version { get; set; }
/// <summary>
/// The platform of the client
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")]
public string? Platform { get; set; }
/// <summary>
/// The version of the platform
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")]
public string? PlatformVersion { get; set; }
/// <summary>
/// A relatively friendly name for the client device
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")]
public string? Device { get; set; }
/// <summary>
/// A potentially less friendly identifier for the device model
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")]
public string? Model { get; set; }
/// <summary>
/// The device vendor
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")]
public string? DeviceVendor { get; set; }
/// <summary>
/// A friendly name for the client
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")]
public string? DeviceName { get; set; }
/// <summary>
/// The marketplace on which the client application is distributed
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")]
public string? Marketplace { get; set; }
}
}

View File

@@ -0,0 +1,40 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using System;
using System.Net.Http;
public class GetUsersResponse
{
/// <summary>
/// HTTP response content type for this operation
/// </summary>
public string? ContentType { get; set; } = default!;
/// <summary>
/// HTTP response status code for this operation
/// </summary>
public int StatusCode { get; set; } = default!;
/// <summary>
/// Raw HTTP response; suitable for custom response parsing
/// </summary>
public HttpResponseMessage RawResponse { get; set; } = default!;
/// <summary>
/// Successful response with media container data in JSON
/// </summary>
public GetUsersResponseBody? Object { 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.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
/// <summary>
/// Successful response with media container data in JSON
/// </summary>
public class GetUsersResponseBody
{
/// <summary>
/// Container holding user and server details.
/// </summary>
[JsonProperty("MediaContainer")]
public GetUsersMediaContainer? MediaContainer { 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.Requests
{
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

@@ -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 part of a home group.
/// </summary>
public enum Home
{
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>
/// Include Https entries in the results
/// </summary>
public enum IncludeHttps
{
False = 0,
True = 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>
/// Include IPv6 entries in the results
/// </summary>
public enum IncludeIPv6
{
False = 0,
True = 1,
}
}

View File

@@ -0,0 +1,28 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Utils;
/// <summary>
/// Include Relay addresses in the results <br/>
///
/// <remarks>
/// E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400<br/>
///
/// </remarks>
/// </summary>
public enum IncludeRelay
{
False = 0,
True = 1,
}
}

View File

@@ -97,12 +97,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether or not to compute Plex and OpenSubtitle hashes for the file. Defaults to 0.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=computeHashes")]
public BoolInt? ComputeHashes { get; set; }
public BoolInt? ComputeHashes { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Whether or not non matching media should be stored. Defaults to 0.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=ingestNonMatches")]
public BoolInt? IngestNonMatches { get; set; }
public BoolInt? IngestNonMatches { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

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

View File

@@ -82,11 +82,74 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string? Marketplace { get; set; }
/// <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
/// The index of the first item to return. If not specified, the first item will be returned.<br/>
///
/// <remarks>
/// If the number of items exceeds the limit, the response will be paginated.<br/>
/// By default this is 0<br/>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Start")]
public int? XPlexContainerStart { get; set; } = 0;
/// <summary>
/// The number of items to return. If not specified, all items will be returned.<br/>
///
/// <remarks>
/// If the number of items exceeds the limit, the response will be paginated.<br/>
/// By default this is 50<br/>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Size")]
public int? XPlexContainerSize { get; set; } = 50;
/// <summary>
/// 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>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")]
public MediaQuery? MediaQuery { get; set; }
/// <summary>
/// Adds the Meta object to the response<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeMeta")]
public BoolInt? IncludeMeta { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Adds the Guid object to the response<br/>
///
/// <remarks>
///
/// </remarks>
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeGuids")]
public BoolInt? IncludeGuids { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// The id of the section
/// </summary>

View File

@@ -100,6 +100,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public long? Year { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=manual")]
public BoolInt? Manual { get; set; }
public BoolInt? Manual { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

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.Requests
{
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

@@ -120,43 +120,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Indicates the client supports ABR.
/// </summary>
[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>
/// Indicates if the server should adjust subtitles based on Voice Activity Data.
/// </summary>
[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>
/// Indicates the client supports direct playing the indicated content.
/// </summary>
[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>
/// Indicates the client supports direct streaming the video of the indicated content.
/// </summary>
[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>
/// Indicates the client supports direct streaming the audio of the indicated content.
/// </summary>
[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>
/// Indicates if resolution should be adjusted for orientation.
/// </summary>
[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>
/// 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>
[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>
/// Network type of the client, can be used to help determine target bitrate.

View File

@@ -10,8 +10,10 @@
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Components;
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using NodaTime;
using System.Collections.Generic;
/// <summary>
@@ -44,49 +46,49 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// The user playing the content
/// </summary>
[JsonProperty("User")]
public User? User { get; set; }
public Models.Components.User? User { get; set; }
/// <summary>
/// The title of the item (e.g. “300” or “The Simpsons”)
/// </summary>
[JsonProperty("title")]
public object? Title { get; set; }
public string Title { get; set; } = default!;
/// <summary>
/// The type of the video item, such as `movie`, `episode`, or `clip`.
/// </summary>
[JsonProperty("type")]
public object? Type { get; set; }
public string Type { get; set; } = default!;
/// <summary>
/// When present, contains the disc number for a track on multi-disc albums.
/// </summary>
[JsonProperty("absoluteIndex")]
public long? AbsoluteIndex { get; set; }
public int? AbsoluteIndex { get; set; }
/// <summary>
/// In units of seconds since the epoch, returns the time at which the item was added to the library.
/// </summary>
[JsonProperty("addedAt")]
public long? AddedAt { get; set; }
public long AddedAt { get; set; } = default!;
/// <summary>
/// When present, the URL for the background artwork for the item.
/// </summary>
[JsonProperty("art")]
public object? Art { get; set; }
public string? Art { get; set; }
/// <summary>
/// Some rating systems separate reviewer ratings from audience ratings
/// </summary>
[JsonProperty("audienceRating")]
public double? AudienceRating { get; set; }
public float? AudienceRating { get; set; }
/// <summary>
/// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).
/// </summary>
[JsonProperty("audienceRatingImage")]
public object? AudienceRatingImage { get; set; }
public string? AudienceRatingImage { get; set; }
[JsonProperty("Autotag")]
public List<Tag>? Autotag { get; set; }
@@ -95,25 +97,31 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, the URL for a banner graphic for the item.
/// </summary>
[JsonProperty("banner")]
public object? Banner { get; set; }
public string? Banner { get; set; }
/// <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).
/// </summary>
[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>
/// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).
/// </summary>
[JsonProperty("composite")]
public object? Composite { get; set; }
public string? Composite { get; set; }
/// <summary>
/// If known, the content rating (e.g. MPAA) for an item.
/// </summary>
[JsonProperty("contentRating")]
public object? ContentRating { get; set; }
public string? ContentRating { get; set; }
[JsonProperty("Country")]
public List<Tag>? Country { get; set; }
@@ -125,7 +133,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, the duration for the item, in units of milliseconds.
/// </summary>
[JsonProperty("duration")]
public long? Duration { get; set; }
public int? Duration { get; set; }
/// <summary>
/// Typically only seen in metadata at a library&apos;s top level
@@ -142,6 +150,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
[JsonProperty("grandparentArt")]
public string? GrandparentArt { get; set; }
/// <summary>
/// The GUID of the grandparent media item.
/// </summary>
[JsonProperty("grandparentGuid")]
public string? GrandparentGuid { get; set; }
/// <summary>
/// The `hero` of the grandparent
/// </summary>
@@ -178,14 +192,20 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
[JsonProperty("grandparentTitle")]
public string? GrandparentTitle { get; set; }
/// <summary>
/// The globally unique identifier for the media item.
/// </summary>
[JsonProperty("guid")]
public string? Guid { get; set; }
[JsonProperty("Guid")]
public List<Tag>? Guid { get; set; }
public List<Models.Requests.Guids>? Guids { get; set; }
/// <summary>
/// When present, the URL for a hero image for the item.
/// </summary>
[JsonProperty("hero")]
public object? Hero { get; set; }
public string? Hero { get; set; }
[JsonProperty("Image")]
public List<Image>? Image { get; set; }
@@ -194,17 +214,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.
/// </summary>
[JsonProperty("index")]
public long? Index { get; set; }
public int? Index { get; set; }
/// <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.
/// </summary>
[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")]
public long? LastViewedAt { get; set; }
@@ -212,7 +229,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// For shows and seasons, contains the number of total episodes.
/// </summary>
[JsonProperty("leafCount")]
public long? LeafCount { get; set; }
public int? LeafCount { get; set; }
[JsonProperty("Media")]
public List<Media>? Media { get; set; }
@@ -221,13 +238,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// 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>
[JsonProperty("originallyAvailableAt")]
public object? OriginallyAvailableAt { get; set; }
public LocalDate? OriginallyAvailableAt { get; set; }
/// <summary>
/// When present, used to indicate an item&apos;s original title, e.g. a movie&apos;s foreign title.
/// </summary>
[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>
/// The `hero` of the parent
@@ -239,7 +262,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// The `index` of the parent
/// </summary>
[JsonProperty("parentIndex")]
public long? ParentIndex { get; set; }
public int? ParentIndex { get; set; }
/// <summary>
/// The `key` of the parent
@@ -269,7 +292,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// 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>
[JsonProperty("primaryExtraKey")]
public object? PrimaryExtraKey { get; set; }
public string? PrimaryExtraKey { get; set; }
/// <summary>
/// Prompt to give the user for this directory (such as `Search Movies`)
@@ -281,7 +304,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.
/// </summary>
[JsonProperty("rating")]
public double? Rating { get; set; }
public float? Rating { get; set; }
[JsonProperty("Rating")]
public List<Tag>? RatingArray { get; set; }
@@ -290,19 +313,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Number of ratings under this metadata
/// </summary>
[JsonProperty("ratingCount")]
public long? RatingCount { get; set; }
public int? RatingCount { get; set; }
/// <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.
/// </summary>
[JsonProperty("ratingImage")]
public object? RatingImage { get; set; }
public string? RatingImage { get; set; }
/// <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.
/// </summary>
[JsonProperty("ratingKey")]
public object? RatingKey { get; set; }
public string? RatingKey { get; set; }
[JsonProperty("Role")]
public List<Tag>? Role { get; set; }
@@ -341,43 +364,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).
/// </summary>
[JsonProperty("studio")]
public object? Studio { get; set; }
public string? Studio { get; set; }
/// <summary>
/// The subtype of the video item, such as `photo` when the video item is in a photo library
/// </summary>
[JsonProperty("subtype")]
public object? Subtype { get; set; }
public string? Subtype { get; set; }
/// <summary>
/// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).
/// </summary>
[JsonProperty("summary")]
public object? Summary { get; set; }
public string? Summary { get; set; }
/// <summary>
/// When present, a pithy one-liner about the item (usually only seen for movies).
/// </summary>
[JsonProperty("tagline")]
public object? Tagline { get; set; }
public string? Tagline { get; set; }
/// <summary>
/// When present, the URL for theme music for the item (usually only for TV shows).
/// </summary>
[JsonProperty("theme")]
public object? Theme { get; set; }
public string? Theme { get; set; }
/// <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.
/// </summary>
[JsonProperty("thumb")]
public object? Thumb { get; set; }
public string? Thumb { get; set; }
/// <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”).
/// </summary>
[JsonProperty("titleSort")]
public object? TitleSort { get; set; }
public string? TitleSort { get; set; }
/// <summary>
/// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).
@@ -389,25 +412,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When the user has rated an item, this contains the user rating
/// </summary>
[JsonProperty("userRating")]
public double? UserRating { get; set; }
public float? UserRating { get; set; }
/// <summary>
/// When a users has completed watched or listened to an item, this attribute contains the number of consumptions.
/// </summary>
[JsonProperty("viewCount")]
public long? ViewCount { get; set; }
public int? ViewCount { get; set; }
/// <summary>
/// For shows and seasons, contains the number of viewed episodes.
/// </summary>
[JsonProperty("viewedLeafCount")]
public long? ViewedLeafCount { get; set; }
public int? ViewedLeafCount { get; set; }
/// <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.
/// </summary>
[JsonProperty("viewOffset")]
public long? ViewOffset { get; set; }
public int? ViewOffset { get; set; }
[JsonProperty("Writer")]
public List<Tag>? Writer { get; set; }
@@ -416,7 +439,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When present, the year associated with the item&apos;s release (e.g. release year for a movie).
/// </summary>
[JsonProperty("year")]
public long? Year { get; set; }
public int? Year { get; set; }
[JsonProperty("additionalProperties")]
public Dictionary<string, object>? AdditionalProperties { get; set; }

View File

@@ -91,6 +91,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether to enable the device
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=enabled")]
public BoolInt? Enabled { get; set; }
public BoolInt? Enabled { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -85,6 +85,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// If set, don&apos;t wait for completion but return an activity
/// </summary>
[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

@@ -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 owns the server.
/// </summary>
public enum Owned
{
Disable = 0,
Enable = 1,
}
}

View File

@@ -0,0 +1,68 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
public class PastSubscription
{
[JsonProperty("id", NullValueHandling = NullValueHandling.Include)]
public string? Id { get; set; }
[JsonProperty("mode", NullValueHandling = NullValueHandling.Include)]
public string? Mode { get; set; }
[JsonProperty("renewsAt", NullValueHandling = NullValueHandling.Include)]
public long? RenewsAt { get; set; }
[JsonProperty("endsAt", NullValueHandling = NullValueHandling.Include)]
public long? EndsAt { get; set; }
[JsonProperty("canceled")]
public bool? Canceled { get; set; } = false;
[JsonProperty("gracePeriod")]
public bool? GracePeriod { get; set; } = false;
[JsonProperty("onHold")]
public bool? OnHold { get; set; } = false;
[JsonProperty("canReactivate")]
public bool? CanReactivate { get; set; } = false;
[JsonProperty("canUpgrade")]
public bool? CanUpgrade { get; set; } = false;
[JsonProperty("canDowngrade")]
public bool? CanDowngrade { get; set; } = false;
[JsonProperty("canConvert")]
public bool? CanConvert { get; set; } = false;
[JsonProperty("type")]
public string Type { get; set; } = default!;
[JsonProperty("transfer", NullValueHandling = NullValueHandling.Include)]
public string? Transfer { get; set; }
[JsonProperty("state")]
public PostUsersSignInDataState State { get; set; } = default!;
[JsonProperty("billing")]
public Billing Billing { get; set; } = default!;
}
}

View File

@@ -16,7 +16,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// <summary>
/// The task name
/// </summary>
public enum PathParamTask
public enum PathParamButlerTask
{
[JsonProperty("AutomaticUpdates")]
AutomaticUpdates,
@@ -64,16 +64,16 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
UpgradeMediaAnalysis,
}
public static class PathParamTaskExtension
public static class PathParamButlerTaskExtension
{
public static string Value(this PathParamTask value)
public static string Value(this PathParamButlerTask value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static PathParamTask ToEnum(this string value)
public static PathParamButlerTask ToEnum(this string value)
{
foreach(var field in typeof(PathParamTask).GetFields())
foreach(var field in typeof(PathParamButlerTask).GetFields())
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
@@ -86,14 +86,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
var enumVal = field.GetValue(null);
if (enumVal is PathParamTask)
if (enumVal is PathParamButlerTask)
{
return (PathParamTask)enumVal;
return (PathParamButlerTask)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum PathParamTask");
throw new Exception($"Unknown value {value} for enum PathParamButlerTask");
}
}

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 server is pending approval.
/// </summary>
public enum Pending
{
Disable = 0,
Enable = 1,
}
}

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.Requests
{
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 PostUsersSignInDataAuthenticationStatus : IEquatable<PostUsersSignInDataAuthenticationStatus>
{
public static readonly PostUsersSignInDataAuthenticationStatus Inactive = new PostUsersSignInDataAuthenticationStatus("Inactive");
public static readonly PostUsersSignInDataAuthenticationStatus Active = new PostUsersSignInDataAuthenticationStatus("Active");
private static readonly Dictionary <string, PostUsersSignInDataAuthenticationStatus> _knownValues =
new Dictionary <string, PostUsersSignInDataAuthenticationStatus> ()
{
["Inactive"] = Inactive,
["Active"] = Active
};
private static readonly ConcurrentDictionary<string, PostUsersSignInDataAuthenticationStatus> _values =
new ConcurrentDictionary<string, PostUsersSignInDataAuthenticationStatus>(_knownValues);
private PostUsersSignInDataAuthenticationStatus(string value)
{
if (value == null) throw new ArgumentNullException(nameof(value));
Value = value;
}
public string Value { get; }
public static PostUsersSignInDataAuthenticationStatus Of(string value)
{
return _values.GetOrAdd(value, _ => new PostUsersSignInDataAuthenticationStatus(value));
}
public static implicit operator PostUsersSignInDataAuthenticationStatus(string value) => Of(value);
public static implicit operator string(PostUsersSignInDataAuthenticationStatus postuserssignindataauthenticationstatus) => postuserssignindataauthenticationstatus.Value;
public static PostUsersSignInDataAuthenticationStatus[] 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 PostUsersSignInDataAuthenticationStatus);
public bool Equals(PostUsersSignInDataAuthenticationStatus? 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,91 @@
//------------------------------------------------------------------------------
// <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.Components;
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
public class PostUsersSignInDataRequest
{
/// <summary>
/// Indicates the client accepts the indicated media types
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")]
public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml;
/// <summary>
/// An opaque identifier unique to the client
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")]
public string? ClientIdentifier { get; set; }
/// <summary>
/// The name of the client product
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")]
public string? Product { get; set; }
/// <summary>
/// The version of the client application
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")]
public string? Version { get; set; }
/// <summary>
/// The platform of the client
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")]
public string? Platform { get; set; }
/// <summary>
/// The version of the platform
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")]
public string? PlatformVersion { get; set; }
/// <summary>
/// A relatively friendly name for the client device
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")]
public string? Device { get; set; }
/// <summary>
/// A potentially less friendly identifier for the device model
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")]
public string? Model { get; set; }
/// <summary>
/// The device vendor
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")]
public string? DeviceVendor { get; set; }
/// <summary>
/// A friendly name for the client
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")]
public string? DeviceName { get; set; }
/// <summary>
/// The marketplace on which the client application is distributed
/// </summary>
[SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")]
public string? Marketplace { get; set; }
/// <summary>
/// Login credentials
/// </summary>
[SpeakeasyMetadata("request:mediaType=application/x-www-form-urlencoded")]
public PostUsersSignInDataRequestBody? RequestBody { get; set; }
}
}

View File

@@ -0,0 +1,32 @@
//------------------------------------------------------------------------------
// <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>
/// Login credentials
/// </summary>
public class PostUsersSignInDataRequestBody
{
[SpeakeasyMetadata("form:name=login")]
public string Login { get; set; } = default!;
[SpeakeasyMetadata("form:name=password")]
public string Password { get; set; } = default!;
[SpeakeasyMetadata("form:name=rememberMe")]
public bool? RememberMe { get; set; } = false;
[SpeakeasyMetadata("form:name=verificationCode")]
public string? VerificationCode { get; set; }
}
}

View File

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

View File

@@ -0,0 +1,73 @@
//------------------------------------------------------------------------------
// <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;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
[JsonConverter(typeof(OpenEnumConverter))]
public class PostUsersSignInDataState : IEquatable<PostUsersSignInDataState>
{
public static readonly PostUsersSignInDataState Ended = new PostUsersSignInDataState("ended");
private static readonly Dictionary <string, PostUsersSignInDataState> _knownValues =
new Dictionary <string, PostUsersSignInDataState> ()
{
["ended"] = Ended
};
private static readonly ConcurrentDictionary<string, PostUsersSignInDataState> _values =
new ConcurrentDictionary<string, PostUsersSignInDataState>(_knownValues);
private PostUsersSignInDataState(string value)
{
if (value == null) throw new ArgumentNullException(nameof(value));
Value = value;
}
public string Value { get; }
public static PostUsersSignInDataState Of(string value)
{
return _values.GetOrAdd(value, _ => new PostUsersSignInDataState(value));
}
public static implicit operator PostUsersSignInDataState(string value) => Of(value);
public static implicit operator string(PostUsersSignInDataState postuserssignindatastate) => postuserssignindatastate.Value;
public static PostUsersSignInDataState[] 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 PostUsersSignInDataState);
public bool Equals(PostUsersSignInDataState? 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.Requests
{
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 PostUsersSignInDataStatus : IEquatable<PostUsersSignInDataStatus>
{
public static readonly PostUsersSignInDataStatus Inactive = new PostUsersSignInDataStatus("Inactive");
public static readonly PostUsersSignInDataStatus Active = new PostUsersSignInDataStatus("Active");
private static readonly Dictionary <string, PostUsersSignInDataStatus> _knownValues =
new Dictionary <string, PostUsersSignInDataStatus> ()
{
["Inactive"] = Inactive,
["Active"] = Active
};
private static readonly ConcurrentDictionary<string, PostUsersSignInDataStatus> _values =
new ConcurrentDictionary<string, PostUsersSignInDataStatus>(_knownValues);
private PostUsersSignInDataStatus(string value)
{
if (value == null) throw new ArgumentNullException(nameof(value));
Value = value;
}
public string Value { get; }
public static PostUsersSignInDataStatus Of(string value)
{
return _values.GetOrAdd(value, _ => new PostUsersSignInDataStatus(value));
}
public static implicit operator PostUsersSignInDataStatus(string value) => Of(value);
public static implicit operator string(PostUsersSignInDataStatus postuserssignindatastatus) => postuserssignindatastatus.Value;
public static PostUsersSignInDataStatus[] 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 PostUsersSignInDataStatus);
public bool Equals(PostUsersSignInDataStatus? 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.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
public class PostUsersSignInDataSubscription
{
/// <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 PostUsersSignInDataAuthenticationStatus? 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,260 @@
//------------------------------------------------------------------------------
// <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.Components;
using LukeHagar.PlexAPI.SDK.Models.Requests;
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
/// <summary>
/// Returns the user account data with a valid auth token
/// </summary>
public class PostUsersSignInDataUserPlexAccount
{
/// <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.Requests.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.Requests.Services>? Services { get; set; }
/// <summary>
/// If the account&apos;s Plex Pass subscription is active
/// </summary>
[JsonProperty("subscription")]
public Models.Requests.Subscription? Subscription { get; set; }
/// <summary>
/// Description of the Plex Pass subscription
/// </summary>
[JsonProperty("subscriptionDescription")]
public string? SubscriptionDescription { get; set; } = null;
[JsonProperty("subscriptions")]
public List<PostUsersSignInDataSubscription>? 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;
[JsonProperty("pastSubscriptions")]
public List<PastSubscription> PastSubscriptions { get; set; } = default!;
[JsonProperty("trials")]
public List<Trials> Trials { get; set; } = default!;
}
}

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 whether the account is protected.
/// </summary>
public enum Protected
{
Disable = 0,
Enable = 1,
}
}

View File

@@ -88,6 +88,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string? Agent { get; set; }
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=markUpdated")]
public BoolInt? MarkUpdated { get; set; }
public BoolInt? MarkUpdated { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -91,7 +91,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Whether the update of metadata and items should be performed even if modification dates indicate the items have not change
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")]
public BoolInt? Force { get; set; }
public BoolInt? Force { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Restrict refresh to the specified path

View File

@@ -122,7 +122,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// When state is `stopped`, a flag indicating whether or not the client is going to continue playing anothe item.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=continuing")]
public BoolInt? Continuing { get; set; }
public BoolInt? Continuing { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Used when a sync client comes online and is syncing media timelines, holds the time at which the playback state was last updated.
@@ -134,7 +134,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Also used by sync clients, used to indicate that a timeline is being synced from being offline, as opposed to being &quot;live&quot;.
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=offline")]
public BoolInt? Offline { get; set; }
public BoolInt? Offline { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
/// <summary>
/// Time in seconds till first frame is displayed. Sent only on the first playing timeline request.

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 restricted access.
/// </summary>
public enum Restricted
{
Disable = 0,
Enable = 1,
}
}

View File

@@ -0,0 +1,64 @@
//------------------------------------------------------------------------------
// <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 Server
{
/// <summary>
/// Unique ID of the server of the connected user
/// </summary>
[JsonProperty("id")]
public long Id { get; set; } = default!;
/// <summary>
/// ID of the actual Plex server.
/// </summary>
[JsonProperty("serverId")]
public long ServerId { get; set; } = default!;
/// <summary>
/// Machine identifier of the Plex server.
/// </summary>
[JsonProperty("machineIdentifier")]
public string MachineIdentifier { get; set; } = default!;
/// <summary>
/// Name of the Plex server of the connected user.
/// </summary>
[JsonProperty("name")]
public string Name { get; set; } = default!;
/// <summary>
/// Unix epoch datetime in seconds
/// </summary>
[JsonProperty("lastSeenAt")]
public long LastSeenAt { get; set; } = default!;
/// <summary>
/// Number of libraries in the server this user has access to.
/// </summary>
[JsonProperty("numLibraries")]
public long NumLibraries { get; set; } = default!;
[JsonProperty("allLibraries")]
public AllLibraries? AllLibraries { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.AllLibraries.Disable;
[JsonProperty("owned")]
public Owned? Owned { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.Owned.Disable;
[JsonProperty("pending")]
public Pending? Pending { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.Pending.Disable;
}
}

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.Requests
{
using LukeHagar.PlexAPI.SDK.Models.Requests;
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 Models.Requests.Status Status { get; set; } = default!;
}
}

View File

@@ -103,6 +103,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Perform the same for all parts of this media selecting similar streams in each
/// </summary>
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=allParts")]
public BoolInt? AllParts { get; set; }
public BoolInt? AllParts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -85,6 +85,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
public string Ids { get; set; } = default!;
[SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")]
public BoolInt? Force { get; set; }
public BoolInt? Force { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.BoolInt.False;
}
}

View File

@@ -85,7 +85,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// <summary>
/// The task name
/// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=task")]
public PathParamTask Task { get; set; } = default!;
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=butlerTask")]
public PathParamButlerTask ButlerTask { get; set; } = default!;
}
}

View File

@@ -130,43 +130,43 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// Indicates the client supports ABR.
/// </summary>
[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>
/// Indicates if the server should adjust subtitles based on Voice Activity Data.
/// </summary>
[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>
/// Indicates the client supports direct playing the indicated content.
/// </summary>
[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>
/// Indicates the client supports direct streaming the video of the indicated content.
/// </summary>
[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>
/// Indicates the client supports direct streaming the audio of the indicated content.
/// </summary>
[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>
/// Indicates if resolution should be adjusted for orientation.
/// </summary>
[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>
/// 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>
[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>
/// Network type of the client, can be used to help determine target bitrate.

View File

@@ -12,64 +12,64 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
/// <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 Status
[JsonConverter(typeof(OpenEnumConverter))]
public class Status : IEquatable<Status>
{
[JsonProperty("deciding")]
Deciding,
[JsonProperty("waiting")]
Waiting,
[JsonProperty("processing")]
Processing,
[JsonProperty("done")]
Done,
[JsonProperty("error")]
Error,
}
public static readonly Status Online = new Status("online");
public static readonly Status Offline = new Status("offline");
public static class StatusExtension
{
public static string Value(this Status value)
{
return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString();
}
public static Status ToEnum(this string value)
{
foreach(var field in typeof(Status).GetFields())
private static readonly Dictionary <string, Status> _knownValues =
new Dictionary <string, Status> ()
{
var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false);
if (attributes.Length == 0)
{
continue;
}
["online"] = Online,
["offline"] = Offline
};
var attribute = attributes[0] as JsonPropertyAttribute;
if (attribute != null && attribute.PropertyName == value)
{
var enumVal = field.GetValue(null);
private static readonly ConcurrentDictionary<string, Status> _values =
new ConcurrentDictionary<string, Status>(_knownValues);
if (enumVal is Status)
{
return (Status)enumVal;
}
}
}
throw new Exception($"Unknown value {value} for enum Status");
private Status(string value)
{
if (value == null) throw new ArgumentNullException(nameof(value));
Value = value;
}
public string Value { get; }
public static Status Of(string value)
{
return _values.GetOrAdd(value, _ => new Status(value));
}
public static implicit operator Status(string value) => Of(value);
public static implicit operator string(Status status) => status.Value;
public static Status[] 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 Status);
public bool Equals(Status? 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

@@ -85,7 +85,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests
/// <summary>
/// The task name
/// </summary>
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=task")]
public Task Task { get; set; } = default!;
[SpeakeasyMetadata("pathParam:style=simple,explode=false,name=butlerTask")]
public ButlerTask ButlerTask { get; set; } = default!;
}
}

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