//------------------------------------------------------------------------------
// <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 GetUsersRequest
    {

        /// <summary>
        /// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
        /// </summary>
        [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")]
        public string ClientID { get; set; } = default!;

        /// <summary>
        /// The name of the client application. (Plex Web, Plex Media Server, etc.)
        /// </summary>
        [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")]
        public string? ClientName { get; set; }

        /// <summary>
        /// A relatively friendly name for the client device
        /// </summary>
        [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")]
        public string? DeviceNickname { get; set; }

        /// <summary>
        /// The name of the device the client application is running on. This is used to track the client application and its usage. (Chrome, Safari, etc.)
        /// </summary>
        [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")]
        public string? DeviceName { get; set; }

        /// <summary>
        /// The resolution of the device the client application is running on. This is used to track the client application and its usage. (1487x1165,2560x1440)
        /// </summary>
        [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Screen-Resolution")]
        public string? DeviceScreenResolution { get; set; }

        /// <summary>
        /// The version of the client application.
        /// </summary>
        [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")]
        public string? ClientVersion { get; set; }

        /// <summary>
        /// The platform of the client application.
        /// </summary>
        [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")]
        public string? Platform { get; set; }

        /// <summary>
        /// The features of the client application. This is used to track the client application and its usage. (external-media,indirect-media,hub-style-list)
        /// </summary>
        [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Features")]
        public string? ClientFeatures { 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 session ID of the client application. This is used to track the client application and its usage. (97e136ef-4ddd-4ff3-89a7-a5820c96c2ca)
        /// </summary>
        [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Session-Id")]
        public string? XPlexSessionId { get; set; }

        /// <summary>
        /// The language of the client application.
        /// </summary>
        [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Language")]
        public string? XPlexLanguage { 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>
        /// An authentication token, obtained from plex.tv
        /// </summary>
        [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Token")]
        public string XPlexToken { get; set; } = default!;
    }
}