type GET_me_player_currently_playing_Actions {
  disallows: GET_me_player_currently_playing_Disallows
}

type GET_me_player_currently_playing_Album {
  album_type: String
  artists: [GET_me_player_currently_playing_ArtistsEntry]
  available_markets: [String]
  external_urls: GET_me_player_currently_playing_ExternalUrls2
  href: String
  id: String
  images: [GET_me_player_currently_playing_ImagesEntry]
  name: String
  release_date: Int
  release_date_precision: String
  total_tracks: Int
  type: String
  uri: String
}

type GET_me_player_currently_playing_Artists1Entry {
  external_urls: GET_me_player_currently_playing_ExternalUrls3
  href: String
  id: String
  name: String
  type: String
  uri: String
}

type GET_me_player_currently_playing_ArtistsEntry {
  external_urls: GET_me_player_currently_playing_ExternalUrls1
  href: String
  id: String
  name: String
  type: String
  uri: String
}

type GET_me_player_currently_playing_Context {
  external_urls: GET_me_player_currently_playing_ExternalUrls
  href: String
  type: String
  uri: String
}

type GET_me_player_currently_playing_Disallows {
  resuming: Boolean
}

type GET_me_player_currently_playing_ExternalIds {
  isrc: String
}

type GET_me_player_currently_playing_ExternalUrls {
  spotify: String
}

type GET_me_player_currently_playing_ExternalUrls1 {
  spotify: String
}

type GET_me_player_currently_playing_ExternalUrls2 {
  spotify: String
}

type GET_me_player_currently_playing_ExternalUrls3 {
  spotify: String
}

type GET_me_player_currently_playing_ExternalUrls4 {
  spotify: String
}

type GET_me_player_currently_playing_ImagesEntry {
  height: Int
  url: String
  width: Int
}

type GET_me_player_currently_playing_Item {
  album: GET_me_player_currently_playing_Album
  artists: [GET_me_player_currently_playing_Artists1Entry]
  available_markets: [String]
  disc_number: Int
  duration_ms: Int
  explicit: Boolean
  external_ids: GET_me_player_currently_playing_ExternalIds
  external_urls: GET_me_player_currently_playing_ExternalUrls4
  href: String
  id: String
  is_local: Boolean
  name: String
  popularity: Int
  preview_url: String
  track_number: Int
  type: String
  uri: String
}

type GET_me_player_currently_playing_Root {
  actions: GET_me_player_currently_playing_Actions
  context: GET_me_player_currently_playing_Context
  currently_playing_type: String
  is_playing: Boolean
  item: GET_me_player_currently_playing_Item
  progress_ms: Int
  timestamp: ID
}

type Query {
  GET_me_player_currently_playing(
    spotify_access_token: String!
  ): GET_me_player_currently_playing_Root
    @rest(
      endpoint: "https://api.spotify.com/v1/me/player/currently-playing"
      headers: [
        { name: "authorization", value: "Bearer $spotify_access_token;" }
      ]
    )
}
