You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

328 lines
12 KiB

syntax = "proto2";
import "steammessages_base.proto";
import "steammessages_unified_base.proto";
import "enums.proto";
option py_generic_services = true;
enum EStoreDiscoveryQueueType {
k_EStoreDiscoveryQueueTypeNew = 0;
k_EStoreDiscoveryQueueTypeComingSoon = 1;
k_EStoreDiscoveryQueueTypeRecommended = 2;
k_EStoreDiscoveryQueueTypeEveryNewRelease = 3;
k_EStoreDiscoveryQueueTypeMLRecommender = 5;
k_EStoreDiscoveryQueueTypeWishlistOnSale = 6;
k_EStoreDiscoveryQueueTypeDLC = 7;
k_EStoreDiscoveryQueueTypeDLCOnSale = 8;
k_EStoreDiscoveryQueueTypeRecommendedComingSoon = 9;
k_EStoreDiscoveryQueueTypeRecommendedFree = 10;
k_EStoreDiscoveryQueueTypeRecommendedOnSale = 11;
k_EStoreDiscoveryQueueTypeRecommendedDemos = 12;
k_EStoreDiscoveryQueueTypeDLCNewReleases = 13;
k_EStoreDiscoveryQueueTypeDLCTopSellers = 14;
k_EStoreDiscoveryQueueTypeMAX = 15;
}
enum EPlaytestStatus {
k_ETesterStatusNone = 0;
k_ETesterStatusPending = 1;
k_ETesterStatusInvited = 2;
k_ETesterStatusGranted = 3;
}
enum EUserReviewScorePreference {
k_EUserReviewScorePreference_Unset = 0;
k_EUserReviewScorePreference_IncludeAll = 1;
k_EUserReviewScorePreference_ExcludeBombs = 2;
}
message CStore_RegisterCDKey_Request {
optional string activation_code = 1 [(description) = "Key string to register on the logged in user's account"];
optional int32 purchase_platform = 2 [(description) = "EPurchasePlatform for platform of request"];
optional bool is_request_from_client = 3 [(description) = "True if the request was initiated from inside the Steam client"];
}
message CStore_PurchaseReceiptInfo {
message LineItem {
optional uint32 packageid = 1;
optional uint32 appid = 2;
optional string line_item_description = 3;
}
optional uint64 transactionid = 1;
optional uint32 packageid = 2;
optional uint32 purchase_status = 3;
optional uint32 result_detail = 4;
optional uint32 transaction_time = 5;
optional uint32 payment_method = 6;
optional uint64 base_price = 7;
optional uint64 total_discount = 8;
optional uint64 tax = 9;
optional uint64 shipping = 10;
optional uint32 currency_code = 11;
optional string country_code = 12;
optional string error_headline = 13;
optional string error_string = 14;
optional string error_link_text = 15;
optional string error_link_url = 16;
optional uint32 error_appid = 17;
repeated .CStore_PurchaseReceiptInfo.LineItem line_items = 18;
}
message CStore_RegisterCDKey_Response {
optional int32 purchase_result_details = 1 [(description) = "EPurchaseResultDetails from key activation"];
optional .CStore_PurchaseReceiptInfo purchase_receipt_info = 2 [(description) = "Purchase receipt info"];
}
message CStore_GetMostPopularTags_Request {
optional string language = 1;
}
message CStore_GetMostPopularTags_Response {
message Tag {
optional uint32 tagid = 1;
optional string name = 2;
}
repeated .CStore_GetMostPopularTags_Response.Tag tags = 1;
}
message CStore_GetLocalizedNameForTags_Request {
optional string language = 1;
repeated uint32 tagids = 2;
}
message CStore_GetLocalizedNameForTags_Response {
message Tag {
optional uint32 tagid = 1;
optional string english_name = 2;
optional string name = 3;
optional string normalized_name = 4 [(description) = "english_name, lowercase, with homoglyphs replaced and spaces and some punctuation removed."];
}
repeated .CStore_GetLocalizedNameForTags_Response.Tag tags = 1;
}
message CStoreDiscoveryQueueSettings {
optional bool os_win = 4;
optional bool os_mac = 5;
optional bool os_linux = 6;
optional bool full_controller_support = 7;
optional bool native_steam_controller = 8;
optional bool include_coming_soon = 9;
repeated uint32 excluded_tagids = 10 [(description) = "Don't return any games with these tags."];
optional bool exclude_early_access = 11;
optional bool exclude_videos = 12;
optional bool exclude_software = 13;
optional bool exclude_dlc = 14;
optional bool exclude_soundtracks = 15;
repeated uint32 featured_tagids = 16 [(description) = "Must be marked with one of these featured tagids (for sale pages and events)"];
}
message CStore_GetDiscoveryQueue_Request {
optional .EStoreDiscoveryQueueType queue_type = 1 [default = k_EStoreDiscoveryQueueTypeNew];
optional string country_code = 2;
optional bool rebuild_queue = 3;
optional bool settings_changed = 4;
optional .CStoreDiscoveryQueueSettings settings = 5;
optional bool rebuild_queue_if_stale = 6;
optional bool ignore_user_preferences = 8;
optional bool no_experimental_results = 9;
optional uint32 experimental_cohort = 10;
optional bool debug_get_solr_query = 11;
}
message CStore_GetDiscoveryQueue_Response {
repeated uint32 appids = 1;
optional string country_code = 2;
optional .CStoreDiscoveryQueueSettings settings = 3;
optional int32 skipped = 4;
optional bool exhausted = 5;
optional uint32 experimental_cohort = 6;
optional string debug_solr_query = 7;
}
message CStore_GetDiscoveryQueueSettings_Request {
optional .EStoreDiscoveryQueueType queue_type = 1 [default = k_EStoreDiscoveryQueueTypeNew];
}
message CStore_GetDiscoveryQueueSettings_Response {
optional string country_code = 1;
optional .CStoreDiscoveryQueueSettings settings = 2;
}
message CStore_SkipDiscoveryQueueItem_Request {
optional .EStoreDiscoveryQueueType queue_type = 1 [default = k_EStoreDiscoveryQueueTypeNew];
optional uint32 appid = 2;
}
message CStore_SkipDiscoveryQueueItem_Response {
}
message CStore_GetUserGameInterestState_Request {
optional uint32 appid = 1;
optional uint32 store_appid = 2;
optional uint32 beta_appid = 3;
}
message CStore_GetUserGameInterestState_Response {
message InQueue {
optional .EStoreDiscoveryQueueType type = 1 [default = k_EStoreDiscoveryQueueTypeNew];
optional bool skipped = 2;
optional int32 items_remaining = 3;
optional uint32 next_appid = 4;
optional uint32 experimental_cohort = 5;
}
optional bool owned = 1;
optional bool wishlist = 2;
optional bool ignored = 3;
optional bool following = 4;
repeated .EStoreDiscoveryQueueType in_queues = 5;
repeated .EStoreDiscoveryQueueType queues_with_skip = 6 [(description) = "Discovery queue types where the user has skipped this game."];
repeated int32 queue_items_remaining = 7 [(description) = "# of items remaining in the discovery queue - matches the same order as in_queues"];
repeated uint32 queue_items_next_appid = 8 [(description) = "the next appid in the queue - matches the same order as in_queues"];
optional bool temporarily_owned = 9 [(description) = "The user owns the game temporarily, eg a rental or free weekend"];
repeated .CStore_GetUserGameInterestState_Response.InQueue queues = 10;
optional int32 ignored_reason = 11 [(description) = "The ERecommendationIgnoreReason why the user ignored the app"];
optional .EPlaytestStatus beta_status = 12 [default = k_ETesterStatusNone, (description) = "User interest or membership in the playtest for this app if any"];
}
message CStore_GetStorePreferences_Request {
}
message CStore_UserPreferences {
optional int32 primary_language = 1;
optional uint32 secondary_languages = 2;
optional bool platform_windows = 3;
optional bool platform_mac = 4;
optional bool platform_linux = 5;
optional bool hide_adult_content_violence = 6;
optional bool hide_adult_content_sex = 7;
optional uint32 timestamp_updated = 8;
optional bool hide_store_broadcast = 9;
optional .EUserReviewScorePreference review_score_preference = 10 [default = k_EUserReviewScorePreference_Unset];
optional int32 timestamp_content_descriptor_preferences_updated = 11;
optional .EProvideDeckFeedbackPreference provide_deck_feedback = 12 [default = k_EProvideDeckFeedbackPreference_Unset];
}
message CStore_UserTagPreferences {
message Tag {
optional uint32 tagid = 1;
optional string name = 2;
optional uint32 timestamp_added = 3;
}
repeated .CStore_UserTagPreferences.Tag tags_to_exclude = 1;
}
message CStore_UserContentDescriptorPreferences {
message ContentDescriptor {
optional uint32 content_descriptorid = 1;
optional uint32 timestamp_added = 2;
}
repeated .CStore_UserContentDescriptorPreferences.ContentDescriptor content_descriptors_to_exclude = 1;
}
message CStore_GetStorePreferences_Response {
optional .CStore_UserPreferences preferences = 1;
optional .CStore_UserTagPreferences tag_preferences = 2;
optional .CStore_UserContentDescriptorPreferences content_descriptor_preferences = 3;
}
message CStore_GetTrendingAppsAmongFriends_Request {
optional uint32 num_apps = 1;
optional uint32 num_top_friends = 2;
}
message CStore_GetTrendingAppsAmongFriends_Response {
message TrendingAppData {
optional uint32 appid = 1;
repeated uint64 steamids_top_friends = 2;
optional uint32 total_friends = 3;
}
repeated .CStore_GetTrendingAppsAmongFriends_Response.TrendingAppData trending_apps = 1;
}
message CSteamDeckCompatibility_SetFeedback_Request {
optional uint32 appid = 1;
optional .ESteamDeckCompatibilityFeedback feedback = 2 [default = k_ESteamDeckCompatibilityFeedback_Unset];
}
message CSteamDeckCompatibility_SetFeedback_Response {
}
message CSteamDeckCompatibility_ShouldPrompt_Request {
optional uint32 appid = 1;
}
message CSteamDeckCompatibility_ShouldPrompt_Response {
optional bool prompt = 1;
optional bool feedback_eligible = 2;
optional .ESteamDeckCompatibilityFeedback existing_feedback = 3 [default = k_ESteamDeckCompatibilityFeedback_Unset];
}
message CStore_StorePreferencesChanged_Notification {
optional .CStore_UserPreferences preferences = 1;
optional .CStore_UserTagPreferences tag_preferences = 2;
optional .CStore_UserContentDescriptorPreferences content_descriptor_preferences = 3;
}
service Store {
option (service_description) = "A service to access store data.";
rpc RegisterCDKey (.CStore_RegisterCDKey_Request) returns (.CStore_RegisterCDKey_Response) {
option (method_description) = "Registers a CD key with Steam on the logged in user's account";
}
rpc GetMostPopularTags (.CStore_GetMostPopularTags_Request) returns (.CStore_GetMostPopularTags_Response) {
option (method_description) = "Get all whitelisted tags, with localized names.";
}
rpc GetLocalizedNameForTags (.CStore_GetLocalizedNameForTags_Request) returns (.CStore_GetLocalizedNameForTags_Response) {
option (method_description) = "Gets tag names in a different language";
}
rpc GetDiscoveryQueue (.CStore_GetDiscoveryQueue_Request) returns (.CStore_GetDiscoveryQueue_Response) {
option (method_description) = "Get a list of games for the user to explore on the store.";
}
rpc GetDiscoveryQueueSettings (.CStore_GetDiscoveryQueueSettings_Request) returns (.CStore_GetDiscoveryQueueSettings_Response) {
option (method_description) = "Get the settings that were used to generate a user's discovery queue.";
}
rpc SkipDiscoveryQueueItem (.CStore_SkipDiscoveryQueueItem_Request) returns (.CStore_SkipDiscoveryQueueItem_Response) {
option (method_description) = "Skip an item in the user's queue.";
}
rpc GetUserGameInterestState (.CStore_GetUserGameInterestState_Request) returns (.CStore_GetUserGameInterestState_Response) {
option (method_description) = "Get information about a user's relationship to a game - ownership, wishlist, discovery queue state, etc.";
}
rpc GetStorePreferences (.CStore_GetStorePreferences_Request) returns (.CStore_GetStorePreferences_Response) {
option (method_description) = "Returns the desired ratings board and maximum rating to show on the store";
}
rpc GetTrendingAppsAmongFriends (.CStore_GetTrendingAppsAmongFriends_Request) returns (.CStore_GetTrendingAppsAmongFriends_Response) {
option (method_description) = "Get trending apps among friends";
}
rpc SetCompatibilityFeedback (.CSteamDeckCompatibility_SetFeedback_Request) returns (.CSteamDeckCompatibility_SetFeedback_Response) {
option (method_description) = "Upserts user feedback regarding the published Steam Deck Compatibility rating for a game";
}
rpc ShouldPromptForCompatibilityFeedback (.CSteamDeckCompatibility_ShouldPrompt_Request) returns (.CSteamDeckCompatibility_ShouldPrompt_Response) {
option (method_description) = "Returns whether we should ask the user if the compatibility rating is correct";
}
}
service StoreClient {
option (service_description) = "Steam store to client notifications";
option (service_execution_site) = k_EProtoExecutionSiteSteamClient;
rpc NotifyStorePreferencesChanged (.CStore_StorePreferencesChanged_Notification) returns (.NoResponse) {
option (method_description) = "Notification from server to client that the user's store preferences have changed";
}
}