import "steammessages_unified_base.steamclient.proto";

option cc_generic_services = true;

message CEcon_GetTradeOfferAccessToken_Request {
	optional bool generate_new_token = 1;
}

message CEcon_GetTradeOfferAccessToken_Response {
	optional string trade_offer_access_token = 1;
}

message CEcon_ClientGetItemShopOverlayAuthURL_Request {
	optional string return_url = 1;
}

message CEcon_ClientGetItemShopOverlayAuthURL_Response {
	optional string url = 1;
}

message CEcon_GetAssetClassInfo_Request {
	message Class {
		optional uint64 classid = 1;
		optional uint64 instanceid = 2;
	}

	optional string language = 1;
	optional uint32 appid = 2;
	repeated .CEcon_GetAssetClassInfo_Request.Class classes = 3;
}

message CEconItem_DescriptionLine {
	optional string type = 1;
	optional string value = 2;
	optional string color = 3;
	optional string label = 4;
}

message CEconItem_Action {
	optional string link = 1;
	optional string name = 2;
}

message CEconItem_Description {
	optional int32 appid = 1;
	optional uint64 classid = 2;
	optional uint64 instanceid = 3;
	optional bool currency = 4;
	optional string background_color = 5;
	optional string icon_url = 6;
	optional string icon_url_large = 7;
	repeated .CEconItem_DescriptionLine descriptions = 8;
	optional bool tradable = 9;
	repeated .CEconItem_Action actions = 10;
	repeated .CEconItem_DescriptionLine owner_descriptions = 11;
	repeated .CEconItem_Action owner_actions = 12;
	repeated string fraudwarnings = 13;
	optional string name = 14;
	optional string name_color = 15;
	optional string type = 16;
	optional string market_name = 17;
	optional string market_hash_name = 18;
	optional string market_fee = 19;
	optional int32 market_fee_app = 28;
	optional .CEconItem_Description contained_item = 20;
	repeated .CEconItem_Action market_actions = 21;
	optional bool commodity = 22;
	optional int32 market_tradable_restriction = 23;
	optional int32 market_marketable_restriction = 24;
	optional bool marketable = 25;
	repeated .CEconItem_Tag tags = 26;
	optional string item_expiration = 27;
	optional string market_buy_country_restriction = 30;
	optional string market_sell_country_restriction = 31;
}

message CEconItem_Tag {
	optional uint32 appid = 1 [(description) = "The app that contains the item"];
	optional string category = 2 [(description) = "The internal name of the category the tag belongs to"];
	optional string internal_name = 3 [(description) = "The internal name of the tag"];
	optional string localized_category_name = 4 [(description) = "The localized name of the category"];
	optional string localized_tag_name = 5 [(description) = "The localized name of the tag"];
	optional string color = 6 [(description) = "The color to use when displaying the tag to the user"];
}

message CEcon_GetAssetClassInfo_Response {
	repeated .CEconItem_Description descriptions = 1;
}

service Econ {
	option (service_description) = "A service that provides communication with the econ servers";

	rpc GetTradeOfferAccessToken (.CEcon_GetTradeOfferAccessToken_Request) returns (.CEcon_GetTradeOfferAccessToken_Response) {
		option (method_description) = "Get the user's trade offer access token";
	}

	rpc ClientGetItemShopOverlayAuthURL (.CEcon_ClientGetItemShopOverlayAuthURL_Request) returns (.CEcon_ClientGetItemShopOverlayAuthURL_Response) {
		option (method_description) = "Generates a URL which sets a secure cookie for in-game-browser itemshop purchases";
	}

	rpc GetAssetClassInfo (.CEcon_GetAssetClassInfo_Request) returns (.CEcon_GetAssetClassInfo_Response) {
		option (method_description) = "Returns description information about the passed in asset classes";
	}
}
