/// <summary>
 /// Retrieve details about a specific artist
 /// </summary>
 public async Task<Artist> GetArtist(int artistId, ArtistFields fields)
 {
     return await _client.PostAsync("AudioLibrary.GetArtistDetails", t => _serializer.Parse<Artist>(t, "artistdetails"), new JsonParam("artistid", artistId), new JsonParam("properties", fields ?? DefaultArtistProperties));
 }
        /// <summary>
        /// Retrieve all artists
        /// </summary>
        /// <param name="albumArtistsOnly">Whether or not to include artists only appearing in compilations. If the parameter is not passed or is passed as null the GUI setting will be used</param>
        public async Task<IMediaItemList<Artist>> GetArtists(bool? albumArtistsOnly, int? genreId, ArtistFields fields, int? startIndex, int? endIndex, SortMethods? sortMethod, Orders? order)
        {
            List<JsonParam> parameters = new List<JsonParam>();
            parameters.AddRange(ClientUtils.GetOptionalParameter(genreId, "genreid"));
            parameters.AddRange(ClientUtils.GetOptionalParameter(albumArtistsOnly, "albumartistsonly"));
            parameters.AddRange(ClientUtils.GetLimitsParameter(startIndex, endIndex));
            parameters.Add(new JsonParam("properties", fields ?? DefaultArtistProperties));

            parameters.AddRange(ClientUtils.GetLimitsParameter(startIndex, endIndex));
            parameters.AddRange(ClientUtils.GetSortOrderParameter(sortMethod, order));

            return await _client.PostAsync("AudioLibrary.GetArtists", t => _serializer.Parse<XbmcItemList<Artist>>(t), parameters.ToArray());
        }