/**
 * Spotify Node - Version 1
 * Discriminator: resource=track, operation=get
 */


interface Credentials {
  spotifyOAuth2Api: CredentialReference;
}

/** Get an album by URI or ID */
export type SpotifyV1TrackGetParams = {
  resource: 'track';
  operation: 'get';
/**
 * The track's Spotify URI or ID
 * @displayOptions.hide { operation: ["search"] }
 */
    id?: string | Expression<string> | PlaceholderValue;
};

export type SpotifyV1TrackGetOutput = {
  album?: {
    album_type?: string;
    artists?: Array<{
      external_urls?: {
        spotify?: string;
      };
      href?: string;
      id?: string;
      name?: string;
      type?: string;
      uri?: string;
    }>;
    available_markets?: Array<string>;
    external_urls?: {
      spotify?: string;
    };
    href?: string;
    id?: string;
    images?: Array<{
      height?: number;
      url?: string;
      width?: number;
    }>;
    name?: string;
    release_date?: string;
    release_date_precision?: string;
    total_tracks?: number;
    type?: string;
    uri?: string;
  };
  artists?: Array<{
    external_urls?: {
      spotify?: string;
    };
    href?: string;
    id?: string;
    name?: string;
    type?: string;
    uri?: string;
  }>;
  available_markets?: Array<string>;
  disc_number?: number;
  duration_ms?: number;
  explicit?: boolean;
  external_ids?: {
    isrc?: string;
  };
  external_urls?: {
    spotify?: string;
  };
  href?: string;
  id?: string;
  is_local?: boolean;
  name?: string;
  popularity?: number;
  track_number?: number;
  type?: string;
  uri?: string;
};

export type SpotifyV1TrackGetNode = {
  type: 'n8n-nodes-base.spotify';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<SpotifyV1TrackGetParams>;
  output?: Items<SpotifyV1TrackGetOutput>;
};