195 lines
4.1 KiB
Protocol Buffer
195 lines
4.1 KiB
Protocol Buffer
syntax = "proto3";
|
|
package crabidy.v1;
|
|
|
|
service CrabidyService {
|
|
// System
|
|
rpc Init(InitRequest) returns (InitResponse);
|
|
|
|
// Library
|
|
rpc GetLibraryNode(GetLibraryNodeRequest) returns (GetLibraryNodeResponse);
|
|
|
|
// Queue
|
|
rpc Queue(QueueRequest) returns (QueueResponse);
|
|
rpc Replace(ReplaceRequest) returns (ReplaceResponse);
|
|
rpc Append(AppendRequest) returns (AppendResponse);
|
|
rpc Remove(RemoveRequest) returns (RemoveResponse);
|
|
rpc Insert(InsertRequest) returns (InsertResponse);
|
|
rpc SetCurrent(SetCurrentRequest) returns (SetCurrentResponse);
|
|
rpc ToggleShuffle(ToggleShuffleRequest) returns (ToggleShuffleResponse);
|
|
rpc ToggleRepeat(ToggleRepeatRequest) returns (ToggleRepeatResponse);
|
|
rpc GetUpdateStream(GetUpdateStreamRequest) returns (stream GetUpdateStreamResponse);
|
|
rpc SaveQueue(SaveQueueRequest) returns (SaveQueueResponse);
|
|
|
|
// Playback
|
|
rpc TogglePlay(TogglePlayRequest) returns (TogglePlayResponse);
|
|
rpc Stop(StopRequest) returns (StopResponse);
|
|
rpc ChangeVolume(ChangeVolumeRequest) returns (ChangeVolumeResponse);
|
|
rpc ToggleMute(ToggleMuteRequest) returns (ToggleMuteResponse);
|
|
rpc Next(NextRequest) returns (NextResponse);
|
|
rpc Prev(PrevRequest) returns (PrevResponse);
|
|
rpc RestartTrack(RestartTrackRequest) returns (RestartTrackResponse);
|
|
}
|
|
|
|
// System
|
|
message InitRequest {}
|
|
message InitResponse {
|
|
Queue queue = 1;
|
|
QueueModifiers mods = 2;
|
|
QueueTrack queue_track = 3;
|
|
PlayState play_state = 4;
|
|
float volume = 5;
|
|
bool mute = 6;
|
|
TrackPosition position = 7;
|
|
}
|
|
|
|
// Library
|
|
message GetLibraryNodeRequest {
|
|
string uuid = 1;
|
|
}
|
|
message GetLibraryNodeResponse {
|
|
LibraryNode node = 1;
|
|
}
|
|
|
|
// Queue
|
|
message QueueRequest {
|
|
repeated string uuids = 1;
|
|
}
|
|
message QueueResponse {}
|
|
|
|
message ReplaceRequest {
|
|
repeated string uuids = 1;
|
|
}
|
|
message ReplaceResponse {}
|
|
|
|
message AppendRequest {
|
|
repeated string uuids = 1;
|
|
}
|
|
message AppendResponse {}
|
|
|
|
message RemoveRequest {
|
|
repeated uint32 positions = 1;
|
|
}
|
|
message RemoveResponse {}
|
|
|
|
message InsertRequest {
|
|
uint32 position = 1;
|
|
repeated string uuids = 2;
|
|
}
|
|
message InsertResponse {}
|
|
|
|
message SetCurrentRequest {
|
|
uint32 position = 1;
|
|
}
|
|
message SetCurrentResponse {}
|
|
|
|
message ToggleShuffleRequest {}
|
|
message ToggleShuffleResponse {}
|
|
|
|
message ToggleRepeatRequest {}
|
|
message ToggleRepeatResponse {}
|
|
|
|
message SaveQueueRequest {
|
|
string name = 1;
|
|
}
|
|
message SaveQueueResponse {}
|
|
|
|
// Stream
|
|
message GetUpdateStreamRequest {}
|
|
message GetUpdateStreamResponse {
|
|
oneof update {
|
|
Queue queue = 1;
|
|
QueueModifiers mods = 2;
|
|
QueueTrack queue_track = 3;
|
|
PlayState play_state = 4;
|
|
float volume = 5;
|
|
bool mute = 6;
|
|
TrackPosition position = 7;
|
|
}
|
|
}
|
|
|
|
// Playback
|
|
message TogglePlayRequest {}
|
|
message TogglePlayResponse {}
|
|
|
|
message StopRequest {}
|
|
message StopResponse {}
|
|
|
|
message ChangeVolumeRequest {
|
|
float delta = 1;
|
|
}
|
|
message ChangeVolumeResponse {}
|
|
|
|
message ToggleMuteRequest {}
|
|
message ToggleMuteResponse {}
|
|
|
|
message NextRequest {}
|
|
message NextResponse {}
|
|
|
|
message PrevRequest {}
|
|
message PrevResponse {}
|
|
|
|
message RestartTrackRequest {}
|
|
message RestartTrackResponse {}
|
|
|
|
// Data types
|
|
message LibraryNodeChild {
|
|
string uuid = 1;
|
|
string title = 2;
|
|
bool is_queable = 3;
|
|
}
|
|
|
|
message QueueModifiers {
|
|
bool shuffle = 1;
|
|
bool repeat = 2;
|
|
}
|
|
|
|
message Queue {
|
|
uint64 timestamp = 1;
|
|
uint32 current_position = 2;
|
|
// Without album
|
|
repeated Track tracks = 3;
|
|
}
|
|
|
|
message QueueTrack {
|
|
uint32 queue_position = 1;
|
|
// With album
|
|
optional Track track = 2;
|
|
}
|
|
|
|
enum PlayState {
|
|
PLAY_STATE_UNSPECIFIED = 0;
|
|
PLAY_STATE_STOPPED = 1;
|
|
PLAY_STATE_LOADING = 2;
|
|
PLAY_STATE_PLAYING = 3;
|
|
PLAY_STATE_PAUSED = 4;
|
|
}
|
|
|
|
message TrackPosition {
|
|
uint32 duration = 1;
|
|
uint32 position = 2;
|
|
}
|
|
|
|
message Album {
|
|
string title = 1;
|
|
optional string release_date = 2;
|
|
}
|
|
|
|
message Track {
|
|
// Including provider
|
|
string uuid = 1;
|
|
string artist = 2;
|
|
string title = 3;
|
|
optional uint32 duration = 4;
|
|
optional Album album = 5;
|
|
}
|
|
|
|
message LibraryNode {
|
|
// Including provider
|
|
string uuid = 1;
|
|
string title = 2;
|
|
repeated LibraryNodeChild children = 3;
|
|
optional string parent = 4;
|
|
repeated Track tracks = 5;
|
|
bool is_queable = 6;
|
|
}
|