import "steammessages_base.proto"; import "steammessages_unified_base.steamclient.proto"; import "enums_productinfo.proto"; import "enums.proto"; import "contenthubs.proto"; option cc_generic_services = true; enum EStoreItemType { k_EStoreItemType_Invalid = -1; k_EStoreItemType_App = 0; k_EStoreItemType_Package = 1; k_EStoreItemType_Bundle = 2; k_EStoreItemType_Mtx = 3; k_EStoreItemType_Tag = 4; k_EStoreItemType_Creator = 5; k_EStoreItemType_HubCategory = 6; } enum EStoreAppType { k_EStoreAppType_Game = 0; k_EStoreAppType_Demo = 1; k_EStoreAppType_Mod = 2; k_EStoreAppType_Movie = 3; k_EStoreAppType_DLC = 4; k_EStoreAppType_Guide = 5; k_EStoreAppType_Software = 6; k_EStoreAppType_Video = 7; k_EStoreAppType_Series = 8; k_EStoreAppType_Episode = 9; k_EStoreAppType_Hardware = 10; k_EStoreAppType_Music = 11; k_EStoreAppType_Beta = 12; k_EStoreAppType_Tool = 13; k_EStoreAppType_Advertising = 14; } enum EUserReviewScore { k_EUserReviewScore_None = 0; k_EUserReviewScore_OverwhelminglyNegative = 1; k_EUserReviewScore_VeryNegative = 2; k_EUserReviewScore_Negative = 3; k_EUserReviewScore_MostlyNegative = 4; k_EUserReviewScore_Mixed = 5; k_EUserReviewScore_MostlyPositive = 6; k_EUserReviewScore_Positive = 7; k_EUserReviewScore_VeryPositive = 8; k_EUserReviewScore_OverwhelminglyPositive = 9; } enum EStoreCategoryType { k_EStoreCategoryType_Category = 0; k_EStoreCategoryType_SupportedPlayers = 1; k_EStoreCategoryType_Feature = 2; k_EStoreCategoryType_ControllerSupport = 3; k_EStoreCategoryType_CloudGaming = 4; k_EStoreCategoryType_MAX = 5; } message StoreItemID { optional uint32 appid = 1; optional uint32 packageid = 2; optional uint32 bundleid = 3; optional uint32 tagid = 4; optional uint32 creatorid = 5; optional uint32 hubcategoryid = 6; } message StoreBrowseContext { optional string language = 1; optional int32 elanguage = 2; optional string country_code = 3; optional int32 steam_realm = 4; } message StoreBrowseItemDataRequest { optional bool include_assets = 1; optional bool include_release = 2; optional bool include_platforms = 3; optional bool include_all_purchase_options = 4; optional bool include_screenshots = 5; optional bool include_trailers = 6; optional bool include_ratings = 7; optional int32 include_tag_count = 8; optional bool include_reviews = 9; optional bool include_basic_info = 10; optional bool include_supported_languages = 11; optional bool include_full_description = 12; optional bool include_included_items = 13; optional .StoreBrowseItemDataRequest included_item_data_request = 14; optional bool include_assets_without_overrides = 15; } message CStoreBrowse_GetItems_Request { repeated .StoreItemID ids = 1; optional .StoreBrowseContext context = 2; optional .StoreBrowseItemDataRequest data_request = 3; } message StoreItem { message RelatedItems { optional uint32 parent_appid = 1; } message IncludedItems { repeated .StoreItem included_apps = 1; repeated .StoreItem included_packages = 2; } message Categories { repeated uint32 supported_player_categoryids = 2; repeated uint32 feature_categoryids = 3; repeated uint32 controller_categoryids = 4; } message Reviews { message StoreReviewSummary { optional uint32 review_count = 1; optional int32 percent_positive = 2; optional .EUserReviewScore review_score = 3 [default = k_EUserReviewScore_None]; optional string review_score_label = 4; } optional .StoreItem.Reviews.StoreReviewSummary summary_filtered = 1; optional .StoreItem.Reviews.StoreReviewSummary summary_unfiltered = 2; } message BasicInfo { message CreatorHomeLink { optional string name = 1; optional uint32 creator_clan_account_id = 2; } optional string short_description = 1; repeated .StoreItem.BasicInfo.CreatorHomeLink publishers = 2; repeated .StoreItem.BasicInfo.CreatorHomeLink developers = 3; repeated .StoreItem.BasicInfo.CreatorHomeLink franchises = 4; optional string capsule_headline = 5; } message Tag { optional uint32 tagid = 1; optional uint32 weight = 2; } message Assets { optional string asset_url_format = 1; optional string main_capsule = 2; optional string small_capsule = 3; optional string header = 4; optional string package_header = 5; optional string page_background = 6; optional string hero_capsule = 7; optional string hero_capsule_2x = 8; optional string library_capsule = 9; optional string library_capsule_2x = 10; optional string library_hero = 11; optional string library_hero_2x = 12; optional string community_icon = 13; optional string clan_avatar = 14; } message ReleaseInfo { optional uint32 steam_release_date = 1; optional uint32 original_release_date = 2; optional uint32 original_steam_release_date = 3; optional bool is_coming_soon = 4; optional bool is_preload = 5; optional string custom_release_date_message = 6; optional bool is_abridged_release_date = 7; optional string coming_soon_display = 8; optional bool is_early_access = 10; optional uint32 mac_release_date = 20; optional uint32 linux_release_date = 21; } message Platforms { message VRSupport { optional bool vrhmd = 1; optional bool vrhmd_only = 2; optional bool htc_vive = 40; optional bool oculus_rift = 41; optional bool windows_mr = 42; optional bool valve_index = 43; } optional bool windows = 1; optional bool mac = 2; optional bool steamos_linux = 3; optional .StoreItem.Platforms.VRSupport vr_support = 10; optional .ESteamDeckCompatibilityCategory steam_deck_compat_category = 11 [default = k_ESteamDeckCompatibilityCategory_Unknown]; } message PurchaseOption { message Discount { optional int64 discount_amount = 1; optional string discount_description = 2; optional uint32 discount_end_date = 3; } message RecurrenceInfo { optional int32 packageid = 1; optional int32 billing_agreement_type = 2; optional int32 renewal_time_unit = 3; optional int32 renewal_time_period = 4; } optional int32 packageid = 1; optional int32 bundleid = 2; optional string purchase_option_name = 3; optional int64 final_price_in_cents = 5; optional int64 original_price_in_cents = 6; optional int64 user_final_price_in_cents = 7; optional string formatted_final_price = 8; optional string formatted_original_price = 9; optional int32 discount_pct = 10; optional int32 user_discount_pct = 11; optional int32 bundle_discount_pct = 12; repeated .StoreItem.PurchaseOption.Discount active_discounts = 20; repeated .StoreItem.PurchaseOption.Discount user_active_discounts = 21; repeated .StoreItem.PurchaseOption.Discount inactive_discounts = 22; optional bool user_can_purchase = 30; optional bool user_can_purchase_as_gift = 31; optional bool is_commercial_license = 40; optional bool should_suppress_discount_pct = 41; optional bool hide_discount_pct_for_compliance = 42 [default = false]; optional int32 included_game_count = 43; optional int64 lowest_recent_price_in_cents = 44; optional bool requires_shipping = 45; optional .StoreItem.PurchaseOption.RecurrenceInfo recurrence_info = 46; } message Screenshots { message Screenshot { optional string filename = 1; optional int32 ordinal = 2; } repeated .StoreItem.Screenshots.Screenshot all_ages_screenshots = 2; repeated .StoreItem.Screenshots.Screenshot mature_content_screenshots = 3; } message Trailers { message VideoSource { optional string filename = 1; optional string type = 2; } message Trailer { optional string trailer_name = 1; optional string trailer_url_format = 2; repeated .StoreItem.Trailers.VideoSource trailer_480p = 3; repeated .StoreItem.Trailers.VideoSource trailer_max = 4; repeated .StoreItem.Trailers.VideoSource microtrailer = 5; optional string screenshot_medium = 10; optional string screenshot_full = 11; optional int32 trailer_base_id = 12; } repeated .StoreItem.Trailers.Trailer highlights = 1; repeated .StoreItem.Trailers.Trailer other_trailers = 2; } message SupportedLanguage { optional int32 elanguage = 1; optional bool supported = 2; optional bool full_audio = 3; optional bool subtitles = 4; } message FreeWeekend { optional uint32 start_time = 1; optional uint32 end_time = 2; optional string text = 3; } optional .EStoreItemType item_type = 1 [default = k_EStoreItemType_Invalid]; optional uint32 id = 2; optional uint32 success = 3; optional bool visible = 4; optional bool unvailable_for_country_restriction = 5; optional string name = 6; optional string store_url_path = 7; optional uint32 appid = 9; optional .EStoreAppType type = 10 [default = k_EStoreAppType_Game]; repeated .EStoreAppType included_types = 11; repeated uint32 included_appids = 12; optional bool is_free = 13; optional bool is_early_access = 14; optional .StoreItem.RelatedItems related_items = 15; optional .StoreItem.IncludedItems included_items = 16; repeated .EContentDescriptorID content_descriptorids = 20; repeated uint32 tagids = 21; optional .StoreItem.Categories categories = 22; optional .StoreItem.Reviews reviews = 23; optional .StoreItem.BasicInfo basic_info = 24; repeated .StoreItem.Tag tags = 25; optional .StoreItem.Assets assets = 30; optional .StoreItem.ReleaseInfo release = 31; optional .StoreItem.Platforms platforms = 32; optional .StoreGameRating game_rating = 33; optional .StoreItem.PurchaseOption best_purchase_option = 40; repeated .StoreItem.PurchaseOption purchase_options = 41; repeated .StoreItem.PurchaseOption accessories = 42; optional .StoreItem.Screenshots screenshots = 50; optional .StoreItem.Trailers trailers = 51; repeated .StoreItem.SupportedLanguage supported_languages = 52; optional string store_url_path_override = 53; optional .StoreItem.FreeWeekend free_weekend = 54; optional bool unlisted = 55; optional uint32 game_count = 56; optional string internal_name = 57; optional string full_description = 58; optional bool is_free_temporarily = 59; optional .StoreItem.Assets assets_without_overrides = 60; } message StoreGameRating { optional string type = 1; optional string rating = 2; repeated string descriptors = 3; optional string interactive_elements = 4; optional int32 required_age = 10; optional bool use_age_gate = 11; optional string image_url = 20; optional string image_target = 21; } message CStoreBrowse_GetItems_Response { repeated .StoreItem store_items = 1; } message CStoreBrowse_GetStoreCategories_Request { optional string language = 1; optional int32 elanguage = 2 [default = -1]; } message CStoreBrowse_GetStoreCategories_Response { message Category { optional uint32 categoryid = 1; optional .EStoreCategoryType type = 2 [default = k_EStoreCategoryType_Category]; optional string internal_name = 3; optional string display_name = 4; optional string image_url = 5; optional bool show_in_search = 6; } repeated .CStoreBrowse_GetStoreCategories_Response.Category categories = 1; } message CStoreBrowse_GetDLCForApps_Request { optional .StoreBrowseContext context = 1; optional .CStorePageFilter store_page_filter = 2; repeated .StoreItemID appids = 3; optional uint64 steamid = 4; } message CStoreBrowse_GetDLCForApps_Response { message DLCData { optional uint32 appid = 1; optional uint32 parentappid = 2; optional uint32 release_date = 3; optional bool coming_soon = 4; optional int64 price = 5; optional uint32 discount = 6; optional bool free = 7; } message PlaytimeForApp { optional uint32 appid = 1; optional uint32 playtime = 2; optional uint32 last_played = 3; } repeated .CStoreBrowse_GetDLCForApps_Response.DLCData dlc_data = 1; repeated .CStoreBrowse_GetDLCForApps_Response.PlaytimeForApp playtime = 2; } message CStoreBrowse_GetDLCForAppsSolr_Request { optional .StoreBrowseContext context = 1; repeated uint32 appids = 2; optional string flavor = 3; optional uint32 count = 4; optional .CStorePageFilter store_page_filter = 5; } message CStoreBrowse_GetDLCForAppsSolr_Response { message DLCList { optional uint32 parent_appid = 1; repeated uint32 dlc_appids = 2; } repeated .CStoreBrowse_GetDLCForAppsSolr_Response.DLCList dlc_lists = 1; } message CStoreBrowse_GetHardwareItems_Request { repeated uint32 packageid = 1; optional .StoreBrowseContext context = 2; } message CHardwarePackageDetails { optional uint32 packageid = 1; optional bool inventory_available = 3; optional bool high_pending_orders = 4; optional bool account_restricted_from_purchasing = 5; optional bool requires_reservation = 6; optional uint32 rtime_estimated_notification = 7; optional string notificaton_token = 8; optional int32 reservation_state = 9; optional bool expired = 10; optional uint32 time_expires = 11; optional uint32 time_reserved = 12; optional bool allow_quantity_purchase = 13; optional int32 max_quantity_per_purchase = 14; optional bool allow_purchase_in_country = 15; optional uint32 estimated_delivery_soonest_business_days = 17; optional uint32 estimated_delivery_latest_business_days = 18; } message CStoreBrowse_GetHardwareItems_Response { repeated .CHardwarePackageDetails details = 1; } service StoreBrowse { rpc GetItems (.CStoreBrowse_GetItems_Request) returns (.CStoreBrowse_GetItems_Response); rpc GetStoreCategories (.CStoreBrowse_GetStoreCategories_Request) returns (.CStoreBrowse_GetStoreCategories_Response); rpc GetDLCForApps (.CStoreBrowse_GetDLCForApps_Request) returns (.CStoreBrowse_GetDLCForApps_Response); rpc GetDLCForAppsSolr (.CStoreBrowse_GetDLCForAppsSolr_Request) returns (.CStoreBrowse_GetDLCForAppsSolr_Response); rpc GetHardwareItems (.CStoreBrowse_GetHardwareItems_Request) returns (.CStoreBrowse_GetHardwareItems_Response); }