
message CUserNews_Event {
	optional uint32 eventtype = 1;
	optional uint32 eventtime = 2;
	optional fixed64 steamid_actor = 3;
	optional fixed64 steamid_target = 4;
	optional fixed64 gameid = 5;
	optional uint32 packageid = 6;
	optional uint32 shortcutid = 7;
	repeated string achievement_names = 8;
	optional fixed64 clan_eventid = 9;
	optional fixed64 clan_announcementid = 10;
	optional fixed64 publishedfileid = 11;
	optional uint32 event_last_mod_time = 12;
	repeated uint32 appids = 13;
	optional uint32 event_post_time = 14;
}

message CUserNews_GetAppDetailsSpotlight_Request {
	optional uint32 appid = 1;
	optional bool include_already_seen = 2;
}

message CUserNews_GetAppDetailsSpotlight_Response {
	repeated .CUserNews_GetAppDetailsSpotlight_Response_FeaturedEvent events = 1;
}

message CUserNews_GetAppDetailsSpotlight_Response_FeaturedEvent {
	optional uint32 event_type = 1;
	optional uint32 event_time = 2;
	optional fixed64 clan_id = 3;
	optional fixed64 clan_announcementid = 4;
	optional uint32 appid = 5;
	optional uint32 rtime32_last_modified = 6;
}

message CUserNews_GetUserNews_Request {
	optional uint32 count = 1;
	optional uint32 starttime = 2;
	optional uint32 endtime = 3;
	optional string language = 4;
	optional uint32 filterflags = 5;
	optional uint32 filterappid = 6;
}

message CUserNews_GetUserNews_Response {
	repeated .CUserNews_Event news = 1;
	repeated .CUserNewsAchievementDisplayData achievement_display_data = 2;
}

message CUserNewsAchievementDisplayData {
	optional uint32 appid = 1;
	repeated .CUserNewsAchievementDisplayData_CAchievement achievements = 2;
}

message CUserNewsAchievementDisplayData_CAchievement {
	optional string name = 1;
	optional string display_name = 2;
	optional string display_description = 3;
	optional string icon = 4;
	optional float unlocked_pct = 5;
	optional bool hidden = 6;
}

service UserNews {
	// ePrivilege=1
	rpc GetAppDetailsSpotlight (.CUserNews_GetAppDetailsSpotlight_Request) returns (.CUserNews_GetAppDetailsSpotlight_Response);
	// ePrivilege=1
	rpc GetUserNews (.CUserNews_GetUserNews_Request) returns (.CUserNews_GetUserNews_Response);
}

