syntax = "proto3"; package Aurora.Proto.Party; import "Proto/general.proto"; service RemotePartyService { //************** //Party Resource //************** //Get Party rpc GetParty(Aurora.Proto.General.Empty) returns (Party); //CUSTOM: Join rpc JoinParty(JoinPartyRequest) returns (JoinPartyResponse); //CUSTOM: Leave rpc LeaveParty(LeavePartyRequest) returns (LeavePartyResponse); //*************** //Member Resource //*************** //List rpc ListMembers(ListMembersRequest) returns (ListMembersResponse); //Get rpc GetMember(GetMemberRequest) returns (Member); //************** //Media Resource //************** //List rpc ListMedia(ListMediaRequest) returns (ListMediaResposne); //Get rpc GetMedia(GetMediaRequest) returns (RemoteMedia); //CUSTOM: Stream rpc StreamMedia(StreamMediaRequest) returns (stream Aurora.Proto.General.Chunk) {}; //CUSTOM: Sync rpc SyncMedia(SyncMediaRequest) returns (stream Sync) {}; //*************************** //EventSubscriptions Resource //*************************** //List rpc ListEventSubscriptions(ListEventSubscriptionsRequest) returns (ListEventSubscriptionsResponse); //Create rpc CreateEventSubscription(CreateEventSubscriptionRequest) returns (EventSubscription); //Delete rpc DeleteEventSubscription(DeleteEventSubscriptionRequest) returns (Aurora.Proto.General.Empty); //CUSTOM: Delete all rpc DeleteAllEventSubsciptions(DeleteAllEventSubscriptions) returns (Aurora.Proto.General.Empty); //***** //Event //***** //Get rpc GetEvents(GetEventsRequest) returns (stream BaseEvent) {}; } message Party { string name = 1; string displayName = 2; string description = 3; string host = 4; Timestamp createdTime = 5; } message JoinPartyRequest { string userName = 2; } enum PartyJoinedStatusEnum { InParty = 0; NotInParty = 1; } message JoinPartyResponse { PartyJoinedStatusEnum status = 1; string clientId = 2; } message LeavePartyRequest { string clientId = 1; } message LeavePartyResponse { PartyJoinedStatusEnum status = 1; } message PartyMember { string name = 1; string userName = 2; string id = 3; string ipAddress = 4; int32 port = 5; } message ListMembersRequest { string parent = 1; int32 pageSize = 2; string pageToken = 3; } message ListMembersResponse { repeated PartyMember members = 1; string nextPageToken = 2; } message GetMemberRequest { string name = 1; } message RemoteMedia { string id = 1; string title = 2; string artist = 3; string album = 4; string duration = 5; } message ListMediaRequest { string parent = 1; int32 pageSize = 2; string pageToken = 3; } message ListMediaResponse { repeated RemoteMedia media = 1; string nextPageToken = 3; } message GetMediaRequest { string name = 1; } message StreamMediaRequest { string name = 1; } message Sync { int64 serverTimeTicks = 1; float trackPosition= 2; } /* Event Types */ enum EventType { PartyMemberJoined = 0; PartyMemberLeft = 1; MediaPlaying = 2; MediaStopped = 3; } message BaseEvent { string name = 1; EventType eventType = 2; string clientKey = 3; oneof derivedEvent { PartyMemberJoinedEvent partyMemberJoinedEvent = 4; PartyMemberLeftEvent partyMemberLeftEvent = 5; NewMediaPlayingEvent newMediaPlayingEvent = 6; MediaPausedEvent mediaPausedEvent = 7; MediaResumedEvent mediaResumedEvent = 8; } } message NewMediaPlayingEvent { Aurora.Proto.Party.RemoteMediaData media = 1; } message MediaResumedEvent { Aurora.Proto.General.Empty empty = 1; } message MediaPausedEvent { Aurora.Proto.General.Empty empty = 1; } message PartyMemberJoinedEvent { Aurora.Proto.Party.PartyMember member = 1; } message PartyMemberLeftEvent { Aurora.Proto.Party.PartyMember member = 1; } message EventSubscription { string name = 1; EventType type = 2; } message ListEventSubscriptionsRequest { string parent = 1; int32 pageSize = 2; string pageToken = 3; } message ListEventSubscriptionsResponse { repeated EventSubscription subscriptions = 1; string nextPageToken = 3; } message CreateEventSubscriptionRequest { string parent = 1; EventSubscription eventSubscription = 2; } message DeleteEventSubscriptionRequest { string name = 1; } message DeleteAllEventSubscriptionsRequest { string parent = 1; } message GetEventsRequest { string parent = 1; }