import "steammessages_base.proto";
import "steammessages_unified_base.steamclient.proto";

option cc_generic_services = true;

message CParties_JoinParty_Request {
	optional fixed64 steamid = 1;
	optional uint64 beacon_id = 2;
}

message CParties_JoinParty_Response {
	optional uint64 beacon_id = 1;
	optional string connect_string = 2;
}

message CParties_BeaconLocation {
	optional uint32 location_type = 1;
	optional uint64 location_id = 2;
}

message CParties_CreateBeacon_Request {
	optional uint32 appid = 1;
	optional uint32 num_open_slots = 2;
	repeated .CParties_BeaconLocation locations = 3;
	optional string connect_string = 4;
	optional string metadata = 5;
}

message CParties_CreateBeacon_Response {
	optional uint64 beacon_id = 1;
}

message CParties_OnReservationCompleted_Request {
	optional uint64 beacon_id = 1;
	optional fixed64 user_steamid = 2;
}

message CParties_OnReservationCompleted_Response {
	optional uint64 beacon_id = 1;
}

message CParties_CancelReservation_Request {
	optional uint64 beacon_id = 1;
	optional fixed64 user_steamid = 2;
}

message CParties_CancelReservation_Response {
	optional uint64 beacon_id = 1;
}

message CParties_ChangeNumOpenSlots_Request {
	optional uint64 beacon_id = 1;
	optional uint32 num_open_slots = 2;
}

message CParties_ChangeNumOpenSlots_Response {
	optional uint64 beacon_id = 1;
}

message CParties_DestroyBeacon_Request {
	optional uint64 beacon_id = 1;
}

message CParties_DestroyBeacon_Response {
	optional uint64 beacon_id = 1;
}

service Parties {
	rpc JoinParty (.CParties_JoinParty_Request) returns (.CParties_JoinParty_Response);
	rpc CreateBeacon (.CParties_CreateBeacon_Request) returns (.CParties_CreateBeacon_Response);
	rpc OnReservationCompleted (.CParties_OnReservationCompleted_Request) returns (.CParties_OnReservationCompleted_Response);
	rpc CancelReservation (.CParties_CancelReservation_Request) returns (.CParties_CancelReservation_Response);
	rpc ChangeNumOpenSlots (.CParties_ChangeNumOpenSlots_Request) returns (.CParties_ChangeNumOpenSlots_Response);
	rpc DestroyBeacon (.CParties_DestroyBeacon_Request) returns (.CParties_DestroyBeacon_Response);
}
