type mbid = string type isrc = string type unixtime = float type tm = unixtime wrap type additional_info = { ?artist_mbids : mbid list option; ?release_group_mbid : mbid list option; ?release_mid : mbid option; ?recording_mbid : mbid option; ?track_mbid : mbid option; ?work_mbids : mbid list option; ?tracknumber : int option; ?isrc : isrc option; ?spotify_id : string option; ?tags : string list option; ?listening_from : string option; } type track_metadata = { artist_name : string; track_name : string; ?listened_at : int option; ?additional_info : additional_info option; ?release_name : string option; } type listen_type = [ Single | Playing_now | Import ] type similar_user = { user_name : string; similarity : float; } type payload_listen = { ?listened_at : tm option; track_metadata : track_metadata; } type payload_listen_count = { count : int; } type post_submit_listens = { listen_type : listen_type; payload : payload_listen list; } type get_validate_token = { code : int; message : string; valid : bool; ?user: string option; } type post_delete_listen = { listened_at : tm; recording_msid : mbid; } type get_user_similar_users = similar_user list type get_user_listen_count = { payload : payload_listen_count; } type get_user_playing_now = { count : int; user_id : mbid; listens : payload_listen list; } type get_user_similar_to = similar_user type get_user_listens = { count : int; user_id : mbid; listens : payload_listen list; } type get_latest_import = { musicbrainz_id : mbid; latest_import : tm; } type post_latest_import = { ts : tm; }