syntax = "proto2";

package overworld;

/////////////////////////////////////////////////////////
// General messages                                    //
/////////////////////////////////////////////////////////

message gen_response {
	enum status {
		OK = 0;
		ERROR = 1;
	}
	required status status = 1;
	optional string msg = 2;
}

/////////////////////////////////////////////////////////
// Account Messages                                    //
/////////////////////////////////////////////////////////

message account_new {
	required string email = 1;
	required string password = 2;
}

message account_login {
	required string email = 1;
	required string password = 2;
}

/////////////////////////////////////////////////////////
// Session Messages                                    //
/////////////////////////////////////////////////////////
message session_log {
	required string msg = 1;
    required bytes color = 2;
}

// server --> all clients
message session_beacon {
    required uint32 id = 1;
}

// client --> server
message session_ping {
    required uint32 id = 1;
}

// server -> client
message session_pong {
    // send the most recent estimate for latency
    required uint32 latency = 1;
}

// server -> client
message session_id {
    // send the internal session id back to the client
    // TODO: think about whether or not this is bad to leak. this implicitly
    //       assumes we never use the session id for anything secure
    required int64 id = 1;
}
