using System.Threading;
using System.Threading.Tasks;
namespace SpotifyAPI.Web
{
///
/// Endpoints for getting playlists and new album releases featured on Spotify’s Browse tab.
///
public interface IBrowseClient
{
///
/// Get a list of categories used to tag items in Spotify (on, for example, the Spotify player’s “Browse” tab).
///
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-categories
///
///
Task GetCategories(CancellationToken cancel = default);
///
/// Get a list of categories used to tag items in Spotify (on, for example, the Spotify player’s “Browse” tab).
///
/// The request-model which contains required and optional parameters.
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-categories
///
///
Task GetCategories(CategoriesRequest request, CancellationToken cancel = default);
///
/// Get a single category used to tag items in Spotify (on, for example, the Spotify player’s “Browse” tab).
///
/// The Spotify category ID for the category.
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-a-category
///
///
Task GetCategory(string categoryId, CancellationToken cancel = default);
///
/// Get a single category used to tag items in Spotify (on, for example, the Spotify player’s “Browse” tab).
///
/// The Spotify category ID for the category.
/// The request-model which contains required and optional parameters.
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-a-category
///
///
Task GetCategory(string categoryId, CategoryRequest request, CancellationToken cancel = default);
///
/// Get a list of Spotify playlists tagged with a particular category.
///
/// The Spotify category ID for the category.
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-a-categories-playlists
///
///
Task GetCategoryPlaylists(string categoryId, CancellationToken cancel = default);
///
/// Get a list of Spotify playlists tagged with a particular category.
///
/// The Spotify category ID for the category.
/// The request-model which contains required and optional parameters.
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-a-categories-playlists
///
///
Task GetCategoryPlaylists(string categoryId, CategoriesPlaylistsRequest request, CancellationToken cancel = default);
///
/// Recommendations are generated based on the available information for a given seed entity and matched against
/// similar artists and tracks. If there is sufficient information about the provided seeds,
/// a list of tracks will be returned together with pool size details.
///
/// The request-model which contains required and optional parameters.
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-recommendations
///
///
Task GetRecommendations(RecommendationsRequest request, CancellationToken cancel = default);
///
/// Retrieve a list of available genres seed parameter values for recommendations.
///
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-recommendation-genres
///
///
Task GetRecommendationGenres(CancellationToken cancel = default);
///
/// Get a list of new album releases featured in Spotify (shown, for example, on a Spotify player’s “Browse” tab).
///
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-new-releases
///
///
Task GetNewReleases(CancellationToken cancel = default);
///
/// Get a list of new album releases featured in Spotify (shown, for example, on a Spotify player’s “Browse” tab).
///
/// The request-model which contains required and optional parameters.
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-new-releases
///
///
Task GetNewReleases(NewReleasesRequest request, CancellationToken cancel = default);
///
/// Get a list of Spotify featured playlists (shown, for example, on a Spotify player’s ‘Browse’ tab).
///
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-featured-playlists
///
///
Task GetFeaturedPlaylists(CancellationToken cancel = default);
///
/// Get a list of Spotify featured playlists (shown, for example, on a Spotify player’s ‘Browse’ tab).
///
/// The request-model which contains required and optional parameters.
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-featured-playlists
///
///
Task GetFeaturedPlaylists(FeaturedPlaylistsRequest request, CancellationToken cancel = default);
}
}