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

        /// <summary>
        /// The search query term.
        /// </summary>
        [SpeakeasyMetadata("queryParam:style=form,explode=true,name=query")]
        public string Query { get; set; } = default!;

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

        /// <summary>
        /// Limit the number of results returned.
        /// </summary>
        [SpeakeasyMetadata("queryParam:style=form,explode=true,name=limit")]
        public long? Limit { get; set; }

        /// <summary>
        /// A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.<br/>
        /// 
        /// <remarks>
        /// 
        /// </remarks>
        /// </summary>
        [SpeakeasyMetadata("queryParam:style=form,explode=false,name=searchTypes")]
        public List<SearchTypes>? SearchTypes { get; set; }

        /// <summary>
        /// Whether to include collections in the search results.
        /// </summary>
        [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeCollections")]
        public GetSearchAllLibrariesQueryParamIncludeCollections? IncludeCollections { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetSearchAllLibrariesQueryParamIncludeCollections.Disable;

        /// <summary>
        /// Whether to include external media in the search results.
        /// </summary>
        [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeExternalMedia")]
        public GetSearchAllLibrariesQueryParamIncludeExternalMedia? IncludeExternalMedia { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetSearchAllLibrariesQueryParamIncludeExternalMedia.Disable;
    }
}