syntax = "proto3"; package music_agregator.v1; option go_package = "homelab.lan/music-agregator/gen/music_agregator/v1/"; service MusicAgregatorService { rpc MonitorAlbum(MonitorAlbumRequest) returns (MonitorAlbumResponse) {} rpc GetArtists(GetArtistsRequest) returns (GetArtistsResponse) {} } message MonitorAlbumRequest { string album_id = 1; IndexerOptions indexer_options = 2; QualityType quality = 3; } message IndexerOptions { string tracker = 1; } enum QualityType { QUALITY_UNSPECIFIED = 0; QUALITY_LOSSLESS = 1; QUALITY_LOSSY = 2; } message MonitorAlbumResponse { MonitoredRelease release = 1; } message GetArtistsRequest {} message GetArtistsResponse { repeated ArtistSummary artists = 1; } enum MonitorState { MONITOR_STATE_UNSPECIFIED = 0; MONITOR_STATE_MONITORED = 1; MONITOR_STATE_UNMONITORED = 2; MONITOR_STATE_EXCLUDED = 3; } message ArtistSummary { string id = 1; string external_id = 2; string name = 3; string artist_type = 4; string country = 5; repeated string genres = 6; string image_url = 7; MonitorState monitor_state = 8; repeated AlbumDetail albums = 9; } message AlbumDetail { string id = 1; string external_id = 2; string title = 3; string album_type = 4; string release_date = 5; int32 total_tracks = 6; int32 total_discs = 7; string cover_url = 8; repeated string genres = 9; string label = 10; MonitorState monitor_state = 11; DownloadInfo download = 12; } message DownloadInfo { string state = 1; string format = 2; string quality = 3; string save_path = 4; } message MonitoredRelease { string info_hash = 1; string artist = 2; string album = 3; int32 year = 4; string format = 5; bool lossless = 6; int32 bit_depth = 7; int32 sample_rate = 8; string source = 9; int32 track_count = 10; repeated string track_names = 11; bool has_cover_art = 12; bool has_cue_sheet = 13; bool has_rip_log = 14; int64 total_audio_size = 15; string download_link = 16; int32 seeders = 17; string tracker = 18; }