aboutsummaryrefslogtreecommitdiff
path: root/lib/listenbrainz.atd
diff options
context:
space:
mode:
Diffstat (limited to 'lib/listenbrainz.atd')
-rw-r--r--lib/listenbrainz.atd58
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/listenbrainz.atd b/lib/listenbrainz.atd
new file mode 100644
index 0000000..d45136d
--- /dev/null
+++ b/lib/listenbrainz.atd
@@ -0,0 +1,58 @@
+type mbid = string
+type isrc = string
+
+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 <json name="single">
+ | Playing_now <json name="playing_now">
+ | Import <json name="import">
+]
+
+type listen_payload = {
+ listened_at : int;
+ track_metadata : track_metadata;
+}
+
+type submission = {
+ listen_type : listen_type;
+ payload : listen_payload list;
+} <ocaml valid="Listenbrainz_util.validate_submission">
+
+type response = {
+ count : int;
+ user_id : mbid;
+ listens : listen_payload list;
+} <ocaml valid="Listenbrainz_util.validate_response">
+
+type validate_token = {
+ code : int;
+ message : string;
+ valid : bool;
+ user: string;
+}
+
+type delete_listen = {
+ listened_at : int;
+ recording_msid : string;
+}