diff --git a/SpotifyAPI.Web/Clients/Interfaces/IMarketsClient.cs b/SpotifyAPI.Web/Clients/Interfaces/IMarketsClient.cs
new file mode 100644
index 00000000..df1facec
--- /dev/null
+++ b/SpotifyAPI.Web/Clients/Interfaces/IMarketsClient.cs
@@ -0,0 +1,19 @@
+using System.Threading.Tasks;
+
+namespace SpotifyAPI.Web
+{
+ ///
+ /// Markets Endpoints
+ ///
+ public interface IMarketsClient
+ {
+ ///
+ /// Get the list of markets where Spotify is available.
+ ///
+ ///
+ /// https://developer.spotify.com/documentation/web-api/reference/#/operations/get-available-markets
+ ///
+ ///
+ Task AvailableMarkets();
+ }
+}
diff --git a/SpotifyAPI.Web/Clients/MarketsClient.cs b/SpotifyAPI.Web/Clients/MarketsClient.cs
new file mode 100644
index 00000000..04aa6e19
--- /dev/null
+++ b/SpotifyAPI.Web/Clients/MarketsClient.cs
@@ -0,0 +1,16 @@
+using System.Threading.Tasks;
+using SpotifyAPI.Web.Http;
+using URLs = SpotifyAPI.Web.SpotifyUrls;
+
+namespace SpotifyAPI.Web
+{
+ public class MarketsClient : APIClient, IMarketsClient
+ {
+ public MarketsClient(IAPIConnector apiConnector) : base(apiConnector) { }
+
+ public Task AvailableMarkets()
+ {
+ return API.Get(URLs.Markets());
+ }
+ }
+}
diff --git a/SpotifyAPI.Web/Clients/SpotifyClient.cs b/SpotifyAPI.Web/Clients/SpotifyClient.cs
index 41bb6e23..1ac0e4ce 100644
--- a/SpotifyAPI.Web/Clients/SpotifyClient.cs
+++ b/SpotifyAPI.Web/Clients/SpotifyClient.cs
@@ -49,6 +49,7 @@ namespace SpotifyAPI.Web
Personalization = new PersonalizationClient(_apiConnector);
Episodes = new EpisodesClient(_apiConnector);
Library = new LibraryClient(_apiConnector);
+ Markets = new MarketsClient(_apiConnector);
}
public IPaginator DefaultPaginator { get; }
@@ -79,6 +80,8 @@ namespace SpotifyAPI.Web
public ILibraryClient Library { get; }
+ public IMarketsClient Markets { get; }
+
public IResponse? LastResponse { get; private set; }
///
diff --git a/SpotifyAPI.Web/Models/Response/AvailableMarketsResponse.cs b/SpotifyAPI.Web/Models/Response/AvailableMarketsResponse.cs
new file mode 100644
index 00000000..6c7e1018
--- /dev/null
+++ b/SpotifyAPI.Web/Models/Response/AvailableMarketsResponse.cs
@@ -0,0 +1,10 @@
+using System.Collections.Generic;
+
+namespace SpotifyAPI.Web
+{
+ public class AvailableMarketsResponse
+ {
+ public List Markets { get; set; } = default!;
+ }
+}
+
diff --git a/SpotifyAPI.Web/SpotifyUrls.cs b/SpotifyAPI.Web/SpotifyUrls.cs
index bb548c8d..570a0aa2 100644
--- a/SpotifyAPI.Web/SpotifyUrls.cs
+++ b/SpotifyAPI.Web/SpotifyUrls.cs
@@ -129,6 +129,8 @@ namespace SpotifyAPI.Web
public static Uri LibraryEpisodesContains() => EUri($"me/episodes/contains");
+ public static Uri Markets() => EUri($"markets");
+
private static Uri EUri(FormattableString path) => new(path.ToString(_provider), UriKind.Relative);
}
}