lib/sptfy/artist.ex

defmodule Sptfy.Artist do
  @moduledoc """
  https://developer.spotify.com/documentation/web-api/reference-beta/#category-artists
  """

  use Sptfy.Client

  alias Sptfy.Object.{FullArtist, FullTrack, SimplifiedAlbum}

  get "/v1/artists",
    as: :get_artists,
    query: [{:ids, required: true}],
    mapping: {:list, module: FullArtist, key: "artists"}

  get "/v1/artists/:id",
    as: :get_artist,
    query: [],
    mapping: {:single, module: FullArtist}

  get "/v1/artists/:id/top-tracks",
    as: :get_top_tracks,
    query: [{:market, required: true}],
    mapping: {:list, module: FullTrack, key: "tracks"}

  get "/v1/artists/:id/related-artists",
    as: :get_related_artists,
    query: [],
    mapping: {:list, module: FullArtist, key: "artists"}

  get "/v1/artists/:id/albums",
    as: :get_albums,
    query: [:include_groups, :market, :limit, :offset],
    mapping: {:paging, module: SimplifiedAlbum}
end