diff --git a/.github/workflows/javasteam-build-push.yml b/.github/workflows/javasteam-build-push.yml index 74121a020..11d6c56fc 100644 --- a/.github/workflows/javasteam-build-push.yml +++ b/.github/workflows/javasteam-build-push.yml @@ -47,6 +47,10 @@ jobs: with: name: javasteam-deadlock path: javasteam-deadlock/build/libs + - uses: actions/upload-artifact@v4 + with: + name: javasteam-dota2 + path: javasteam-dota2/build/libs - uses: actions/upload-artifact@v4 with: name: javasteam-tf @@ -55,3 +59,7 @@ jobs: with: name: javasteam-depotdownloader path: javasteam-depotdownloader/build/libs + - uses: actions/upload-artifact@v4 + with: + name: javasteam-protobufs-webui + path: javasteam-protobufs-webui/build/libs diff --git a/build.gradle.kts b/build.gradle.kts index 24cfb08b2..62bd125ed 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -112,6 +112,7 @@ tasks.jar { manifest { attributes["Automatic-Module-Name"] = "in.dragonbra.javasteam" } + exclude("**/*.proto") } /* Tasks */ diff --git a/buildSrc/src/main/kotlin/in/dragonbra/generators/rpc/parser/ProtoParser.kt b/buildSrc/src/main/kotlin/in/dragonbra/generators/rpc/parser/ProtoParser.kt index 371a0cfde..d3dc4c9c0 100644 --- a/buildSrc/src/main/kotlin/in/dragonbra/generators/rpc/parser/ProtoParser.kt +++ b/buildSrc/src/main/kotlin/in/dragonbra/generators/rpc/parser/ProtoParser.kt @@ -10,6 +10,7 @@ class ProtoParser(private val outputDir: File) { private companion object { private const val RPC_PACKAGE = "in.dragonbra.javasteam.rpc" private const val SERVICE_PACKAGE = "${RPC_PACKAGE}.service" + private const val WEBUI_SERVICE_PACKAGE = "${SERVICE_PACKAGE}.webui" private val suppressAnnotation = AnnotationSpec .builder(Suppress::class) @@ -249,7 +250,10 @@ class ProtoParser(private val outputDir: File) { } // Build everything together and write it - FileSpec.builder(SERVICE_PACKAGE, service.name) + // Services from .proto files under "webui" go to their own sub-package to + // avoid clashing with same-named steamclient services (e.g. Store). + val servicePackage = if (parentPathName == "webui") WEBUI_SERVICE_PACKAGE else SERVICE_PACKAGE + FileSpec.builder(servicePackage, service.name) .addType(cBuilder.build()) .build() .writeTo(outputDir) diff --git a/javasteam-cs/build.gradle.kts b/javasteam-cs/build.gradle.kts index e2d854d4b..38ecd6537 100644 --- a/javasteam-cs/build.gradle.kts +++ b/javasteam-cs/build.gradle.kts @@ -26,6 +26,11 @@ tasks.javadoc { exclude("**/in/dragonbra/javasteam/protobufs/**") } +/* Jar */ +tasks.jar { + exclude("**/*.proto") +} + dependencies { implementation(libs.protobuf.java) } diff --git a/javasteam-deadlock/build.gradle.kts b/javasteam-deadlock/build.gradle.kts index ef5685131..514e7e38e 100644 --- a/javasteam-deadlock/build.gradle.kts +++ b/javasteam-deadlock/build.gradle.kts @@ -26,6 +26,11 @@ tasks.javadoc { exclude("**/in/dragonbra/javasteam/protobufs/**") } +/* Jar */ +tasks.jar { + exclude("**/*.proto") +} + dependencies { implementation(libs.protobuf.java) } diff --git a/javasteam-dota2/build.gradle.kts b/javasteam-dota2/build.gradle.kts index 46964b291..9605fbfb5 100644 --- a/javasteam-dota2/build.gradle.kts +++ b/javasteam-dota2/build.gradle.kts @@ -26,6 +26,11 @@ tasks.javadoc { exclude("**/in/dragonbra/javasteam/protobufs/**") } +/* Jar */ +tasks.jar { + exclude("**/*.proto") +} + dependencies { implementation(libs.protobuf.java) } diff --git a/javasteam-protobufs-webui/.gitignore b/javasteam-protobufs-webui/.gitignore new file mode 100644 index 000000000..d16386367 --- /dev/null +++ b/javasteam-protobufs-webui/.gitignore @@ -0,0 +1 @@ +build/ \ No newline at end of file diff --git a/javasteam-protobufs-webui/build.gradle.kts b/javasteam-protobufs-webui/build.gradle.kts new file mode 100644 index 000000000..da44b6ef0 --- /dev/null +++ b/javasteam-protobufs-webui/build.gradle.kts @@ -0,0 +1,142 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jmailen.gradle.kotlinter.tasks.FormatTask +import org.jmailen.gradle.kotlinter.tasks.LintTask + +plugins { + alias(libs.plugins.kotlin.dokka) + alias(libs.plugins.kotlin.jvm) + alias(libs.plugins.kotlin.kotlinter) + alias(libs.plugins.protobuf.gradle) + id("maven-publish") + id("signing") + rpcinterfacegen +} + +repositories { + mavenCentral() +} + +java { + sourceCompatibility = JavaVersion.toVersion(libs.versions.java.get()) + targetCompatibility = JavaVersion.toVersion(libs.versions.java.get()) + withSourcesJar() +} + +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.fromTarget(libs.versions.java.get())) + } +} + +/* Protobufs */ +protobuf.protoc { + artifact = libs.protobuf.protoc.get().toString() +} + +/* Source Sets */ +sourceSets.main { + java.srcDirs( + // builtBy() fixes gradle warning "Execution optimizations have been disabled for task" + files("build/generated/source/javasteam/main/java").builtBy("generateRpcMethods") + ) +} + +/* Tasks */ +tasks["compileJava"].dependsOn("generateRpcMethods") +tasks["compileKotlin"].dependsOn("generateRpcMethods") +tasks["generateRpcMethods"].dependsOn("extractProto", "extractIncludeProto") + +/* Testing */ +tasks.test { + useJUnitPlatform() +} + +/* Java-Kotlin Docs */ +dokka { + moduleName.set("JavaSteam") + dokkaSourceSets.main { + suppressGeneratedFiles.set(false) // Allow generated files to be documented. + perPackageOption { + // Deny most of the generated files. + matchingRegex.set("in.dragonbra.javasteam.(protobufs|enums|generated).*") + suppress.set(true) + } + } +} + +// Make sure Maven Publishing gets javadoc +val javadocJar by tasks.registering(Jar::class) { + dependsOn(tasks.dokkaGenerate) + archiveClassifier.set("javadoc") + from(layout.buildDirectory.dir("dokka/html")) +} +artifacts { + archives(javadocJar) +} + +/* Kotlinter */ +tasks.withType { + val generatedFile = "${File.separator}build${File.separator}generated" + exclude { it.file.path.contains(generatedFile) } +} + +tasks.withType { + val generatedFile = "${File.separator}build${File.separator}generated" + exclude { it.file.path.contains(generatedFile) } +} + +/* Jar */ +tasks.jar { + exclude("**/*.proto") +} + +dependencies { + api(rootProject) + + implementation(libs.kotlin.coroutines) + implementation(libs.kotlin.stdib) + implementation(libs.protobuf.java) + + testImplementation(platform(libs.tests.junit.bom)) + testImplementation(libs.tests.junit.jupiter) + testRuntimeOnly(libs.tests.junit.platform) +} + +/* Artifact publishing */ +publishing { + publications { + create("mavenJava") { + from(components["java"]) + artifact(javadocJar) + pom { + name = "JavaSteam-protobufs-webui" + packaging = "jar" + description = "Webui protobuf classes and services for JavaSteam." + url = "https://github.com/Longi94/JavaSteam" + inceptionYear = "2026" + scm { + connection = "scm:git:git://github.com/Longi94/JavaSteam.git" + developerConnection = "scm:git:ssh://github.com:Longi94/JavaSteam.git" + url = "https://github.com/Longi94/JavaSteam/tree/master" + } + licenses { + license { + name = "MIT License" + url = "https://www.opensource.org/licenses/mit-license.php" + } + } + developers { + developer { + id = "Longi" + name = "Long Tran" + email = "lngtrn94@gmail.com" + } + } + } + } + } +} + +signing { + sign(publishing.publications["mavenJava"]) +} diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/AllClientLogonInfo.kt b/javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/AllClientLogonInfo.kt similarity index 100% rename from src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/AllClientLogonInfo.kt rename to javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/AllClientLogonInfo.kt diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/AllClientLogonInfoSession.kt b/javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/AllClientLogonInfoSession.kt similarity index 100% rename from src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/AllClientLogonInfoSession.kt rename to javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/AllClientLogonInfoSession.kt diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppList.kt b/javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppList.kt similarity index 100% rename from src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppList.kt rename to javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppList.kt diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppListAppData.kt b/javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppListAppData.kt similarity index 100% rename from src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppListAppData.kt rename to javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppListAppData.kt diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppListDlcData.kt b/javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppListDlcData.kt similarity index 100% rename from src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppListDlcData.kt rename to javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientAppListDlcData.kt diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientInfo.kt b/javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientInfo.kt similarity index 100% rename from src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientInfo.kt rename to javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientInfo.kt diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientLogonInfo.kt b/javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientLogonInfo.kt similarity index 100% rename from src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientLogonInfo.kt rename to javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/ClientLogonInfo.kt diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/InstalledAppsFilter.kt b/javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/InstalledAppsFilter.kt similarity index 100% rename from src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/InstalledAppsFilter.kt rename to javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/InstalledAppsFilter.kt diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/RunningGames.kt b/javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/RunningGames.kt similarity index 100% rename from src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/RunningGames.kt rename to javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/RunningGames.kt diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/SteamClientCommunication.kt b/javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/SteamClientCommunication.kt similarity index 99% rename from src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/SteamClientCommunication.kt rename to javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/SteamClientCommunication.kt index deb5c795e..61f1d7a2f 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/SteamClientCommunication.kt +++ b/javasteam-protobufs-webui/src/main/java/in/dragonbra/javasteam/steam/handlers/steamclientcommunication/SteamClientCommunication.kt @@ -14,12 +14,13 @@ import `in`.dragonbra.javasteam.protobufs.webui.ServiceClientcomm.CClientComm_In import `in`.dragonbra.javasteam.protobufs.webui.ServiceClientcomm.CClientComm_LaunchClientApp_Request import `in`.dragonbra.javasteam.protobufs.webui.ServiceClientcomm.CClientComm_SetClientAppUpdateState_Request import `in`.dragonbra.javasteam.protobufs.webui.ServiceClientcomm.CClientComm_UninstallClientApp_Request -import `in`.dragonbra.javasteam.rpc.service.ClientComm +import `in`.dragonbra.javasteam.rpc.service.webui.ClientComm import `in`.dragonbra.javasteam.steam.handlers.ClientMsgHandler import `in`.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages import `in`.dragonbra.javasteam.util.JavaSteamAddition import kotlinx.coroutines.Deferred import kotlinx.coroutines.async +import kotlin.getValue /** * Allows controlling of other running Steam clients. diff --git a/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/common.proto b/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/common.proto new file mode 100644 index 000000000..f9472ef23 --- /dev/null +++ b/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/common.proto @@ -0,0 +1,4056 @@ +import "in/dragonbra/javasteam/protobufs/webui/common_base.proto"; + +package webui; + +option java_package = "in.dragonbra.javasteam.protobufs.webui"; + +option optimize_for = SPEED; +option java_generic_services = false; + +message AssetPropertyFilter { + optional uint32 property_id = 1; + optional float float_min = 2; + optional float float_max = 3; + optional int64 int_min = 4; + optional int64 int_max = 5; +} + +// Used by: common.proto +message CAppOverview { + optional uint32 appid = 1; + optional string display_name = 2; + optional bool visible_in_game_list = 4; + optional bool subscribed_to = 5; + optional string sort_as = 6; + optional int32 app_type = 7 [(webui.description) = "enum"]; + optional uint32 mru_index = 13; + optional uint32 rt_recent_activity_time = 14 [default = 0]; + optional uint32 minutes_playtime_forever = 16 [default = 0]; + optional uint32 minutes_playtime_last_two_weeks = 17 [default = 0]; + optional uint32 rt_last_time_played = 18 [default = 0]; + repeated uint32 store_tag = 19; + repeated uint32 store_category = 23; + optional uint32 rt_original_release_date = 25 [default = 0]; + optional uint32 rt_steam_release_date = 26 [default = 0]; + optional string icon_hash = 27; + optional int32 xbox_controller_support = 31 [(webui.description) = "enum"]; + optional bool vr_supported = 32; + optional uint32 metacritic_score = 36; + optional uint64 size_on_disk = 37; + optional bool third_party_mod = 38; + optional string icon_data = 39; + optional string icon_data_format = 40; + optional string gameid = 41; + optional string library_capsule_filename = 42; + repeated CAppOverview_PerClientData per_client_data = 43; + optional uint64 most_available_clientid = 44 [default = 0]; + optional uint64 selected_clientid = 45 [default = 0]; + optional uint32 rt_store_asset_mtime = 46; + optional uint32 rt_custom_image_mtime = 47; + optional uint32 optional_parent_app_id = 48; + optional uint32 owner_account_id = 49; + optional uint32 review_score_with_bombs = 53 [default = 0]; + optional uint32 review_percentage_with_bombs = 54 [default = 0]; + optional uint32 review_score_without_bombs = 55 [default = 0]; + optional uint32 review_percentage_without_bombs = 56 [default = 0]; + optional string library_id = 57; + optional bool vr_only = 58; + optional uint32 mastersub_appid = 59; + optional string mastersub_includedwith_logo = 60; + optional string site_license_site_name = 62; + optional uint32 shortcut_override_appid = 63; + optional uint32 rt_last_time_locally_played = 65; + optional uint32 rt_purchased_time = 66; + optional string header_filename = 67; + optional uint32 local_cache_version = 68; + optional uint32 number_of_copies = 72 [default = 1]; + optional uint32 steam_hw_compat_category_packed = 73 [default = 0]; + optional string album_cover_hash = 74; + optional int32 display_name_elanguage = 75 [default = -1]; + optional bool has_custom_sort_as = 76; + optional uint64 bitfield_supported_languages = 77 [default = 0]; + repeated CAppOverview_PerClientData remote_per_client_data = 78; +} + +message CAppOverview_Change { + repeated CAppOverview app_overview = 1; + repeated uint32 removed_appid = 2; + optional bool full_update = 3; + optional bool update_complete = 4; +} + +// Used by: common.proto +message CAppOverview_PerClientData { + optional uint64 clientid = 1 [default = 0]; + optional string client_name = 2; + optional int32 display_status = 3 [(webui.description) = "enum"]; + optional uint32 status_percentage = 4; + optional string active_beta = 5; + optional bool installed = 6; + optional bool streaming_to_local_client = 9; + optional bool is_available_on_current_platform = 10; + optional bool is_invalid_os_type = 11; + optional uint32 playtime_left = 12; + optional bool update_available_but_disabled_by_app = 14; +} + +// Used by: AccountCart, Checkout +message CartAmount { + optional int64 amount_in_cents = 1; + optional int32 currency_code = 2; + optional string formatted_amount = 3; +} + +// Used by: AccountCart, Checkout +message CartCoupon { + optional uint32 couponid = 1; + optional uint64 gidcoupon = 2; + optional string title = 5; + optional string coupon_description = 6; + optional string large_icon_url = 7; + optional int32 discount_pct = 8; +} + +// Used by: AccountCart, Checkout +message CartGiftInfo { + optional int32 accountid_giftee = 1; + optional CartGiftMessage gift_message = 2; + optional int32 time_scheduled_send = 3; + optional string email_giftee = 4; +} + +// Used by: AccountCart, Checkout +message CartGiftMessage { + optional string gifteename = 1; + optional string message = 2; + optional string sentiment = 3; + optional string signature = 4; +} + +// Used by: ChatRoom, ChatRoomClient, ClanChatRooms +message CChatPartyBeacon { + optional uint32 app_id = 1; + optional fixed64 steamid_owner = 2; + optional fixed64 beacon_id = 3; + optional string game_metadata = 4; +} + +// Used by: ChatRoom, ChatRoomClient, ClanChatRooms +message CChatRoleActions { + optional uint64 role_id = 1; + optional bool can_create_rename_delete_channel = 2; + optional bool can_kick = 3; + optional bool can_ban = 4; + optional bool can_invite = 5; + optional bool can_change_tagline_avatar_name = 6; + optional bool can_chat = 7; + optional bool can_view_history = 8; + optional bool can_change_group_roles = 9; + optional bool can_change_user_roles = 10; + optional bool can_mention_all = 11; + optional bool can_set_watching_broadcast = 12; +} + +// Used by: ChatRoom, ChatRoomClient, ClanChatRooms +message CChatRoom_GetChatRoomGroupSummary_Response { + optional uint64 chat_group_id = 1; + optional string chat_group_name = 2; + optional uint32 active_member_count = 3; + optional uint32 active_voice_member_count = 4; + optional uint64 default_chat_id = 5; + repeated CChatRoomState chat_rooms = 6; + optional uint32 clanid = 7; + optional string chat_group_tagline = 8; + optional uint32 accountid_owner = 9; + repeated uint32 top_members = 10; + optional bytes chat_group_avatar_sha = 11; + optional int32 rank = 12 [(webui.description) = "enum"]; + optional uint64 default_role_id = 13; + repeated uint64 role_ids = 14; + repeated CChatRoleActions role_actions = 15; + optional uint32 watching_broadcast_accountid = 16; + optional uint32 appid = 17; + repeated CChatPartyBeacon party_beacons = 18; + optional uint64 watching_broadcast_channel_id = 19; + optional uint64 active_minigame_id = 20; + optional string avatar_ugc_url = 21; + optional bool disabled = 22; +} + +// Used by: ChatRoom, ChatRoomClient, ClanChatRooms +message CChatRoomState { + optional uint64 chat_id = 1; + optional string chat_name = 2; + optional bool voice_allowed = 3; + repeated uint32 members_in_voice = 4; + optional uint32 time_last_message = 5; + optional uint32 sort_order = 6; + optional string last_message = 7; + optional uint32 accountid_last_message = 8; +} + +// Used by: common.proto +message CClientMetrics_AppInterfaceCreation { + optional string raw_version = 1; + optional string requested_interface_type = 2; +} + +// Used by: common.proto +message CClientMetrics_AppInterfaceMethodCounts { + optional string interface_name = 1; + optional string method_name = 2; + optional uint32 call_count = 3; +} + +message CClientMetrics_AppInterfaceStats_Notification { + optional uint64 game_id = 1; + repeated CClientMetrics_AppInterfaceCreation interfaces_created = 2; + repeated CClientMetrics_AppInterfaceMethodCounts methods_called = 3; + optional uint32 session_length_seconds = 4; +} + +message CClientMetrics_ClientBootstrap_Notification { + optional CClientMetrics_ClientBootstrap_Summary summary = 1; +} + +// Used by: common.proto +message CClientMetrics_ClientBootstrap_RequestInfo { + optional string original_hostname = 1; + optional string actual_hostname = 2; + optional string path = 3; + optional string base_name = 4; + optional bool success = 5; + optional uint32 status_code = 6; + optional string address_of_request_url = 7; + optional uint32 response_time_ms = 8; + optional uint64 bytes_received = 9; + optional uint32 num_retries = 10; +} + +// Used by: common.proto +message CClientMetrics_ClientBootstrap_Summary { + optional uint32 launcher_type = 1; + optional uint32 steam_realm = 2; + optional string beta_name = 3; + optional bool download_completed = 4; + optional uint32 total_time_ms = 6; + repeated CClientMetrics_ClientBootstrap_RequestInfo manifest_requests = 7; + repeated CClientMetrics_ClientBootstrap_RequestInfo package_requests = 8; +} + +message CClientMetrics_ClipRange_Notification { + optional int32 original_range_method = 1 [(webui.description) = "enum"]; + optional CClientMetrics_ClipRange_Notification_RelativeRangeEdge start = 2; + optional CClientMetrics_ClipRange_Notification_RelativeRangeEdge end = 3; + optional float seconds = 4; + optional fixed64 gameid = 5; +} + +// Used by: common.proto +message CClientMetrics_ClipRange_Notification_RelativeRangeEdge { + optional int32 original_range_method = 1 [(webui.description) = "enum"]; + optional int32 latest_range_method = 2 [(webui.description) = "enum"]; + optional int32 delta_ms = 3; +} + +message CClientMetrics_ClipShare_Notification { + optional uint32 eresult = 1 [default = 2]; + optional int32 share_method = 2 [(webui.description) = "enum"]; + optional float seconds = 3; + optional uint64 bytes = 4; + optional fixed64 gameid = 5; +} + +message CClientMetrics_CloudAppSyncStats_Notification { + optional uint32 app_id = 1; + optional uint32 platform_type = 2; + optional bool preload = 3; + optional bool blocking_app_launch = 4; + optional uint32 files_uploaded = 5; + optional uint32 files_downloaded = 6; + optional uint32 files_deleted = 7; + optional uint64 bytes_uploaded = 8; + optional uint64 bytes_downloaded = 9; + optional uint64 microsec_total = 10; + optional uint64 microsec_init_caches = 11; + optional uint64 microsec_validate_state = 12; + optional uint64 microsec_ac_launch = 13; + optional uint64 microsec_ac_prep_user_files = 14; + optional uint64 microsec_ac_exit = 15; + optional uint64 microsec_build_sync_list = 16; + optional uint64 microsec_delete_files = 17; + optional uint64 microsec_download_files = 18; + optional uint64 microsec_upload_files = 19; + optional uint32 hardware_type = 20; + optional uint32 files_managed = 21; +} + +// Used by: common.proto +message CClientMetrics_ContentDownloadResponse_Counts { + optional uint32 class_100 = 1; + optional uint32 class_200 = 2; + optional uint32 class_300 = 3; + optional uint32 class_400 = 4; + optional uint32 class_500 = 5; + optional uint32 no_response = 6; + optional uint32 class_unknown = 7; +} + +message CClientMetrics_ContentDownloadResponse_Counts_Notification { + optional uint32 cell_id = 1; + optional CClientMetrics_ContentDownloadResponse_Hosts data = 2; +} + +// Used by: common.proto +message CClientMetrics_ContentDownloadResponse_HostCounts { + optional string hostname = 1; + optional uint32 source_type = 2; + optional CClientMetrics_ContentDownloadResponse_Counts counts = 3; +} + +// Used by: common.proto +message CClientMetrics_ContentDownloadResponse_Hosts { + repeated CClientMetrics_ContentDownloadResponse_HostCounts hosts = 1; +} + +message CClientMetrics_ContentValidation_Notification { + optional int32 validation_result = 1; + optional uint32 app_id = 2; + optional bool staged_files = 3; + optional bool user_initiated = 4; + optional bool early_out = 5; + optional uint32 chunks_scanned = 6; + optional uint32 chunks_corrupt = 7; + optional uint64 bytes_scanned = 8; + optional uint64 chunk_bytes_corrupt = 9; + optional uint64 total_file_size_corrupt = 10; +} + +message CClientMetrics_DownloadRates_Notification { + optional uint32 cell_id = 1; + repeated CClientMetrics_DownloadRates_Notification_StatsInfo stats = 2; + optional uint32 throttling_kbps = 3; + optional uint32 os_type = 4; + optional uint32 device_type = 5; +} + +// Used by: common.proto +message CClientMetrics_DownloadRates_Notification_StatsInfo { + optional uint32 source_type = 1; + optional uint32 source_id = 2; + optional uint64 bytes = 3; + optional string host_name = 4; + optional uint64 microseconds = 5; + optional bool used_ipv6 = 6; + optional bool proxied = 7; + optional bool used_http2 = 8; + optional uint32 cache_hits = 9; + optional uint32 cache_misses = 10; + optional uint64 hit_bytes = 11; + optional uint64 miss_bytes = 12; + optional uint32 chunks_scored = 13; + optional double sum_chunk_scores = 14; +} + +message CClientMetrics_EndGameRecording_Notification { + optional int32 recording_type = 1 [(webui.description) = "enum"]; + optional float seconds = 2; + optional uint64 bytes = 3; + optional fixed64 gameid = 4; + optional bool instant_clip = 5; +} + +message CClientMetrics_GamePerformance_Notification { + repeated CClientMetrics_GamePerformance_Notification_FrameRate frame_rates = 2; + optional UserSystemInformation system_info = 3; +} + +// Used by: common.proto +message CClientMetrics_GamePerformance_Notification_FrameRate { + optional fixed64 gameid = 1; + optional uint32 frame_rate = 2; + optional int32 session_seconds = 3; + optional uint32 framegen_frame_rate = 4; + optional GamePerformanceSettings game_settings = 5; +} + +message CClientMetrics_IPv6Connectivity_Notification { + optional uint32 cell_id = 1; + repeated CClientMetrics_IPv6Connectivity_Result results = 2; + optional bool private_ip_is_rfc6598 = 3; +} + +// Used by: common.proto +message CClientMetrics_IPv6Connectivity_Result { + optional uint32 protocol_tested = 1; + optional uint32 connectivity_state = 2; +} + +message CClientMetrics_SteamPipeWorkStats_Notification { + optional uint32 appid = 1; + optional uint32 depotid = 2; + optional int32 work_type = 3 [(webui.description) = "enum"]; + repeated CClientMetrics_SteamPipeWorkStats_Operation operations = 4; + optional uint32 hardware_type = 5; +} + +// Used by: common.proto +message CClientMetrics_SteamPipeWorkStats_Operation { + optional int32 type = 1 [(webui.description) = "enum"]; + optional uint32 num_ops = 2; + optional uint64 num_bytes = 3; + optional uint64 busy_time_ms = 4; + optional uint64 idle_time_ms = 5; + optional uint64 sum_run_time_ms = 6; + optional uint64 sum_wait_time_ms = 7; +} + +message CClientNotificationAchievement { + optional string achievement_id = 1; + optional uint32 appid = 2; + optional string name = 3; + optional string description = 4; + optional string image_url = 5; + optional bool achieved = 6; + optional uint32 rtime_unlocked = 7; + optional float min_progress = 8; + optional float current_progress = 9; + optional float max_progress = 10; + optional float global_achieved_pct = 11; +} + +message CClientNotificationBatteryTemperature { + optional uint32 temperature = 1; + optional string notification_type = 2; +} + +message CClientNotificationBroadcastAvailableToWatch { + optional int32 broadcast_permission = 1; +} + +message CClientNotificationCannotReadControllerGuideButton { + optional int32 controller_index = 1; +} + +message CClientNotificationClaimSteamDeckRewards { +} + +message CClientNotificationCloudSyncConflict { + optional uint32 appid = 1; +} + +message CClientNotificationCloudSyncFailure { + optional uint32 appid = 1; +} + +message CClientNotificationControllerConnected { + optional uint32 controller_index = 1; +} + +message CClientNotificationControllerDisconnected { + optional uint32 controller_type = 1; + optional string controller_name = 2; +} + +message CClientNotificationControllerLowBattery { + optional uint32 controller_type = 1; + optional float pct_remaining = 2; +} + +message CClientNotificationDockUnsupportedFirmware { +} + +message CClientNotificationDownloadCompleted { + optional uint32 appid = 1; + optional uint32 dlc_appid = 2; +} + +message CClientNotificationFamilySharingStopPlaying { + optional uint32 accountid_owner = 1; + optional uint32 seconds_remaining = 2; + optional uint32 appid = 3; +} + +message CClientNotificationFriendInGame { + optional fixed64 steamid = 1; + optional string game_name = 2; +} + +message CClientNotificationFriendInviteRollup { + optional uint32 new_invite_count = 1; +} + +message CClientNotificationFriendMessage { + optional string tag = 1; + optional string steamid = 2; + optional string title = 3; + optional string body = 4; + optional string icon = 5; + optional uint32 notificationid = 6; + optional string response_steamurl = 7; +} + +message CClientNotificationFriendOnline { + optional fixed64 steamid = 1; +} + +message CClientNotificationGameRecordingError { + optional fixed64 game_id = 1; + optional int32 error_type = 2 [(webui.description) = "enum"]; +} + +message CClientNotificationGameRecordingInstantClip { + optional fixed64 game_id = 1; + optional string clip_id = 2; + optional float duration_secs = 3; +} + +message CClientNotificationGameRecordingStart { + optional fixed64 game_id = 1; +} + +message CClientNotificationGameRecordingStop { + optional fixed64 game_id = 1; + optional string clip_id = 2; + optional float duration_secs = 3; +} + +message CClientNotificationGameRecordingUserMarkerAdded { + optional fixed64 game_id = 1; +} + +message CClientNotificationGroupChatMessage { + optional string tag = 1; + optional string steamid_sender = 2; + optional string chat_group_id = 3; + optional string chat_id = 4; + optional string title = 5; + optional string body = 6; + optional string rawbody = 7; + optional string icon = 8; + optional uint32 notificationid = 9; +} + +message CClientNotificationHardwareSurveyPending { +} + +message CClientNotificationHardwareUpdateAvailable { + repeated uint32 etype = 1; +} + +message CClientNotificationIncomingVoiceChat { + optional fixed64 steamid = 1; +} + +message CClientNotificationItemAnnouncement { + optional uint32 new_item_count = 1; + optional bool new_backpack_items = 2; +} + +message CClientNotificationLoginRefresh { +} + +message CClientNotificationLowBattery { + optional float pct_remaining = 1; +} + +message CClientNotificationLowDiskSpace { + optional uint32 folder_index = 1; +} + +message CClientNotificationOverlaySplashScreen { +} + +message CClientNotificationPlaytimeWarning { + optional string type = 1; + optional uint32 playtime_remaining = 2; +} + +message CClientNotificationRemoteClientConnection { + optional string machine = 1; + optional bool connected = 2; +} + +message CClientNotificationRemoteClientStartStream { + optional string machine = 1; + optional string game_name = 2; +} + +message CClientNotificationScreenshot { + optional string screenshot_handle = 1; + optional string description = 2; + optional string local_url = 3; +} + +message CClientNotificationSteamInputActionSetChanged { + optional int32 controller_index = 1; + optional string action_set_name = 2; +} + +message CClientNotificationStreamingClientConnection { + optional string hostname = 1; + optional string machine = 2; + optional uint32 guest_id = 3; + optional bool connected = 4; +} + +message CClientNotificationSystemUpdate { + optional int32 type = 1 [(webui.description) = "enum"]; +} + +message CClientNotificationTimedTrialRemaining { + optional uint32 appid = 1; + optional string icon = 2; + optional bool offline = 3; + optional uint32 allowed_seconds = 4; + optional uint32 played_seconds = 5; +} + +message CClientNotificationTimerExpired { +} + +message CCloud_AppExitSyncDone_Notification { + optional uint32 appid = 1; + optional uint64 client_id = 2; + optional bool uploads_completed = 3; + optional bool uploads_required = 4; +} + +// Used by: Cloud, common.proto +message CCloud_PendingRemoteOperation { + optional int32 operation = 1 [(webui.description) = "enum"]; + optional string machine_name = 2; + optional uint64 client_id = 3; + optional uint32 time_last_updated = 4; + optional int32 os_type = 5; + optional int32 device_type = 6; +} + +message CContentServerConfig_AnonymousDepots_Notification { + repeated uint32 anon_session_allowed_depots = 2; +} + +message CContentServerConfig_CMStats_Notification { + repeated CContentServerConfig_CMStats_Notification_Stats stats = 1; +} + +// Used by: common.proto +message CContentServerConfig_CMStats_Notification_Stats { + optional uint32 sysid_cm = 1; + optional uint32 current_load = 2; + optional uint32 rtime_last_updated = 3; +} + +message CContentServerConfig_ContentServerStats_Notification { + repeated CContentServerConfig_ContentServerStats_Notification_Stats stats = 1; + repeated CContentServerConfig_ContentServerStats_Notification_CDNStats cdn_stats = 2; + repeated CContentServerConfig_ContentServerStats_Notification_SteamCacheStats steamcache_stats = 3; +} + +// Used by: common.proto +message CContentServerConfig_ContentServerStats_Notification_CDNStats { + optional string cdn_name = 1; + optional int32 current_load = 2; + optional uint32 rtime_last_updated = 3; +} + +// Used by: common.proto +message CContentServerConfig_ContentServerStats_Notification_Stats { + optional uint32 cs_id = 1; + optional uint32 current_load = 2; + optional uint32 rtime_last_updated = 3; +} + +// Used by: common.proto +message CContentServerConfig_ContentServerStats_Notification_SteamCacheStats { + optional uint32 cache_id = 1; + optional uint32 current_load = 2; + optional uint32 rtime_last_updated = 3; + optional uint32 load_adjustment = 4; +} + +// Used by: ContentServerConfig, common.proto +message CContentServerConfig_OpenCacheConfig { + optional uint32 cache_id = 1; + optional bool is_enabled = 2; + optional string host_name = 3; + optional string provider = 4; + optional uint32 cell_id = 5; + optional string config_json = 6; + optional string name = 7; + optional string ip_filter_list = 8; +} + +message CContentServerConfig_OpenCacheConfigUpdate_Notification { + optional CContentServerConfig_OpenCacheConfig config = 1; +} + +// Used by: ContentServerConfig, common.proto +message CContentServerConfig_SteamCacheConfig { + optional uint32 cache_id = 1; + optional bool is_enabled = 2; + optional string host_name = 3; + optional string provider = 4; + optional uint32 cell_id = 5; + optional string api_key_primary = 6; + optional string api_key_secondary = 7; + optional string config_json = 8; + optional string name = 9; + optional string ip_filter_list = 10; + optional uint32 timestamp = 11; +} + +message CContentServerConfig_SteamCacheConfigUpdate_Notification { + optional CContentServerConfig_SteamCacheConfig config = 1; +} + +// Used by: ContentServerConfig, common.proto +message CContentServerConfig_SteamCSConfig { + optional uint32 cs_id = 1; + optional bool is_enabled = 2; + optional string host_name = 3; + optional string provider = 4; + optional uint32 cell_id = 5; + optional string config_json = 8; + optional string name = 9; + optional string ip_filter_list = 10; +} + +message CContentServerConfig_SteamCSConfigUpdate_Notification { + optional CContentServerConfig_SteamCSConfig config = 1; +} + +message CGameNetworkingUI_AppSummary { + optional uint32 appid = 1; + optional bool ip_was_shared_with_friend = 10; + optional bool ip_was_shared_with_nonfriend = 11; + optional uint32 active_connections = 20; + optional CGameNetworkingUI_ConnectionSummary main_cxn = 30; +} + +message CGameNetworkingUI_ConnectionState { + optional string connection_key = 1; + optional uint32 appid = 2; + optional fixed32 connection_id_local = 3; + optional string identity_local = 4; + optional string identity_remote = 5; + optional uint32 connection_state = 10; + optional uint32 start_time = 12; + optional uint32 close_time = 13; + optional uint32 close_reason = 14; + optional string close_message = 15; + optional string status_loc_token = 16; + optional uint32 transport_kind = 20; + optional string sdrpopid_local = 21; + optional string sdrpopid_remote = 22; + optional string address_remote = 23; + optional CMsgSteamDatagramP2PRoutingSummary p2p_routing = 24; + optional uint32 ping_interior = 25; + optional uint32 ping_remote_front = 26; + optional uint32 ping_default_internet_route = 27; + optional CMsgSteamDatagramConnectionQuality e2e_quality_local = 30; + optional CMsgSteamDatagramConnectionQuality e2e_quality_remote = 31; + optional uint64 e2e_quality_remote_instantaneous_time = 32; + optional uint64 e2e_quality_remote_lifetime_time = 33; + optional CMsgSteamDatagramConnectionQuality front_quality_local = 40; + optional CMsgSteamDatagramConnectionQuality front_quality_remote = 41; + optional uint64 front_quality_remote_instantaneous_time = 42; + optional uint64 front_quality_remote_lifetime_time = 43; +} + +// Used by: common.proto +message CGameNetworkingUI_ConnectionSummary { + optional uint32 transport_kind = 1; + optional string sdrpop_local = 2; + optional string sdrpop_remote = 3; + optional uint32 ping_ms = 4; + optional float packet_loss = 5; + optional uint32 ping_default_internet_route = 6; + optional bool ip_was_shared = 7; + optional uint32 connection_state = 8; +} + +message CGameRecording_AudioSessionsChanged_Notification { + repeated CGameRecording_AudioSessionsChanged_Notification_Session sessions = 1; +} + +// Used by: common.proto +message CGameRecording_AudioSessionsChanged_Notification_Session { + optional string id = 1; + optional string name = 2; + optional bool is_system = 3; + optional bool is_muted = 4; + optional bool is_active = 5; + optional bool is_captured = 6; + optional float recent_peak = 7; + optional bool is_game = 8; + optional bool is_steam = 9; + optional bool is_saved = 10; +} + +message CMDSAdmin_DepotIngestChunkStorageFailure_Notification { + optional uint32 appid = 1; + optional uint32 depot_id = 2; + optional fixed64 build_handle = 3; + optional bytes sha = 4; +} + +message CMsgAchievementChange { + optional uint32 appid = 1; +} + +message CMsgAuthTicket { + optional uint32 estate = 1; + optional uint32 eresult = 2 [default = 2]; + optional fixed64 steamid = 3; + optional fixed64 gameid = 4; + optional uint32 h_steam_pipe = 5; + optional uint32 ticket_crc = 6; + optional bytes ticket = 7; + optional bytes server_secret = 8; + optional uint32 ticket_type = 9; +} + +message CMsgBadgeCraftedNotification { + optional uint32 appid = 1; + optional uint32 badge_level = 2; +} + +message CMsgClientAccountInfo { + optional string persona_name = 1; + optional string ip_country = 2; + optional int32 count_authed_computers = 5; + optional uint32 account_flags = 7; + optional string steamguard_machine_name_user_chosen = 15; + optional bool is_phone_verified = 16; + optional uint32 two_factor_state = 17; + optional bool is_phone_identifying = 18; + optional bool is_phone_needing_reverify = 19; +} + +message CMsgClientAddFriendToGroup { + optional int32 groupid = 1; + optional fixed64 steamiduser = 2; +} + +message CMsgClientAddFriendToGroupResponse { + optional uint32 eresult = 1; +} + +message CMsgClientAMGetPersonaNameHistory { + optional int32 id_count = 1; + repeated CMsgClientAMGetPersonaNameHistory_IdInstance Ids = 2; +} + +// Used by: common.proto +message CMsgClientAMGetPersonaNameHistory_IdInstance { + optional fixed64 steamid = 1; +} + +message CMsgClientAMGetPersonaNameHistoryResponse { + repeated CMsgClientAMGetPersonaNameHistoryResponse_NameTableInstance responses = 2; +} + +// Used by: common.proto +message CMsgClientAMGetPersonaNameHistoryResponse_NameTableInstance { + optional int32 eresult = 1 [default = 2]; + optional fixed64 steamid = 2; + repeated CMsgClientAMGetPersonaNameHistoryResponse_NameTableInstance_NameInstance names = 3; +} + +// Used by: common.proto +message CMsgClientAMGetPersonaNameHistoryResponse_NameTableInstance_NameInstance { + optional fixed32 name_since = 1; + optional string name = 2; +} + +message CMsgClientChangeStatus { + optional uint32 persona_state = 1; + optional string player_name = 2; + optional bool is_auto_generated_name = 3; + optional bool high_priority = 4; + optional bool persona_set_by_user = 5; + optional uint32 persona_state_flags = 6 [default = 0]; + optional bool need_persona_response = 7; + optional bool is_client_idle = 8; +} + +message CMsgClientClanState { + optional fixed64 steamid_clan = 1; + optional uint32 clan_account_flags = 3; + optional CMsgClientClanState_NameInfo name_info = 4; + optional CMsgClientClanState_UserCounts user_counts = 5; + repeated CMsgClientClanState_Event events = 6; + repeated CMsgClientClanState_Event announcements = 7; + optional bool chat_room_private = 8; +} + +// Used by: common.proto +message CMsgClientClanState_Event { + optional fixed64 gid = 1; + optional uint32 event_time = 2; + optional string headline = 3; + optional fixed64 game_id = 4; + optional bool just_posted = 5; +} + +// Used by: common.proto +message CMsgClientClanState_NameInfo { + optional string clan_name = 1; + optional bytes sha_avatar = 2; +} + +// Used by: common.proto +message CMsgClientClanState_UserCounts { + optional uint32 members = 1; + optional uint32 online = 2; + optional uint32 chatting = 3; + optional uint32 in_game = 4; + optional uint32 chat_room_members = 5; +} + +message CMsgClientCreateFriendsGroup { + optional fixed64 steamid = 1; + optional string groupname = 2; + repeated fixed64 steamid_friends = 3; +} + +message CMsgClientCreateFriendsGroupResponse { + optional uint32 eresult = 1; + optional int32 groupid = 2; +} + +message CMsgClientDeleteFriendsGroup { + optional fixed64 steamid = 1; + optional int32 groupid = 2; +} + +message CMsgClientDeleteFriendsGroupResponse { + optional uint32 eresult = 1; +} + +message CMsgClientEmoticonList { + repeated CMsgClientEmoticonList_Emoticon emoticons = 1; + repeated CMsgClientEmoticonList_Sticker stickers = 2; + repeated CMsgClientEmoticonList_Effect effects = 3; +} + +// Used by: common.proto +message CMsgClientEmoticonList_Effect { + optional string name = 1; + optional int32 count = 2; + optional uint32 time_received = 3; + optional bool infinite_use = 4; + optional uint32 appid = 5; +} + +// Used by: common.proto +message CMsgClientEmoticonList_Emoticon { + optional string name = 1; + optional int32 count = 2; + optional uint32 time_last_used = 3; + optional uint32 use_count = 4; + optional uint32 time_received = 5; + optional uint32 appid = 6; +} + +// Used by: common.proto +message CMsgClientEmoticonList_Sticker { + optional string name = 1; + optional int32 count = 2; + optional uint32 time_received = 3; + optional uint32 appid = 4; + optional uint32 time_last_used = 5; + optional uint32 use_count = 6; +} + +message CMsgClientGetClanActivityCounts { + repeated uint64 steamid_clans = 1; +} + +message CMsgClientGetEmoticonList { +} + +message CMsgClientHeartBeat { + optional bool send_reply = 1; +} + +message CMsgClientInviteToGame { + optional fixed64 steam_id_dest = 1; + optional fixed64 steam_id_src = 2; + optional string connect_string = 3; + optional string remote_play = 4; +} + +message CMsgClientItemAnnouncements { + optional uint32 count_new_items = 1; + repeated CMsgClientItemAnnouncements_UnseenItem unseen_items = 2; +} + +// Used by: common.proto +message CMsgClientItemAnnouncements_UnseenItem { + optional uint32 appid = 1; + optional uint64 context_id = 2; + optional uint64 asset_id = 3; + optional uint64 amount = 4; + optional fixed32 rtime32_gained = 5; + optional uint32 source_appid = 6; +} + +message CMsgClientLoggedOff { + optional int32 eresult = 1 [default = 2]; +} + +message CMsgClientLogon { + optional uint32 protocol_version = 1; + optional uint32 deprecated_obfustucated_private_ip = 2; + optional uint32 cell_id = 3; + optional uint32 last_session_id = 4; + optional uint32 client_package_version = 5; + optional string client_language = 6; + optional uint32 client_os_type = 7; + optional bool should_remember_password = 8 [default = false]; + optional string wine_version = 9; + optional uint32 deprecated_10 = 10; + optional CMsgIPAddress obfuscated_private_ip = 11; + optional uint32 deprecated_public_ip = 20; + optional uint32 qos_level = 21; + optional fixed64 client_supplied_steam_id = 22; + optional CMsgIPAddress public_ip = 23; + optional bytes machine_id = 30; + optional uint32 launcher_type = 31 [default = 0]; + optional uint32 ui_mode = 32 [default = 0]; + optional uint32 chat_mode = 33 [default = 0]; + optional bytes steam2_auth_ticket = 41; + optional string email_address = 42; + optional fixed32 rtime32_account_creation = 43; + optional string account_name = 50; + optional string password = 51; + optional string game_server_token = 52; + optional string login_key = 60; + optional bool was_converted_deprecated_msg = 70 [default = false]; + optional string anon_user_target_account_name = 80; + optional fixed64 resolved_user_steam_id = 81; + optional int32 eresult_sentryfile = 82; + optional bytes sha_sentryfile = 83; + optional string auth_code = 84; + optional int32 otp_type = 85; + optional uint32 otp_value = 86; + optional string otp_identifier = 87; + optional bool steam2_ticket_request = 88; + optional bytes sony_psn_ticket = 90; + optional string sony_psn_service_id = 91; + optional bool create_new_psn_linked_account_if_needed = 92 [default = false]; + optional string sony_psn_name = 93; + optional int32 game_server_app_id = 94; + optional bool steamguard_dont_remember_computer = 95; + optional string machine_name = 96; + optional string machine_name_userchosen = 97; + optional string country_override = 98; + optional uint64 client_instance_id = 100; + optional string two_factor_code = 101; + optional bool supports_rate_limit_response = 102; + optional string web_logon_nonce = 103; + optional int32 priority_reason = 104; + optional CMsgClientSecret embedded_client_secret = 105; + optional bool disable_partner_autogrants = 106; + optional string access_token = 108; + optional bool is_chrome_os = 109; + optional uint32 gaming_device_type = 111; +} + +message CMsgClientLogonResponse { + optional int32 eresult = 1 [default = 2]; + optional int32 legacy_out_of_game_heartbeat_seconds = 2; + optional int32 heartbeat_seconds = 3; + optional uint32 deprecated_public_ip = 4; + optional fixed32 rtime32_server_time = 5; + optional uint32 account_flags = 6; + optional uint32 cell_id = 7; + optional string email_domain = 8; + optional bytes steam2_ticket = 9; + optional int32 eresult_extended = 10; + optional uint32 cell_id_ping_threshold = 12; + optional bool deprecated_use_pics = 13; + optional string vanity_url = 14; + optional CMsgIPAddress public_ip = 15; + optional string user_country = 16; + optional fixed64 client_supplied_steamid = 20; + optional string ip_country_code = 21; + optional bytes parental_settings = 22; + optional bytes parental_setting_signature = 23; + optional int32 count_loginfailures_to_migrate = 24; + optional int32 count_disconnects_to_migrate = 25; + optional int32 ogs_data_report_time_window = 26; + optional uint64 client_instance_id = 27; + optional bool force_client_update_check = 28; + optional string agreement_session_url = 29; + optional uint64 token_id = 30; + optional uint64 family_group_id = 31; +} + +message CMsgClientManageFriendsGroup { + optional int32 groupid = 1; + optional string groupname = 2; + repeated fixed64 steamid_friends_added = 3; + repeated fixed64 steamid_friends_removed = 4; +} + +message CMsgClientManageFriendsGroupResponse { + optional uint32 eresult = 1; +} + +message CMsgClientMMSInviteToLobby { + optional uint32 app_id = 1; + optional fixed64 steam_id_lobby = 2; + optional fixed64 steam_id_user_invited = 3; +} + +message CMsgClientOfflineMessageNotification { + optional uint32 offline_messages = 1; + repeated uint32 friends_with_offline_messages = 2; +} + +message CMsgClientPersonaState { + optional uint32 status_flags = 1; + repeated CMsgClientPersonaState_Friend friends = 2; +} + +// Used by: ChatRoom, ChatRoomClient, common.proto +message CMsgClientPersonaState_Friend { + optional fixed64 friendid = 1; + optional uint32 persona_state = 2; + optional uint32 game_played_app_id = 3; + optional uint32 game_server_ip = 4; + optional uint32 game_server_port = 5; + optional uint32 persona_state_flags = 6; + optional uint32 online_session_instances = 7; + optional bool persona_set_by_user = 10; + optional string player_name = 15; + optional uint32 query_port = 20; + optional fixed64 steamid_source = 25; + optional bytes avatar_hash = 31; + optional uint32 last_logoff = 45; + optional uint32 last_logon = 46; + optional uint32 last_seen_online = 47; + optional uint32 clan_rank = 50; + optional string game_name = 55; + optional fixed64 gameid = 56; + optional bytes game_data_blob = 60; + optional CMsgClientPersonaState_Friend_ClanData clan_data = 64; + optional string clan_tag = 65; + repeated CMsgClientPersonaState_Friend_KV rich_presence = 71; + optional fixed64 broadcast_id = 72; + optional fixed64 game_lobby_id = 73; + optional uint32 watching_broadcast_accountid = 74; + optional uint32 watching_broadcast_appid = 75; + optional uint32 watching_broadcast_viewers = 76; + optional string watching_broadcast_title = 77; + optional bool is_community_banned = 78; + optional bool player_name_pending_review = 79; + optional bool avatar_pending_review = 80; + optional bool on_steam_deck = 81; + repeated CMsgClientPersonaState_Friend_OtherGameData other_game_data = 82; + optional uint32 gaming_device_type = 83; +} + +// Used by: ChatRoom, ChatRoomClient, common.proto +message CMsgClientPersonaState_Friend_ClanData { + optional uint32 ogg_app_id = 1; + optional uint64 chat_group_id = 2; +} + +// Used by: ChatRoom, ChatRoomClient, common.proto +message CMsgClientPersonaState_Friend_KV { + optional string key = 1; + optional string value = 2; +} + +// Used by: ChatRoom, ChatRoomClient, common.proto +message CMsgClientPersonaState_Friend_OtherGameData { + optional uint64 gameid = 1; + repeated CMsgClientPersonaState_Friend_KV rich_presence = 2; +} + +message CMsgClientRemoveFriendFromGroup { + optional int32 groupid = 1; + optional fixed64 steamiduser = 2; +} + +message CMsgClientRemoveFriendFromGroupResponse { + optional uint32 eresult = 1; +} + +message CMsgClientRequestFriendData { + optional uint32 persona_state_requested = 1; + repeated fixed64 friends = 2; +} + +message CMsgClientRequestOfflineMessageCount { +} + +// Used by: common.proto +message CMsgClientSecret { + optional uint32 version = 1; + optional uint32 appid = 2; + optional uint32 deviceid = 3; + optional fixed64 nonce = 4; + optional bytes hmac = 5; +} + +message CMsgClientServersAvailable { + repeated CMsgClientServersAvailable_Server_Types_Available server_types_available = 1; + optional uint32 server_type_for_auth_services = 2; +} + +// Used by: common.proto +message CMsgClientServersAvailable_Server_Types_Available { + optional uint32 server = 1; + optional bool changed = 2; +} + +message CMsgClientServerTimestampRequest { + optional uint64 client_request_timestamp = 1; +} + +message CMsgClientServerTimestampResponse { + optional uint64 client_request_timestamp = 1; + optional uint64 server_timestamp_ms = 2; +} + +message CMsgClientSettings { + optional bool no_save_personal_info = 1; + optional bool in_client_beta = 3; + optional bool is_steam_sideloaded = 4; + optional string preferred_monitor = 5; + optional bool steam_cef_gpu_blocklist_disabled = 6; + optional bool bigpicture_windowed = 7; + optional string display_name = 8; + optional bool is_external_display = 9; + optional float steam_os_underscan_level = 10; + optional bool steam_os_underscan_enabled = 11; + optional float min_scale_factor = 12; + optional float max_scale_factor = 13; + optional float auto_scale_factor = 14; + optional bool small_mode = 16; + optional bool skip_steamvr_install_dialog = 19; + optional bool always_show_user_chooser = 20; + optional bool os_version_unsupported = 21; + optional bool show_family_sharing_notifications = 3000; + optional bool show_copy_count_in_library = 3001; + optional int32 overlay_fps_counter_corner = 4000; + optional bool overlay_fps_counter_high_contrast = 4001; + optional CMsgHotkey overlay_key = 4002; + optional CMsgHotkey screenshot_key = 4003; + optional bool enable_overlay = 4004; + optional bool enable_screenshot_notification = 4006; + optional bool enable_screenshot_sound = 4007; + optional bool save_uncompressed_screenshots = 4008; + optional string screenshots_path = 4009; + optional int32 default_ping_rate = 4010; + optional int32 server_ping_rate = 4011; + optional int32 steam_networking_share_ip = 4012; + optional string web_browser_home = 4013; + optional string voice_mic_device_name = 4014; + optional float voice_mic_input_gain = 4015; + optional float voice_speaker_output_gain = 4016; + optional int32 voice_push_to_talk_setting = 4017; + optional CMsgHotkey voice_push_to_talk_key = 4018; + optional bool overlay_toolbar_list_view = 4019; + optional bool always_use_gamepadui_overlay = 4020; + optional string overlay_tabs = 4021; + optional bool overlay_scale_interface = 4022; + optional bool overlay_restore_browser_tabs = 4023; + optional bool enable_avif_screenshots = 4024; + optional int32 overlay_fps_counter_detail_level = 4025; + optional float overlay_fps_counter_saturation_factor = 4026; + optional float overlay_fps_counter_bgopacity = 4027; + optional float overlay_fps_counter_scale_factor = 4028; + optional CMsgHotkey overlay_fps_counter_key = 4029; + optional bool overlay_fps_counter_fps_graph = 4030; + optional bool overlay_fps_counter_cpu_graph = 4031; + optional bool overlay_fps_counter_allow_km_driver = 4032; + optional bool achievement_notification_toast = 4033; + optional bool achievement_notification_sound = 4034; + optional bool controllerconnect_notification_toast = 4035; + optional bool controllerconnect_notification_sound = 4036; + optional bool controller_low_battery_notification_toast = 4037; + optional bool controller_low_battery_notification_sound = 4038; + optional bool smooth_scroll_webviews = 5000; + optional bool enable_gpu_accelerated_webviews = 5001; + optional bool enable_hardware_video_decoding = 5003; + optional bool run_at_startup = 5004; + optional bool enable_dpi_scaling = 5005; + optional bool enable_marketing_messages = 5006; + optional bool start_in_big_picture_mode = 5007; + optional uint32 jumplist_flags = 5008; + optional bool enable_ui_sounds = 5009; + optional bool enable_gamescope_composer = 5010; + optional bool enable_gamescope_composer_vr = 5011; + optional bool show_switch_to_desktop_at_login = 5012; + optional bool enable_steamrt64_client = 5013; + optional bool disable_all_toasts = 6000; + optional bool disable_toasts_in_game = 6001; + optional bool play_sound_on_toast = 6002; + optional int32 library_display_size = 7000; + optional bool library_whats_new_show_only_product_updates = 7001; + optional bool show_store_content_on_home = 7002; + optional string start_page = 7003; + optional bool library_low_bandwidth_mode = 7004; + optional bool library_low_perf_mode = 7005; + optional bool library_disable_community_content = 7006; + optional bool library_display_icon_in_game_list = 7007; + optional bool ready_to_play_includes_streaming = 7008; + optional bool show_steam_deck_info = 7009; + optional bool enable_shader_precache = 8000; + optional bool enable_shader_background_processing = 8001; + optional uint64 shader_precached_size = 8002; + optional bool needs_steam_service_repair = 8003; + optional int32 download_peer_content = 8004; + optional bool download_rate_bits_per_s = 8005; + optional bool restrict_auto_updates = 8006; + optional int32 restrict_auto_updates_start = 8007; + optional int32 restrict_auto_updates_end = 8008; + optional int32 download_region = 8009; + optional bool download_while_app_running = 8010; + optional bool download_throttle_while_streaming = 8011; + optional int32 download_throttle_rate = 8012; + optional int32 default_app_update_behavior = 8013; + optional bool cloud_enabled = 10000; + optional bool show_screenshot_manager = 10001; + optional int32 music_volume = 11000; + optional bool music_pause_on_app_start = 11001; + optional bool music_pause_on_voice_chat = 11002; + optional bool music_download_high_quality = 11003; + optional int32 broadcast_permissions = 12000 [(webui.description) = "enum"]; + optional int32 broadcast_output_width = 12001; + optional int32 broadcast_output_height = 12002; + optional int32 broadcast_bitrate = 12003; + optional int32 broadcast_encoding_option = 12004 [(webui.description) = "enum"]; + optional bool broadcast_record_all_video = 12005; + optional bool broadcast_record_all_audio = 12006; + optional bool broadcast_record_microphone = 12007; + optional bool broadcast_show_upload_stats = 12008; + optional bool broadcast_show_live_reminder = 12009; + optional int32 broadcast_chat_corner = 12010; + optional bool gamestream_hardware_video_encode = 13000; + optional bool gamestream_enable_video_h265 = 13001; + optional bool steam_input_configurator_error_msg_enable = 14001; + optional bool controller_guide_button_focus_steam = 14002; + optional int32 controller_ps_support = 14003; + optional bool controller_xbox_support = 14004; + optional bool controller_xbox_driver = 14005; + optional bool controller_switch_support = 14006; + optional bool controller_generic_support = 14007; + optional int32 controller_power_off_timeout = 14008; + optional bool turn_off_controller_on_exit = 14009; + optional bool controller_combine_nintendo_joycons = 14010; + optional uint64 startup_movie_id = 16000; + optional string startup_movie_local_path = 16001; + optional bool startup_movie_shuffle = 16002; + optional bool startup_movie_used_for_resume = 16003; + optional bool game_notes_enable_spellcheck = 17001; + optional int32 screenshot_items_per_row = 18000; + optional string gamerecording_background_path = 18201; + optional string gamerecording_background_max_keep = 18202; + optional int32 gamerecording_background_time_resolution = 18203; + optional CMsgHotkey gamerecording_background_mk = 18207; + optional CMsgHotkey gamerecording_background_tg = 18208; + optional bool gamerecording_background_a_m = 18209; + optional string gamerecording_video_bitrate = 18210; + optional int32 gamerecording_background_mode = 18212 [(webui.description) = "enum"]; + optional int32 gamerecording_background_audio = 18213 [(webui.description) = "enum"]; + optional int32 gamerecording_max_fps = 18214; + optional CMsgHotkey gamerecording_hotkey_ic = 18215; + optional float gamerecording_ic_seconds = 18216; + optional int32 gamerecording_export_limit_type = 18217 [(webui.description) = "enum"]; + optional int32 gamerecording_export_limit_size_mb = 18218; + optional int32 gamerecording_export_limit_bitrate = 18219; + optional int32 gamerecording_export_limit_width = 18220; + optional int32 gamerecording_export_limit_height = 18221; + optional int32 gamerecording_export_limit_frame_rate = 18222; + optional string gamerecording_export_directory = 18223; + optional int32 gamerecording_export_codec = 18224 [(webui.description) = "enum"]; + optional int32 gamerecording_video_maxheight = 18225; + optional bool gamerecording_force_mic_mono = 18226; + optional bool gamerecording_automatic_gain_control = 18227; + optional bool show_timestamps_in_console = 20000; + optional int32 override_browser_composer_mode = 20002; + optional bool cef_remote_debugging_enabled = 20003; + optional bool force_deck_perf_tab = 20004; + optional bool force_fake_mandatory_update = 20005; + optional bool hdr_compat_testing = 20006; + optional bool developer_mode_enabled = 20007; + optional bool show_advanced_update_channels = 20008; + optional bool browserview_underlays_allowed = 20009; + optional int32 gamescope_hdr_visualization = 21001 [(webui.description) = "enum"]; + optional int32 gamescope_app_target_framerate = 21002; + optional bool gamescope_enable_app_target_framerate = 21003; + optional bool gamescope_disable_framelimit = 21004; + optional int32 gamescope_display_refresh_rate = 21005; + optional bool gamescope_use_game_refresh_rate_in_steam = 21006; + optional bool gamescope_disable_mura_correction = 21007; + optional bool gamescope_include_steamui_in_screenshots = 21008; + optional bool gamescope_allow_tearing = 21009; + optional bool gamescope_composite_debug = 21010; + optional bool gamescope_force_composite = 21011; + optional string gamescope_game_resolution_global = 21012; + optional CMsgHotkey gamescope_guide_hotkey = 21013; + optional CMsgHotkey gamescope_qam_hotkey = 21014; + optional bool gamescope_hdr_enabled = 21015; + optional bool gamescope_native_external_res_in_steam = 21016; + optional int32 steamos_status_led_brightness = 22000; + optional bool steamos_tdp_limit_enabled = 22001; + optional int32 steamos_tdp_limit = 22002; + optional bool steamos_cec_enabled = 22003; + optional bool steamos_cec_wake_on_resume = 22004; + optional bool steamos_wifi_debug = 22005; + optional bool steamos_wifi_force_wpa_supplicant = 22006; + optional int32 steamos_magnifier_scale = 22007; + optional bool steamos_manual_gpu_clock_enabled = 22008; + optional int32 steamos_manual_gpu_clock_hz = 22009; + optional string steamos_platform_performance_profile = 22010; + optional bool steamos_charge_limit_enabled = 22011; + optional int32 steamos_charge_limit = 22012; + optional bool steamos_charge_limit_devmode = 22013; + optional bool steamos_system_tracing_enabled = 22014; + optional bool steamos_vrs_enabled = 22015; + optional bool steamos_separate_led_colors = 22016; + optional bool steamos_wifi_reload_wifi_driver_on_sleep = 22017; + optional bool steamos_cec_control = 22019; + optional bool steamos_cec_suspend_tv = 22020; + optional bool steamos_cec_suspend_device = 22021; + optional bool steamos_cec_wake_tv = 22022; + optional bool steamos_cec_wake_device = 22023; + optional bool setting_validation_bool = 23001; + optional int32 setting_validation_enum = 23002 [(webui.description) = "enum"]; + optional int32 setting_validation_int32 = 23003; + optional uint32 setting_validation_uint32 = 23004; + optional uint64 setting_validation_uint64 = 23005; + optional float setting_validation_float = 23006; + optional string setting_validation_string = 23007; + optional CMsgHotkey setting_validation_hotkey = 23008; + optional bool system_bluetooth_enabled = 24000; + optional bool hardware_updater_enabled = 24001; + optional int32 system_idle_suspend_battery_sec = 24003; + optional int32 system_idle_suspend_ac_sec = 24004; + optional bool system_enable_low_power_downloads = 24005; + optional bool system_allow_battery_low_power_downloads = 24006; + optional int32 system_idle_screensaver_battery_sec = 24008; + optional int32 system_idle_screensaver_ac_sec = 24009; + optional bool vr_show_perf_graph_in_hmd = 25000; + optional bool vr_audio_spatialize = 25001; + optional bool vr_audio_spatialize_surround = 25002; + optional bool accessibility_debug_visualizer = 26000; + optional bool accessibility_screen_reader_enabled = 26001; + optional float accessibility_screen_reader_rate = 26002; + optional float accessibility_screen_reader_pitch = 26003; + optional float accessibility_screen_reader_volume = 26004; + optional bool accessibility_high_contrast_mode = 26005; + optional bool accessibility_reduce_motion = 26006; + optional uint32 accessibility_minimum_font_size = 26008; + optional string accessibility_color_filter_name = 26009; + optional float accessibility_desktop_ui_scale = 26010; + optional string accessibility_screen_reader_locale = 26011; + optional bool accessibility_mono_audio = 26012; + optional bool remote_play_wifi_ap_enabled = 27000; + optional int32 remote_play_wifi_ap_channel_5ghz = 27001; + optional int32 remote_play_wifi_ap_channel_6ghz = 27002; + optional int32 remote_play_wifi_ap_channel_width = 27003; + optional bool remote_play_wifi_ap_hotspot_mode = 27004; + optional string remote_play_wifi_ap_hotspot_ssid = 27005; + optional string remote_play_wifi_ap_hotspot_password = 27006; + optional string remote_play_wifi_ap_hotspot_routing = 27007; + optional bool remote_play_wifi_ap_show_advanced = 27008; + optional string remote_play_wifi_ap_paired_ssid = 27009; + optional bool skip_steamframe_pairing_dialog = 27010; + optional bool oobe_completed = 28001; + optional bool oobe_test_mode_enabled = 28002; + optional bool force_oobe = 28003; + optional bool oobe_stage_2_completed = 28004; + optional bool oobe_stage_2_test_mode_enabled = 28005; + optional bool force_stage_2_oobe = 28006; + optional bool controller_enable_chord = 140011; + optional bool controller_poll_rate = 140012; + optional bool controller_siapi_config_author_mode = 140013; + optional bool controller_show_ibex_tour = 140014; + optional string controller_chat_radial_menu_option_0 = 140030; + optional string controller_chat_radial_menu_option_1 = 140031; + optional string controller_chat_radial_menu_option_2 = 140032; + optional string controller_chat_radial_menu_option_3 = 140033; + optional string controller_chat_radial_menu_option_4 = 140034; + optional string controller_chat_radial_menu_option_5 = 140035; + optional string controller_chat_radial_menu_option_6 = 140036; + optional string controller_chat_radial_menu_option_7 = 140037; + optional bool steamos_wifi_power_management_enabled = 220018; +} + +message CMsgCloudPendingRemoteOperations { + repeated CCloud_PendingRemoteOperation operations = 1; +} + +// Used by: common.proto +message CMsgControllerActionSetMiscSettings { + optional string cursor_visible_action_set_key = 1; + optional string cursor_hidden_action_set_key = 2; +} + +message CMsgControllerConfiguration { + optional uint32 binding_handle = 1; + optional string display_name = 2; + optional string description = 3; + optional string creator = 4; + optional int32 controller_type = 5; + optional int32 controller_style = 7; + repeated CMsgGameActionSet sets = 8; + repeated CMsgControllerMode modes = 9; + optional string error_msg = 10; + optional string action_block_path = 11; + optional CMsgControllerActionSetMiscSettings misc_action_set_settings = 12; + optional string url = 13; +} + +// Used by: common.proto +message CMsgControllerInput { + optional int32 key = 1 [(webui.description) = "enum"]; + repeated CMsgControllerInputActivator activators = 2; + repeated CMsgControllerInputActivator disabled_activators = 3; + optional bool inherited_from_parentset = 4; +} + +// Used by: common.proto +message CMsgControllerInputActivator { + optional int32 activation = 1 [(webui.description) = "enum"]; + repeated CMsgControllerInputBinding bindings = 2; + repeated CMsgControllerSetting settings = 3; +} + +// Used by: common.proto +message CMsgControllerInputBinding { + optional int32 type = 1; + optional CMsgControllerInputBinding_KeyBindingData key_binding_data = 2; + optional CMsgControllerInputKeyBinding keyboard_key = 3; + optional CMsgControllerInputMouseButtonBinding mouse_button = 4; + optional CMsgControllerInputGamepadButtonBinding gamepad_button = 5; + optional CMsgControllerInputMouseWheelBinding mouse_wheel = 6; + optional CMsgControllerInputModeShiftBinding mode_shift = 7; + optional CMsgControllerInputGameActionBinding game_action = 8; + optional CMsgControllerInputControllerActionBinding controller_action = 9; +} + +// Used by: common.proto +message CMsgControllerInputBinding_IconBindingData { + optional string icon_filename = 1; + optional string color_foreground = 2; + optional string color_background = 3; + optional string icon_url = 4; +} + +// Used by: common.proto +message CMsgControllerInputBinding_KeyBindingData { + optional string keys_bound_utf8 = 1; + optional string friendly_name_utf8 = 2; + optional CMsgControllerInputBinding_IconBindingData icon_data = 3; +} + +// Used by: common.proto +message CMsgControllerInputControllerActionBinding { + optional int32 action = 1 [(webui.description) = "enum"]; + optional CMsgControllerInputControllerActionMouseBinding mouse = 2; + optional CMsgControllerInputControllerActionCameraHorizonReset camera_horizon_reset = 3; + optional CMsgControllerInputControllerActionDotsPer360CalibrationSpin dots_per_360_calibration_spin = 4; + optional CMsgControllerInputControllerActionTurnToFaceDirection turn_to_face_direction = 5; + optional CMsgControllerInputControllerActionGameActionSetBinding action_set = 6; + optional CMsgControllerInputControllerActionLEDColorBinding led_color = 7; + optional CMsgControllerInputControllerActionChangePlayerNumberBinding change_player_number = 8; +} + +// Used by: common.proto +message CMsgControllerInputControllerActionCameraHorizonReset { + optional int32 camera_dip_angle = 1; + optional int32 delay_duration = 2; + optional int32 camera_horizon_reset_angle = 3; +} + +// Used by: common.proto +message CMsgControllerInputControllerActionChangePlayerNumberBinding { + optional int32 player_number = 1; +} + +// Used by: common.proto +message CMsgControllerInputControllerActionDotsPer360CalibrationSpin { + optional int32 spin_by_amount = 1; + optional int32 spin_duration = 2; +} + +// Used by: common.proto +message CMsgControllerInputControllerActionGameActionSetBinding { + optional int32 preset_type = 1 [(webui.description) = "enum"]; + optional string action_set_key = 2; + optional bool display = 3; + optional bool beep = 4; +} + +// Used by: common.proto +message CMsgControllerInputControllerActionLEDColorBinding { + optional int32 setting = 1 [(webui.description) = "enum"]; + optional int32 brightness = 2; + optional int32 saturation = 3; + optional int32 color_r = 4; + optional int32 color_g = 5; + optional int32 color_b = 6; +} + +// Used by: common.proto +message CMsgControllerInputControllerActionMouseBinding { + optional sint32 x = 1; + optional sint32 y = 2; + optional bool restore = 3; +} + +// Used by: common.proto +message CMsgControllerInputControllerActionTurnToFaceDirection { + optional int32 source_of_direction = 1; + optional int32 turn_duration = 2; + optional bool use_last_direction_if_deadzoned = 3; +} + +// Used by: common.proto +message CMsgControllerInputGameActionBinding { + optional string action_set_key = 1; + optional string action_key = 2; +} + +// Used by: common.proto +message CMsgControllerInputGamepadButtonBinding { + optional int32 button = 1 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CMsgControllerInputKeyBinding { + optional int32 key = 1 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CMsgControllerInputModeShiftBinding { + optional int32 source = 1 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CMsgControllerInputMouseButtonBinding { + optional int32 button = 1 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CMsgControllerInputMouseWheelBinding { + optional int32 button = 1 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CMsgControllerMode { + optional int32 mode = 1 [(webui.description) = "enum"]; + optional uint32 modeid = 2; + optional string description = 3; + repeated CMsgControllerInput inputs = 4; + repeated CMsgControllerSetting settings = 5; + optional string friendlyname = 6; + optional int32 source = 7 [(webui.description) = "enum"]; + optional CMsgControllerVirtualMenuPreviewInfo virtual_menu_info = 8; + optional bool mode_shift = 9; + optional uint32 reference_modeid = 10; + repeated int32 mode_shift_buttons = 11 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CMsgControllerSetting { + optional int32 key = 1 [(webui.description) = "enum"]; + optional sint32 int_value = 2; + optional sint32 int_min = 3; + optional sint32 int_max = 4; + optional sint32 int_default = 5; + optional CMsgControllerSetting parentset_setting = 6; + optional sint64 long_value = 7; +} + +// Used by: common.proto +message CMsgControllerSourceGroup { + optional int32 mode = 1 [(webui.description) = "enum"]; + optional CMsgControllerInputGameActionBinding game_action = 2; + repeated CMsgControllerInput inputs = 3; + repeated CMsgControllerSetting settings = 4; + optional uint32 modeid = 5; + optional bool mode_shift = 6; + optional CMsgControllerSourceGroup mode_shift_source_group = 7; +} + +// Used by: common.proto +message CMsgControllerSources { + optional int32 key = 1 [(webui.description) = "enum"]; + optional CMsgControllerSourceGroup active_group = 2; +} + +// Used by: common.proto +message CMsgControllerVirtualMenuPreviewInfo { + optional int32 source = 1 [(webui.description) = "enum"]; + optional float x_pos = 2; + optional float y_pos = 3; + optional float opacity = 4; + optional float scale = 5; + optional bool show_labels = 6; + optional uint32 menu_style = 7; + optional bool force_on = 8; + repeated CVirtualMenuKey keys = 9; +} + +message CMsgCREGetUserPublishedItemVoteDetails { + repeated CMsgCREGetUserPublishedItemVoteDetails_PublishedFileId published_file_ids = 1; +} + +// Used by: common.proto +message CMsgCREGetUserPublishedItemVoteDetails_PublishedFileId { + optional fixed64 published_file_id = 1; +} + +message CMsgCREGetUserPublishedItemVoteDetailsResponse { + optional int32 eresult = 1 [default = 2]; + repeated CMsgCREGetUserPublishedItemVoteDetailsResponse_UserItemVoteDetail user_item_vote_details = 2; +} + +// Used by: common.proto +message CMsgCREGetUserPublishedItemVoteDetailsResponse_UserItemVoteDetail { + optional fixed64 published_file_id = 1; + optional int32 vote = 2 [default = 0]; +} + +message CMsgCREUpdateUserPublishedItemVote { + optional fixed64 published_file_id = 1; + optional bool vote_up = 2; +} + +message CMsgCREUpdateUserPublishedItemVoteResponse { + optional int32 eresult = 1 [default = 2]; +} + +// Used by: common.proto +message CMsgGameAction { + optional string key = 1; + optional string display_name = 2; + repeated int32 modes = 3 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CMsgGameActionBindingType { + optional int32 key = 1 [(webui.description) = "enum"]; + repeated CMsgGameAction actions = 2; +} + +// Used by: common.proto +message CMsgGameActionSet { + optional string key = 1; + optional string display_name = 2; + optional bool legacy_set = 3; + repeated CMsgGameActionSet layers = 4; + repeated CMsgGameActionBindingType action_binding_types = 5; + repeated CMsgControllerSources source_bindings = 6; +} + +// Used by: common.proto +message CMsgGCRoutingProtoBufHeader { + optional uint64 dst_gcid_queue = 1; + optional uint32 dst_gc_dir_index = 2; +} + +message CMsgGenerateSystemReportReply { + optional string report_id = 1; +} + +// Used by: common.proto +message CMsgHotkey { + optional uint32 key_code = 1; + optional bool alt_key = 2; + optional bool shift_key = 3; + optional bool ctrl_key = 4; + optional bool meta_key = 5; + optional string display_name = 6; +} + +// Used by: Authentication, AuthenticationSupport, Community, common.proto +message CMsgIPAddress { + optional fixed32 v4 = 1; + optional bytes v6 = 2; +} + +message CMsgMonitorInfo { + optional string selected_device_name = 1; + repeated CMsgMonitorInfo_MonitorInfo monitors = 2; +} + +// Used by: common.proto +message CMsgMonitorInfo_MonitorInfo { + optional string monitor_device_name = 1; + optional string monitor_display_name = 2; +} + +message CMsgMulti { + optional uint32 size_unzipped = 1; + optional bytes message_body = 2; +} + +message CMsgNetworkDeviceConnect { + optional uint32 device_id = 1 [default = 0]; + optional CMsgNetworkDeviceConnect_KnownAP ap_known = 2; + optional CMsgNetworkDeviceConnect_CustomAP ap_custom = 3; + optional CMsgNetworkDeviceConnect_Credentials credentials = 4; + optional CMsgNetworkDeviceIP4Config ip4 = 5; + optional CMsgNetworkDeviceIP6Config ip6 = 6; + optional CMsgNetworkDeviceConnect_Wireless wireless = 7; +} + +// Used by: common.proto +message CMsgNetworkDeviceConnect_Credentials { + optional string username = 1; + optional string password = 2; +} + +// Used by: common.proto +message CMsgNetworkDeviceConnect_CustomAP { + optional string ssid = 1; + optional int32 esecurity = 2; +} + +// Used by: common.proto +message CMsgNetworkDeviceConnect_KnownAP { + optional uint32 ap_id = 1; +} + +// Used by: common.proto +message CMsgNetworkDeviceConnect_Wireless { + optional string band_filter = 1; +} + +// Used by: common.proto +message CMsgNetworkDeviceIP4Address { + optional int32 ip = 1 [default = 0]; + optional int32 netmask = 2; +} + +// Used by: common.proto +message CMsgNetworkDeviceIP4Config { + repeated CMsgNetworkDeviceIP4Address addresses = 1; + repeated int32 dns_ip = 2; + optional int32 gateway_ip = 3; + optional bool is_dhcp_enabled = 4; + optional bool is_default_route = 5; + optional bool is_enabled = 6 [default = false]; +} + +// Used by: common.proto +message CMsgNetworkDeviceIP6Address { + optional string ip = 1 [default = ""]; +} + +// Used by: common.proto +message CMsgNetworkDeviceIP6Config { + repeated CMsgNetworkDeviceIP6Address addresses = 1; + repeated string dns_ip = 2; + optional string gateway_ip = 3; + optional bool is_dhcp_enabled = 4; + optional bool is_default_route = 5; + optional bool is_enabled = 6 [default = false]; +} + +message CMsgNetworkDevicesData { + repeated CMsgNetworkDevicesData_Device devices = 1; + optional bool is_wifi_enabled = 2; + optional bool is_wifi_scanning_enabled = 3; +} + +// Used by: common.proto +message CMsgNetworkDevicesData_Device { + optional uint32 id = 1 [default = 0]; + optional int32 etype = 2; + optional int32 estate = 3; + optional string mac = 4; + optional string vendor = 5; + optional string product = 6; + optional CMsgNetworkDeviceIP4Config ip4 = 7; + optional CMsgNetworkDeviceIP6Config ip6 = 8; + optional CMsgNetworkDevicesData_Device_Wired wired = 9; + optional CMsgNetworkDevicesData_Device_Wireless wireless = 10; +} + +// Used by: common.proto +message CMsgNetworkDevicesData_Device_Wired { + optional bool is_cable_present = 1 [default = false]; + optional uint32 speed_mbit = 2; + optional string friendly_name = 3; +} + +// Used by: common.proto +message CMsgNetworkDevicesData_Device_Wireless { + repeated CMsgNetworkDevicesData_Device_Wireless_AP aps = 1; + optional int32 esecurity_supported = 2; +} + +// Used by: common.proto +message CMsgNetworkDevicesData_Device_Wireless_AP { + optional uint32 id = 1 [default = 0]; + optional int32 estrength = 2; + optional string ssid = 3; + optional bool is_active = 4; + optional bool is_autoconnect = 5; + optional int32 esecurity = 6; + optional string user_name = 7; + optional string password = 8; + optional int32 strength_raw = 9; + optional string band_filter = 10; + optional bool has_non_6ghz_channel = 11; + optional bool is_saved = 12; +} + +message CMsgNetworkDeviceSetOptions { + optional CMsgNetworkDeviceSetOptions_Wireless wireless = 2; +} + +// Used by: common.proto +message CMsgNetworkDeviceSetOptions_Wireless { + optional uint32 ap_id = 1; + optional bool is_autoconnect = 2; + optional string band_filter = 3; +} + +message CMsgProtoBufHeader { + optional fixed64 steamid = 1; + optional int32 client_sessionid = 2; + optional uint32 routing_appid = 3; + optional fixed64 jobid_source = 10 [default = 18446744073709551615]; + optional fixed64 jobid_target = 11 [default = 18446744073709551615]; + optional string target_job_name = 12; + optional int32 eresult = 13 [default = 2]; + optional string error_message = 14; + optional uint32 ip = 15; + optional uint32 auth_account_flags = 16; + optional int32 transport_error = 17 [default = 1]; + optional uint64 messageid = 18 [default = 18446744073709551615]; + optional uint32 publisher_group_id = 19; + optional uint32 sysid = 20; + optional uint32 token_source = 22; + optional bool admin_spoofing_user = 23; + optional int32 seq_num = 24; + optional uint32 webapi_key_id = 25; + optional bool is_from_external_source = 26; + repeated uint32 forward_to_sysid = 27; + optional uint32 cm_sysid = 28; + optional bytes ip_v6 = 29; + optional uint32 launcher_type = 31 [default = 0]; + optional uint32 realm = 32 [default = 0]; + optional int32 timeout_ms = 33 [default = -1]; + optional string debug_source = 34; + optional uint32 debug_source_string_index = 35; + optional uint64 token_id = 36; + optional CMsgGCRoutingProtoBufHeader routing_gc = 37; + optional int32 session_disposition = 38 [default = 0, (webui.description) = "enum"]; + optional string wg_token = 39; + optional string webui_auth_key = 40; + repeated int32 exclude_client_sessionids = 41; + optional fixed64 admin_request_spoofing_steamid = 43; + optional bool is_valveds = 44; + optional fixed64 trace_tag = 45; +} + +message CMsgSelectOSBranchParams { + optional int32 branch = 1 [(webui.description) = "enum"]; + optional string custom_branch = 2; +} + +message CMsgSetControllerActionSet { + optional string action_set_key = 1; + optional string action_set_layer_key = 2; + optional string new_display_name = 3; + optional string action_set_to_copy_key = 4; +} + +message CMsgSetControllerInputActivator { + optional string action_set_key = 1; + optional string action_set_layer_key = 2; + optional int32 source_binding_key = 3 [(webui.description) = "enum"]; + optional bool mode_shift = 4; + optional int32 input_key = 5 [(webui.description) = "enum"]; + optional int32 activator_index = 6; + optional int32 new_activation = 7 [(webui.description) = "enum"]; + optional CMsgControllerSetting new_setting = 8; + optional int32 modeid = 9; +} + +message CMsgSetControllerInputActivatorEnabled { + optional string action_set_key = 1; + optional string action_set_layer_key = 2; + optional int32 source_binding_key = 3 [(webui.description) = "enum"]; + optional bool mode_shift = 4; + optional int32 input_key = 5 [(webui.description) = "enum"]; + optional int32 activator_index = 6; + optional bool enabled = 7; + optional int32 modeid = 8; +} + +message CMsgSetControllerInputBinding { + optional string action_set_key = 1; + optional string action_set_layer_key = 2; + optional int32 source_binding_key = 3 [(webui.description) = "enum"]; + optional bool mode_shift = 4; + optional int32 input_key = 5 [(webui.description) = "enum"]; + optional int32 activator_index = 6; + optional int32 binding_index = 7; + optional CMsgControllerInputBinding new_binding = 8; + optional int32 source_mode = 9 [(webui.description) = "enum"]; + optional int32 modeid = 10; +} + +message CMsgSetControllerSourceMode { + optional string action_set_key = 1; + optional string action_set_layer_key = 2; + optional int32 source_binding_key = 3 [(webui.description) = "enum"]; + optional bool mode_shift = 4; + optional int32 new_mode = 5 [(webui.description) = "enum"]; + optional CMsgControllerInputGameActionBinding new_game_action = 6; + optional CMsgControllerSetting new_setting = 7; + optional string new_name = 8; + optional uint32 modeid = 9; + optional bool change_mode = 10; + optional bool new_virtual_menu = 11; + optional bool enable_virtual_menu_support = 12; +} + +message CMsgSetModeShiftButton { + optional string action_set_key = 1; + optional string action_set_layer_key = 2; + optional int32 modeid = 3; + optional int32 source = 4 [(webui.description) = "enum"]; + repeated int32 mode_shift_buttons_digital_io = 5 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CMsgSteamDatagramConnectionQuality { + optional CMsgSteamDatagramLinkInstantaneousStats instantaneous = 1; + optional CMsgSteamDatagramLinkLifetimeStats lifetime = 2; +} + +// Used by: common.proto +message CMsgSteamDatagramLinkInstantaneousStats { + optional uint32 out_packets_per_sec_x10 = 1; + optional uint32 out_bytes_per_sec = 2; + optional uint32 in_packets_per_sec_x10 = 3; + optional uint32 in_bytes_per_sec = 4; + optional uint32 ping_ms = 5; + optional uint32 packets_dropped_pct = 6; + optional uint32 packets_weird_sequence_pct = 7; + optional uint32 peak_jitter_usec = 8; +} + +// Used by: common.proto +message CMsgSteamDatagramLinkLifetimeStats { + optional uint32 connected_seconds = 2; + optional uint64 packets_sent = 3; + optional uint64 kb_sent = 4; + optional uint64 packets_recv = 5; + optional uint64 kb_recv = 6; + optional uint64 packets_recv_sequenced = 7; + optional uint64 packets_recv_dropped = 8; + optional uint64 packets_recv_out_of_order = 9; + optional uint64 packets_recv_duplicate = 10; + optional uint64 packets_recv_lurch = 11; + repeated uint64 multipath_packets_recv_sequenced = 12; + repeated uint64 multipath_packets_recv_later = 13; + optional uint32 multipath_send_enabled = 14; + optional uint64 packets_recv_out_of_order_corrected = 15; + optional uint32 quality_histogram_100 = 21; + optional uint32 quality_histogram_99 = 22; + optional uint32 quality_histogram_97 = 23; + optional uint32 quality_histogram_95 = 24; + optional uint32 quality_histogram_90 = 25; + optional uint32 quality_histogram_75 = 26; + optional uint32 quality_histogram_50 = 27; + optional uint32 quality_histogram_1 = 28; + optional uint32 quality_histogram_dead = 29; + optional uint32 quality_ntile_2nd = 30; + optional uint32 quality_ntile_5th = 31; + optional uint32 quality_ntile_25th = 32; + optional uint32 quality_ntile_50th = 33; + optional uint32 ping_histogram_25 = 41; + optional uint32 ping_histogram_50 = 42; + optional uint32 ping_histogram_75 = 43; + optional uint32 ping_histogram_100 = 44; + optional uint32 ping_histogram_125 = 45; + optional uint32 ping_histogram_150 = 46; + optional uint32 ping_histogram_200 = 47; + optional uint32 ping_histogram_300 = 48; + optional uint32 ping_histogram_max = 49; + optional uint32 ping_ntile_5th = 50; + optional uint32 ping_ntile_50th = 51; + optional uint32 ping_ntile_75th = 52; + optional uint32 ping_ntile_95th = 53; + optional uint32 ping_ntile_98th = 54; + optional uint32 jitter_histogram_negligible = 61; + optional uint32 jitter_histogram_1 = 62; + optional uint32 jitter_histogram_2 = 63; + optional uint32 jitter_histogram_5 = 64; + optional uint32 jitter_histogram_10 = 65; + optional uint32 jitter_histogram_20 = 66; +} + +// Used by: common.proto +message CMsgSteamDatagramP2PRoutingSummary { + optional CMsgSteamNetworkingICESessionSummary ice = 2; + optional CMsgSteamNetworkingP2PSDRRoutingSummary sdr = 3; +} + +// Used by: common.proto +message CMsgSteamNetworkingICESessionSummary { + optional uint32 local_candidate_types = 1; + optional uint32 remote_candidate_types = 2; + optional uint32 initial_route_kind = 3; + optional uint32 initial_ping = 4; + optional uint32 negotiation_ms = 5; + optional uint32 initial_score = 6; + optional uint32 failure_reason_code = 7; + optional uint32 selected_seconds = 12; + optional uint32 user_settings = 13; + optional uint32 ice_enable_var = 14; + optional uint32 local_candidate_types_allowed = 15; + optional uint32 best_route_kind = 16; + optional uint32 best_ping = 17; + optional uint32 best_score = 18; + optional uint32 best_time = 19; +} + +// Used by: common.proto +message CMsgSteamNetworkingP2PSDRRoutingSummary { + optional uint32 initial_ping = 1; + optional uint32 initial_ping_front_local = 2; + optional uint32 initial_ping_front_remote = 3; + optional uint32 initial_score = 4; + optional fixed32 initial_pop_local = 5; + optional fixed32 initial_pop_remote = 6; + optional uint32 negotiation_ms = 7; + optional uint32 selected_seconds = 8; + optional uint32 best_ping = 11; + optional uint32 best_ping_front_local = 12; + optional uint32 best_ping_front_remote = 13; + optional uint32 best_score = 14; + optional fixed32 best_pop_local = 15; + optional fixed32 best_pop_remote = 16; + optional uint32 best_time = 17; +} + +message CMsgSwapControllerSourceModes { + optional string action_set_key_a = 1; + optional string action_set_layer_key_a = 2; + optional int32 source_a = 3 [(webui.description) = "enum"]; + optional string action_set_key_b = 4; + optional string action_set_layer_key_b = 5; + optional int32 source_b = 6 [(webui.description) = "enum"]; +} + +message CMsgSwapModeInputBindings { + optional string action_set_key = 1; + optional string action_set_layer_key = 2; + optional int32 source_binding_key = 3 [(webui.description) = "enum"]; + optional bool mode_shift = 4; + optional int32 modeid = 5; + repeated CMsgSwapModeInputBindings_CModeInputSwap swaps = 6; +} + +// Used by: common.proto +message CMsgSwapModeInputBindings_CModeInputSwap { + optional int32 old_key = 1 [(webui.description) = "enum"]; + optional int32 new_key = 2 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CMsgSystemAudioManagerDevice { + optional CMsgSystemAudioManagerObject base = 1; + optional string name = 2; + optional string nick = 3; + optional string description = 4; + optional string api = 5; +} + +// Used by: common.proto +message CMsgSystemAudioManagerLink { + optional CMsgSystemAudioManagerObject base = 1; + optional uint32 output_node_id = 2; + optional uint32 output_port_id = 3; + optional uint32 input_node_id = 4; + optional uint32 input_port_id = 5; +} + +// Used by: common.proto +message CMsgSystemAudioManagerNode { + optional CMsgSystemAudioManagerObject base = 1; + optional uint32 device_id = 2; + optional string name = 3; + optional string nick = 4; + optional string description = 5; + optional int32 edirection = 6 [(webui.description) = "enum"]; + optional CMsgSystemAudioVolume volume = 7; +} + +// Used by: common.proto +message CMsgSystemAudioManagerObject { + optional uint32 id = 1; + optional fixed32 rtime_last_update = 2; +} + +// Used by: common.proto +message CMsgSystemAudioManagerPort { + optional CMsgSystemAudioManagerObject base = 1; + optional uint32 node_id = 3; + optional string name = 4; + optional string alias = 5; + optional int32 etype = 6 [(webui.description) = "enum"]; + optional int32 edirection = 7 [(webui.description) = "enum"]; + optional bool is_physical = 8; + optional bool is_terminal = 9; + optional bool is_control = 10; + optional bool is_monitor = 11; +} + +message CMsgSystemAudioManagerState { + optional fixed32 rtime_filter = 1; + optional int32 counter = 2; + optional CMsgSystemAudioManagerStateHW hw = 3; +} + +// Used by: common.proto +message CMsgSystemAudioManagerStateHW { + repeated CMsgSystemAudioManagerDevice devices = 1; + repeated CMsgSystemAudioManagerNode nodes = 2; + repeated CMsgSystemAudioManagerPort ports = 3; + repeated CMsgSystemAudioManagerLink links = 4; +} + +message CMsgSystemAudioManagerUpdateSomething { + optional int32 counter = 1; +} + +// Used by: common.proto +message CMsgSystemAudioVolume { + repeated CMsgSystemAudioVolume_ChannelEntry entries = 1; + optional bool is_muted = 2; +} + +// Used by: common.proto +message CMsgSystemAudioVolume_ChannelEntry { + optional int32 echannel = 1 [(webui.description) = "enum"]; + optional float volume = 2; +} + +// Used by: common.proto +message CMsgSystemDisplay { + optional int32 id = 1; + optional string name = 2; + optional string description = 3; + optional bool is_primary = 4; + optional bool is_enabled = 5; + optional bool is_internal = 6; + optional bool has_mode_override = 7; + optional int32 width_mm = 8; + optional int32 height_mm = 9; + optional int32 current_mode_id = 10; + repeated CMsgSystemDisplayMode modes = 11; + optional int32 refresh_rate_min = 12; + optional int32 refresh_rate_max = 13; + optional bool is_vrr_capable = 14; + optional bool is_vrr_output_active = 15; + optional bool is_hdr_capable = 16; + optional bool is_hdr_output_active = 17; + repeated int32 supported_refresh_rates = 18; + optional int32 rgb_range = 19 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CMsgSystemDisplayManagerGameResolution { + optional uint32 width = 1; + optional uint32 height = 2; +} + +message CMsgSystemDisplayManagerSetMode { + optional int32 display_id = 1; + optional int32 mode_id = 2; + optional int32 rgb_range = 3 [(webui.description) = "enum"]; +} + +message CMsgSystemDisplayManagerState { + repeated CMsgSystemDisplay displays = 1; + optional bool is_mode_switching_supported = 2; + optional int32 compatibility_mode = 3 [(webui.description) = "enum"]; + optional CMsgSystemDisplayManagerGameResolution game_resolution_override_native = 4; + optional CMsgSystemDisplayManagerGameResolution game_resolution_override_default = 5; +} + +// Used by: common.proto +message CMsgSystemDisplayMode { + optional int32 id = 1; + optional int32 width = 2; + optional int32 height = 3; + optional int32 refresh_hz = 4; +} + +message CMsgSystemDockState { + optional CMsgSystemDockUpdateState update_state = 1; +} + +message CMsgSystemDockUpdateFirmware { + optional bool check_only = 1; +} + +// Used by: common.proto +message CMsgSystemDockUpdateState { + optional int32 state = 1 [(webui.description) = "enum"]; + optional fixed32 rtime_last_checked = 2; + optional string version_current = 3; + optional string version_available = 4; + optional float stage_progress = 5; + optional fixed32 rtime_estimated_completion = 6; + optional int32 old_fw_workaround = 7; +} + +message CMsgSystemManagerSettings { + optional float idle_backlight_dim_battery_seconds = 1; + optional float idle_backlight_dim_ac_seconds = 2; + optional bool is_adaptive_brightness_available = 6; + optional bool display_adaptive_brightness_enabled = 7; + optional bool display_nightmode_enabled = 10; + optional float display_nightmode_tintstrength = 11; + optional float display_nightmode_maxhue = 12; + optional float display_nightmode_maxsat = 13; + optional float display_nightmode_uiexp = 14; + optional float display_nightmode_blend = 15; + optional bool display_nightmode_reset = 16; + optional bool display_nightmode_schedule_enabled = 17; + optional float display_nightmode_schedule_starttime = 18; + optional float display_nightmode_schedule_endtime = 19; + optional bool display_diagnostics_enabled = 20; + optional float als_lux_primary = 21; + optional float als_lux_median = 22; + optional float display_backlight_raw = 23; + optional float display_brightness_adaptivemin = 24; + optional float display_brightness_adaptivemax = 25; + optional bool is_fan_control_available = 27; + optional int32 fan_control_mode = 28 [(webui.description) = "enum"]; + optional bool is_display_brightness_available = 29; + optional bool is_display_colormanagement_available = 31; + optional float display_colorgamut = 32; + optional float als_lux_alternate = 33; + optional bool is_display_colortemp_available = 34; + optional float display_colortemp = 35; + optional float display_colortemp_default = 36; + optional bool display_colortemp_enabled = 37; + optional int32 display_colorgamut_labelset = 38 [(webui.description) = "enum"]; + optional float display_brightness_overdrive_hdr_split = 39; +} + +// Used by: common.proto +message CMsgSystemPerfDiagnosticEntry { + optional string name = 1; + optional string value = 2; +} + +message CMsgSystemPerfDiagnosticInfo { + repeated CMsgSystemPerfDiagnosticEntry entries = 1; + repeated CMsgSystemPerfNetworkInterface interfaces = 2; + optional float battery_temp_c = 3; +} + +// Used by: common.proto +message CMsgSystemPerfLimits { + optional int32 cpu_governor_manual_min_mhz = 1; + optional int32 cpu_governor_manual_max_mhz = 2; + optional int32 fsr_sharpness_min = 3; + optional int32 fsr_sharpness_max = 4; + optional bool perf_overlay_is_standalone = 7; + optional bool is_manual_display_refresh_rate_available = 9; + optional int32 display_refresh_manual_hz_min = 11; + optional int32 display_refresh_manual_hz_max = 12; + repeated int32 fps_limit_options = 13; + optional int32 tdp_limit_min = 14; + optional int32 tdp_limit_max = 15; + optional int32 display_external_refresh_manual_hz_min = 19; + optional int32 display_external_refresh_manual_hz_max = 20; + repeated int32 fps_limit_options_external = 21; + optional bool is_vrr_supported = 23; + optional bool is_dynamic_refresh_rate_in_steam_supported = 24; + repeated int32 split_scaling_filters_available = 26 [(webui.description) = "enum"]; + repeated int32 split_scaling_scalers_available = 27 [(webui.description) = "enum"]; + optional bool disable_refresh_rate_management = 30; +} + +// Used by: common.proto +message CMsgSystemPerfNetworkInterface { + optional string name = 1; + optional double timestamp = 2; + optional int64 tx_bytes_total = 3; + optional int64 rx_bytes_total = 4; + optional int32 tx_bytes_per_sec = 5; + optional int32 rx_bytes_per_sec = 6; +} + +// Used by: common.proto +message CMsgSystemPerfSettings { + optional CMsgSystemPerfSettingsGlobal global = 1; + optional CMsgSystemPerfSettingsPerApp per_app = 2; +} + +// Used by: common.proto +message CMsgSystemPerfSettingsGlobal { + optional float diagnostic_update_rate = 1; + optional int32 graphics_profiling_service_state = 3 [(webui.description) = "enum"]; + optional int32 perf_overlay_service_state = 4 [(webui.description) = "enum"]; + optional int32 perf_overlay_level = 5 [(webui.description) = "enum"]; + optional bool is_show_perf_overlay_over_steam_enabled = 6; + optional bool is_advanced_settings_enabled = 7; + optional bool allow_external_display_refresh_control = 8; + optional int32 hdr_on_sdr_tonemap_operator = 12 [(webui.description) = "enum"]; + optional bool is_hdr_debug_heatmap_enabled = 13; + optional bool force_hdr_wide_gammut_for_sdr = 15 [default = true]; + optional bool is_color_management_enabled = 21; + optional float sdr_to_hdr_brightness = 22; +} + +// Used by: common.proto +message CMsgSystemPerfSettingsPerApp { + optional int32 fps_limit = 2; + optional bool is_variable_resolution_enabled = 3; + optional bool is_dynamic_refresh_rate_enabled = 4; + optional int32 tdp_limit = 5; + optional int32 cpu_governor = 6 [(webui.description) = "enum"]; + optional int32 cpu_governor_manual_mhz = 7; + optional int32 scaling_filter = 8; + optional int32 fsr_sharpness = 9; + optional bool is_fps_limit_enabled = 10; + optional bool is_tdp_limit_enabled = 11; + optional bool is_low_latency_mode_enabled = 12; + optional int32 display_refresh_manual_hz = 13; + optional bool is_game_perf_profile_enabled = 14; + optional int32 display_external_refresh_manual_hz = 17; + optional int32 fps_limit_external = 18; + optional bool is_tearing_enabled = 19; + optional bool is_vrr_enabled = 20; + optional bool use_dynamic_refresh_rate_in_steam = 23; + optional int32 split_scaling_filter = 24 [(webui.description) = "enum"]; + optional int32 split_scaling_scaler = 25 [(webui.description) = "enum"]; +} + +message CMsgSystemPerfState { + optional CMsgSystemPerfLimits limits = 1; + optional CMsgSystemPerfSettings settings = 2; + optional uint64 current_game_id = 3; + optional uint64 active_profile_game_id = 4; +} + +message CMsgSystemPerfUpdateSettings { + optional uint64 gameid = 1; + optional bool reset_to_default = 2; + optional CMsgSystemPerfSettings settings_delta = 3; + optional bool skip_storage_update = 4; +} + +message CMsgSystemUpdateApplyParams { + repeated int32 apply_types = 1 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CMsgSystemUpdateApplyResult { + optional int32 type = 1 [(webui.description) = "enum"]; + optional uint32 eresult = 2 [default = 2]; + optional bool requires_client_restart = 3 [default = false]; + optional bool requires_system_restart = 4 [default = false]; +} + +// Used by: common.proto +message CMsgSystemUpdateCheckResult { + optional int32 type = 1 [(webui.description) = "enum"]; + optional uint32 eresult = 2 [default = 2]; + optional fixed32 rtime_checked = 3; + optional bool available = 4; + optional string version = 5; + optional string auto_message = 6; + optional bool system_restart_pending = 7; +} + +// Used by: common.proto +message CMsgSystemUpdateProgress { + optional float stage_progress = 1; + optional int64 stage_size_bytes = 2; + optional fixed32 rtime_estimated_completion = 3; +} + +message CMsgSystemUpdateState { + optional int32 state = 1 [(webui.description) = "enum"]; + optional CMsgSystemUpdateProgress progress = 2; + repeated CMsgSystemUpdateCheckResult update_check_results = 3; + repeated CMsgSystemUpdateApplyResult update_apply_results = 4; + optional bool supports_os_updates = 5; +} + +message CMsgWebUITransportFailure { + optional uint32 connect_count = 1; +} + +message CProductImpressionsFromClient_Notification { + repeated CProductImpressionsFromClient_Notification_Impression impressions = 1; +} + +// Used by: common.proto +message CProductImpressionsFromClient_Notification_Impression { + optional int32 type = 1 [(webui.description) = "enum"]; + optional uint32 appid = 2; + optional uint32 num_impressions = 3; +} + +message CRemotePlay_SessionStopped_Notification { + optional fixed64 record_id = 1; + optional bool used_x264 = 2; + optional bool used_h264 = 3; + optional bool used_hevc = 4; +} + +message CSteamVR_AudioSettings_ChangeSettings_Request { + optional CSteamVR_AudioSettings_Settings settings = 1; +} + +message CSteamVR_AudioSettings_RegisterForSettings_Request { +} + +// Used by: common.proto +message CSteamVR_AudioSettings_Settings { + optional CSteamVR_AudioSettings_Settings_Channel main = 1; + optional CSteamVR_AudioSettings_Settings_Channel audio_mirror = 2; + optional CSteamVR_AudioSettings_Settings_Channel microphone = 3; +} + +// Used by: common.proto +message CSteamVR_AudioSettings_Settings_Channel { + optional bool available = 1; + optional bool muted = 2; + optional float volume = 3; +} + +message CSteamVR_AudioSettings_SettingsChanged_Notification { + optional CSteamVR_AudioSettings_Settings settings = 1; +} + +message CSteamVR_Header { + optional int32 type = 1 [(webui.description) = "enum"]; + optional uint32 id = 2; +} + +// Used by: common.proto +message CSteamVR_LinkInfo { + optional int32 type = 1 [(webui.description) = "enum"]; + optional int32 quality = 2 [(webui.description) = "enum"]; + optional float p100 = 3; + optional float loss_ratio = 4; +} + +message CSteamVR_MultiLinkStatusUpdate_Message { + repeated CSteamVR_LinkInfo links = 1; +} + +message CSteamVR_OverlayInputFocusChanged_Message { + optional string overlay_key = 1; + optional uint32 flags = 2; +} + +message CSteamVR_PushOverlayInputFocus_Message { + optional string steam_overlay_key = 1; +} + +message CSteamVR_Settings_SetValue_Request { + optional string section = 1; + optional string settings_key = 2; + optional bool bool = 3; + optional int32 int = 4; + optional float float = 5; + optional string string = 6; +} + +// Used by: common.proto +message CSteamVR_Vector3 { + optional float x = 1; + optional float y = 2; + optional float z = 3; +} + +message CSteamVR_VoiceChat_Active_Notification { +} + +message CSteamVR_VoiceChat_ConfigureVideo_Request { + optional bool send = 1; + optional bool receive = 2; +} + +message CSteamVR_VoiceChat_ConfigureVideo_Response { +} + +message CSteamVR_VoiceChat_ExitRoomChat_Request { + optional uint64 chat_group_id = 1; + optional uint64 chat_room_id = 2; +} + +message CSteamVR_VoiceChat_ExitRoomChat_Response { +} + +message CSteamVR_VoiceChat_GetAvatarUrl_Request { + optional fixed64 profile_steamid = 1; + optional int32 avatar_type = 2 [(webui.description) = "enum"]; +} + +message CSteamVR_VoiceChat_GetAvatarUrl_Response { + optional string profile_avatar_url = 1; +} + +message CSteamVR_VoiceChat_GroupName_Notification { + optional string name = 1; +} + +message CSteamVR_VoiceChat_Inactive_Notification { +} + +message CSteamVR_VoiceChat_InitiateRoomChat_Request { + optional uint64 chat_group_id = 1; + optional uint64 chat_room_id = 2; +} + +message CSteamVR_VoiceChat_InitiateRoomChat_Response { +} + +message CSteamVR_VoiceChat_NewGroupChatMsgAdded_Notification { + optional uint64 chat_group_id = 1; + optional uint64 chat_room_id = 2; + optional uint32 sender_accountid = 3; + optional uint32 timestamp = 4; + optional uint32 ordinal = 5; + optional string message = 6; +} + +message CSteamVR_VoiceChat_PerUserGainValue_Notification { + optional uint32 accountid = 1; + optional bool muted = 2; + optional float gain = 3; +} + +message CSteamVR_VoiceChat_PerUserVoiceStatus_Notification { + optional uint32 accountid = 1; + optional bool mic_muted_locally = 2; + optional bool output_muted_locally = 3; +} + +message CSteamVR_VoiceChat_Ready_Notification { +} + +message CSteamVR_VoiceChat_SendGroupChatMessage_Request { + optional string message_with_bbcode = 1; +} + +message CSteamVR_VoiceChat_SendGroupChatMessage_Response { +} + +message CSteamVR_VoiceChat_SetDefaultSession_Notification { + optional uint64 chat_group_id = 1; + optional uint64 chat_room_id = 2; +} + +message CSteamVR_VoiceChat_SetPerUserMuting_Request { + optional uint32 accountid = 1; + optional bool muted = 2; +} + +message CSteamVR_VoiceChat_SetPerUserMuting_Response { +} + +message CSteamVR_VoiceChat_SetPerUserVideo_Request { + optional uint32 accountid = 1; + optional bool receive = 2; +} + +message CSteamVR_VoiceChat_SetPerUserVideo_Response { +} + +message CSteamVR_VoiceChat_SetSpatialAudioListener_Notification { + optional CSteamVR_Vector3 position = 1; + optional CSteamVR_Vector3 forward = 2; + optional CSteamVR_Vector3 up = 3; +} + +message CSteamVR_VoiceChat_SetSpatialAudioSource_Notification { + optional fixed64 steamid = 1; + optional CSteamVR_Vector3 position = 2; +} + +message CSteamVR_VRGamepadUI_Message { + optional bytes header = 1; + optional bytes payload = 2; +} + +message CSteamVR_WebRTC_Active_Notification { +} + +message CSteamVR_WebRTC_CloseDataChannel_Request { + optional uint32 channel_id = 1; +} + +message CSteamVR_WebRTC_CloseDataChannel_Response { +} + +message CSteamVR_WebRTC_CreateDataChannel_Request { + optional string label = 1; + optional bool ordered = 2; + optional uint32 max_retransmits = 3; + optional uint32 max_packet_life_time = 4; +} + +message CSteamVR_WebRTC_CreateDataChannel_Response { + optional uint32 channel_id = 1; +} + +message CSteamVR_WebRTC_DataChannel_Close_Notification { + optional uint32 channel_id = 1; +} + +message CSteamVR_WebRTC_DataChannel_Error_Notification { + optional uint32 channel_id = 1; + optional string reason = 2; +} + +message CSteamVR_WebRTC_DataChannel_Message_Notification { + optional uint32 channel_id = 1; + optional bytes data = 2; +} + +message CSteamVR_WebRTC_DataChannel_Open_Notification { + optional uint32 channel_id = 1; +} + +message CSteamVR_WebRTC_Inactive_Notification { +} + +message CSteamVR_WebRTC_OnDataChannel_Notification { + optional fixed64 source_steamid = 1; + optional uint32 channel_id = 2; + optional string label = 3; +} + +// Used by: PartnerStoreBrowse, StoreBrowse +message CStoreBrowse_GetItems_Request { + repeated StoreItemID ids = 1; + optional StoreBrowseContext context = 2; + optional StoreBrowseItemDataRequest data_request = 3; +} + +// Used by: PartnerStoreBrowse, StoreBrowse +message CStoreBrowse_GetItems_Response { + repeated StoreItem store_items = 1; +} + +// Used by: Store, StoreBrowse, StoreQuery +message CStorePageFilter { + optional CStorePageFilter_SalePageFilter sale_filter = 1; + optional CStorePageFilter_ContentHubFilter content_hub_filter = 2; + repeated CStorePageFilter_StoreFilter store_filters = 3; +} + +// Used by: Store, StoreBrowse, StoreQuery +message CStorePageFilter_ContentHubFilter { + optional string hub_type = 1; + optional string hub_category = 2; + optional uint32 hub_tagid = 3; + optional int32 discount_filter = 4 [(webui.description) = "enum"]; + optional CStorePageFilter_ContentHubFilter_OptInInfo optin = 5; +} + +// Used by: Store, StoreBrowse, StoreQuery +message CStorePageFilter_ContentHubFilter_OptInInfo { + optional string name = 1; + optional uint32 optin_tagid = 2; + optional uint32 prune_tagid = 3; + optional bool optin_only = 4; +} + +// Used by: Store, StoreBrowse, StoreQuery +message CStorePageFilter_SalePageFilter { + optional uint32 sale_tagid = 1; + optional uint32 creator_clan_account_id = 2; +} + +// Used by: Store, StoreBrowse, StoreQuery +message CStorePageFilter_StoreFilter { + optional string filter_json = 1; + optional string cache_key = 2; +} + +message CStreamingClientCaps { + optional string system_info = 1; + optional bool system_can_suspend = 2; + optional int32 maximum_decode_bitrate_kbps = 3; + optional int32 maximum_burst_bitrate_kbps = 4; + optional bool supports_video_hevc_OBSOLETE = 5; + optional bool disable_steam_store = 6; + optional bool disable_client_cursor = 7; + optional bool disable_intel_hardware_encoding = 8; + optional bool disable_amd_hardware_encoding = 9; + optional bool disable_nvidia_hardware_encoding = 10; + optional int32 form_factor = 11; + optional bool has_on_screen_keyboard = 12; + repeated int32 supported_colorspaces = 13 [(webui.description) = "enum"]; + repeated int32 supported_audio_codecs = 14 [(webui.description) = "enum"]; + repeated int32 supported_video_codecs = 15 [(webui.description) = "enum"]; + optional bool can_toggle_fullscreen = 16; +} + +message CStreamingClientConfig { + optional int32 quality = 1 [default = 2, (webui.description) = "enum"]; + optional uint32 desired_resolution_x = 2; + optional uint32 desired_resolution_y = 3; + optional uint32 desired_framerate_numerator = 4; + optional uint32 desired_framerate_denominator = 5; + optional int32 desired_bitrate_kbps = 6 [default = -1]; + optional bool enable_hardware_decoding = 7 [default = true]; + optional bool enable_performance_overlay = 8 [default = false]; + optional bool enable_video_streaming = 9 [default = true]; + optional bool enable_audio_streaming = 10 [default = true]; + optional bool enable_input_streaming = 11 [default = true]; + optional int32 audio_channels = 12 [default = 2]; + optional bool enable_video_hevc = 13 [default = false]; + optional bool enable_performance_icons = 14 [default = true]; + optional bool enable_microphone_streaming = 15 [default = false]; + optional string controller_overlay_hotkey = 16; + optional bool enable_touch_controller_OBSOLETE = 17 [default = false]; + optional int32 p2p_scope = 19 [default = 0, (webui.description) = "enum"]; + optional bool enable_audio_uncompressed = 20 [default = false]; + optional CStreamVideoLimit display_limit = 21; + optional CStreamVideoLimit quality_limit = 22; + optional CStreamVideoLimit runtime_limit = 23; + repeated CStreamVideoLimit decoder_limit = 24; + optional bool enable_unreliable_fec = 25 [default = false]; + optional bool enable_video_av1 = 26 [default = false]; + optional bool windowed = 27; + optional float window_pixel_density = 28; + optional int32 window_width = 29; + optional int32 window_height = 30; + optional int32 window_position_x = 31; + optional int32 window_position_y = 32; + optional int32 window_frame_offset_x = 33; + optional int32 window_frame_offset_y = 34; + optional bool enable_video_pyrowave = 35 [default = false]; +} + +message CStreamingServerConfig { + optional int32 host_play_audio = 1 [(webui.description) = "enum"]; + optional string custom_display_device = 2; + optional int32 display_resolution_setting = 3 [(webui.description) = "enum"]; + optional int32 custom_display_resolution_x = 4; + optional int32 custom_display_resolution_y = 5; + optional int32 display_refresh_rate_setting = 6 [(webui.description) = "enum"]; + optional string custom_display_refresh_rate = 7; + optional int32 display_hdr_setting = 8 [(webui.description) = "enum"]; + optional bool custom_display_hdr = 9; + optional bool enable_capture_nvfbc = 10; + optional bool enable_hardware_encoding = 11; + optional int32 software_encoding_threads = 12; + optional bool enable_traffic_priority = 13; +} + +// Used by: common.proto +message CStreamVideoLimit { + optional int32 codec = 1 [(webui.description) = "enum"]; + optional CStreamVideoMode mode = 2; + optional int32 bitrate_kbps = 3; + optional int32 burst_bitrate_kbps = 4; +} + +// Used by: common.proto +message CStreamVideoMode { + optional uint32 width = 1; + optional uint32 height = 2; + optional uint32 refresh_rate = 3; + optional uint32 refresh_rate_numerator = 4; + optional uint32 refresh_rate_denominator = 5; +} + +// Used by: Test_TransportError, TransportValidation +message CTransportValidation_AppendToString_Request { + repeated string append_strings = 1; +} + +// Used by: Test_TransportError, TransportValidation +message CTransportValidation_AppendToString_Response { + optional string combined_text = 1; +} + +// Used by: AccountCart, Wishlist +message CUserInterface_CuratorData { + optional uint32 clanid = 1; + optional uint64 listid = 2; +} + +// Used by: AccountCart, Wishlist +message CUserInterface_NavData { + optional string domain = 1; + optional string controller = 2; + optional string method = 3; + optional string submethod = 4; + optional string feature = 5; + optional uint32 depth = 6; + optional string countrycode = 7; + optional uint64 webkey = 8; + optional bool is_client = 9; + optional CUserInterface_CuratorData curator_data = 10; + optional bool is_likely_bot = 11; + optional bool is_utm = 12; +} + +// Used by: GameRecordingClip, VideoClip +message CVideo_GameRecordingSegmentInfo { + optional uint32 segment_number = 1; + optional uint64 segment_size_bytes = 2; + optional string component_name = 3; + optional string representation_name = 4; +} + +message CVirtualMenuCreateDestroy { + optional bool created = 1; + optional uint32 controller_idx = 2; + optional uint32 menu_idx = 3; + optional uint32 source = 4; + optional float x_position = 5; + optional float y_position = 6; + optional float opacity = 7; + optional float scale = 8; + optional bool show_labels = 9; + optional bool force_on = 10; + optional uint32 appID = 11; + optional uint32 menu_style = 12; + repeated CVirtualMenuCreateDestroy_TouchMenuKey popup_keys = 13; +} + +// Used by: common.proto +message CVirtualMenuCreateDestroy_TouchMenuKey { + optional uint32 key_idx = 1; + optional bool bound = 2; + optional bool placeholder = 3; + optional uint32 binding_type = 4; + optional float x = 5; + optional float y = 6; + optional float width = 7; + optional float height = 8; + optional string description = 9; + optional string label = 10; + optional string glyph_path = 11; + optional string icon_filename = 12; + optional string color_foreground = 13; + optional string color_background = 14; + optional uint32 quandrants = 15; +} + +// Used by: common.proto +message CVirtualMenuKey { + optional uint32 key_index = 1; + optional bool bound = 2; + optional float x = 3; + optional float y = 4; + optional float width = 5; + optional float height = 6; + optional string description = 7; + optional string label = 8; + optional string glyph_path = 9; + optional string icon_filename = 10; + optional string color_foreground = 11; + optional string color_background = 12; + optional uint32 quadrants = 13; + optional uint32 binding_type = 14; +} + +// Used by: common.proto +message CVRGamepadUI_Frame { + optional uint32 frame_id = 1; + optional CVRGamepadUI_Frame_FrameMenu menu = 2; + repeated CVRGamepadUIShared_Action action_definitions = 3; + optional CVRGamepadUI_Frame_FrameControls controls = 4; + optional bool is_vrlink_remote = 5; + optional CVRGamepadUI_Frame_FrameActions frame_actions = 6; + repeated string steamui_page_overlay_keys = 7; + optional bool is_streaming_client = 8; + optional int32 dock_location = 9 [(webui.description) = "enum"]; + optional string tmp_title = 1000; +} + +// Used by: common.proto +message CVRGamepadUI_Frame_FrameActions { + optional uint32 focus_main_panel_action = 1; + optional uint32 focus_left_frame_menu_action = 2; +} + +// Used by: common.proto +message CVRGamepadUI_Frame_FrameControls { + repeated CVRGamepadUI_Frame_FrameControls_Item items_for_bottom_frame_controls = 1; + repeated CVRGamepadUI_Frame_FrameControls_Item items_for_tab_hover_menu = 2; +} + +// Used by: common.proto +message CVRGamepadUI_Frame_FrameControls_Item { + optional int32 type = 1 [(webui.description) = "enum"]; + optional uint32 action_id = 2; +} + +// Used by: common.proto +message CVRGamepadUI_Frame_FrameMenu { + repeated CVRGamepadUI_Frame_FrameMenu_Item items_for_left_frame_menu = 1; + repeated CVRGamepadUI_Frame_FrameMenu_Item items_for_tab_hover_menu = 2; +} + +// Used by: common.proto +message CVRGamepadUI_Frame_FrameMenu_Item { + optional int32 type = 1 [(webui.description) = "enum"]; + optional uint32 action_id = 2; + optional CVRGamepadUI_Frame_FrameMenu_Item_SteamMainMenuOptions steam_main_menu_options = 3; + optional CVRGamepadUI_Frame_FrameMenu_Item_SteamGameInfo steam_game_info = 4; + optional CVRGamepadUI_Frame_FrameMenu_Item_SteamGameWindowItemsOptions steam_game_window_item_options = 5; +} + +// Used by: common.proto +message CVRGamepadUI_Frame_FrameMenu_Item_SteamGameInfo { + optional uint32 app_id = 1; +} + +// Used by: common.proto +message CVRGamepadUI_Frame_FrameMenu_Item_SteamGameWindowItemsOptions { + optional bool show_for_single_window = 1; +} + +// Used by: common.proto +message CVRGamepadUI_Frame_FrameMenu_Item_SteamMainMenuOptions { + optional bool allow_show_as_active = 1; +} + +message CVRGamepadUI_Message_DashboardActionInvoked_Request { + optional uint32 action_id = 1; + optional bool toggle_value = 2; +} + +message CVRGamepadUI_Message_DashboardActionInvoked_Response { +} + +message CVRGamepadUI_Message_DashboardDesktopWindowClicked_Request { + optional uint32 window_id = 1; +} + +message CVRGamepadUI_Message_DashboardDesktopWindowClicked_Response { +} + +message CVRGamepadUI_Message_DashboardTabClicked_Request { + optional uint32 tab_id = 1; +} + +message CVRGamepadUI_Message_DashboardTabClicked_Response { +} + +message CVRGamepadUI_Message_Error_Response { + optional int32 error_code = 1 [(webui.description) = "enum"]; + optional string error_description = 2; + optional int32 origin = 3 [(webui.description) = "enum"]; + optional bool was_transmitted = 4; +} + +message CVRGamepadUI_Message_ExecuteSteamURL_Request { + optional string url = 1; +} + +message CVRGamepadUI_Message_ExecuteSteamURL_Response { +} + +message CVRGamepadUI_Message_FocusDashboardBar_Request { +} + +message CVRGamepadUI_Message_FocusDashboardBar_Response { +} + +message CVRGamepadUI_Message_GetAppIcon_Request { + optional uint32 app_id = 1; +} + +message CVRGamepadUI_Message_GetAppIcon_Response { + optional string icon_url = 1; +} + +message CVRGamepadUI_Message_Header { + optional string name = 1; + optional uint32 message_id = 2; + optional uint32 response_to_message_id = 3; + optional bool is_error_response = 4; +} + +message CVRGamepadUI_Message_HideDashboardPopup_Request { + optional uint32 dashboard_popup_id = 1; +} + +message CVRGamepadUI_Message_HideDashboardPopup_Response { +} + +message CVRGamepadUI_Message_InitFrameSystem_Request { +} + +message CVRGamepadUI_Message_InitFrameSystem_Response { +} + +message CVRGamepadUI_Message_NavigateInstance_Request { + optional uint32 navigate_overlay_for_app_id = 1; + optional int32 location = 2 [(webui.description) = "enum"]; +} + +message CVRGamepadUI_Message_NavigateInstance_Response { +} + +message CVRGamepadUI_Message_RemoteVideoStream_Request { + optional uint32 source_accountid = 1; + optional string video_uniqueid = 2; +} + +message CVRGamepadUI_Message_RemoteVideoStream_Response { +} + +message CVRGamepadUI_Message_ReportVRPanelErrorBoundaryError_Request { + optional string error_name = 1; + optional string error_message_with_stack = 2; +} + +message CVRGamepadUI_Message_ReportVRPanelErrorBoundaryError_Response { +} + +message CVRGamepadUI_Message_RequestAppQuit_Request { + optional uint32 app_id = 1; +} + +message CVRGamepadUI_Message_RequestAppQuit_Response { + optional int32 result = 1 [(webui.description) = "enum"]; +} + +message CVRGamepadUI_Message_ResetHMDPerfSettings_Request { +} + +message CVRGamepadUI_Message_ResetHMDPerfSettings_Response { +} + +message CVRGamepadUI_Message_ResetHMDSettings_Request { +} + +message CVRGamepadUI_Message_ResetHMDSettings_Response { +} + +message CVRGamepadUI_Message_SetCurrentLanguage_Request { + optional string language = 1; +} + +message CVRGamepadUI_Message_SetCurrentLanguage_Response { +} + +message CVRGamepadUI_Message_SetDisplayBrightness_Request { + optional float user_brightness_value = 1; +} + +message CVRGamepadUI_Message_SetDisplayBrightness_Response { +} + +message CVRGamepadUI_Message_SetHMDSettings_Request { + optional float user_brightness_value = 1; + optional float refresh_rate_value = 2; + optional bool supersample_manual_override = 3; + optional float supersample_scale_value = 4; + optional uint32 frames_to_throttle = 5; + optional bool motion_smoothing = 6; + optional string performance_profile_value = 7; + optional bool perf_graph_in_hmd = 8; + optional bool record_vr_stats = 9; + optional bool record_tracking = 10; + optional float env_brightness_construct_theater = 31; + optional float env_brightness_construct_nominal = 32; +} + +message CVRGamepadUI_Message_SetHMDSettings_Response { +} + +message CVRGamepadUI_Message_ShowDashboardPopup_Request { + optional uint32 dashboard_popup_id = 1; + optional string popup_overlay_key = 2; + optional string parent_overlay_key = 3; + optional CVRGamepadUI_Message_ShowDashboardPopup_Request_NormalizedPosition origin_on_parent = 4; + optional CVRGamepadUI_Message_ShowDashboardPopup_Request_NormalizedPosition origin_on_popup = 5; + optional CVRGamepadUI_Message_ShowDashboardPopup_Request_Position offset = 6; + optional CVRGamepadUI_Message_ShowDashboardPopup_Request_Rotation rotation = 7; + optional bool inherit_parent_pitch = 8; + optional bool inherit_parent_curvature = 9; + optional CVRGamepadUI_Message_ShowDashboardPopup_Request_Rect clip_rect = 10; + optional bool interactive = 11; + optional bool only_visible_with_laser = 12; + optional string parent_device_path = 13; + optional int32 sort_order = 14 [(webui.description) = "enum"]; + optional int32 parent_enum = 15 [(webui.description) = "enum"]; + optional int32 special_identifier = 16 [(webui.description) = "enum"]; + optional CVRGamepadUI_Message_ShowDashboardPopup_Request_Scale scale = 17; +} + +// Used by: common.proto +message CVRGamepadUI_Message_ShowDashboardPopup_Request_NormalizedPosition { + optional float x = 1; + optional float y = 2; +} + +// Used by: common.proto +message CVRGamepadUI_Message_ShowDashboardPopup_Request_Position { + optional float x_pixels = 1; + optional float y_pixels = 2; + optional float z_pixels = 3; + optional float x_meters = 4; + optional float y_meters = 5; + optional float z_meters = 6; +} + +// Used by: common.proto +message CVRGamepadUI_Message_ShowDashboardPopup_Request_Rect { + optional float u_min = 1; + optional float v_min = 2; + optional float u_max = 3; + optional float v_max = 4; +} + +// Used by: common.proto +message CVRGamepadUI_Message_ShowDashboardPopup_Request_Rotation { + optional float pitch_degrees = 1; + optional float yaw_degrees = 2; +} + +// Used by: common.proto +message CVRGamepadUI_Message_ShowDashboardPopup_Request_Scale { + optional float scaler_value = 1; +} + +message CVRGamepadUI_Message_ShowDashboardPopup_Response { +} + +message CVRGamepadUI_Message_ShowGame_Request { + optional string overlay_key = 1; +} + +message CVRGamepadUI_Message_ShowGame_Response { +} + +message CVRGamepadUI_Message_ShowOverlay_Request { + optional string overlay_key = 1; +} + +message CVRGamepadUI_Message_ShowOverlay_Response { +} + +message CVRGamepadUI_Message_ShowPowerMenu_Request { +} + +message CVRGamepadUI_Message_ShowPowerMenu_Response { +} + +message CVRGamepadUI_Message_UpdateFrameUIs_Request { + repeated CVRGamepadUI_Frame updated_frames = 1; + repeated uint32 deleted_frames = 2; + repeated uint32 shown_frames = 3; + repeated uint32 hidden_frames = 4; +} + +message CVRGamepadUI_Message_UpdateFrameUIs_Response { + repeated CVRGamepadUI_Message_UpdateFrameUIs_Response_FrameUpdateResult results = 1; +} + +// Used by: common.proto +message CVRGamepadUI_Message_UpdateFrameUIs_Response_FrameUpdateResult { + optional uint32 frame_id = 1; + optional uint32 frame_menu_dashboard_popup_id = 2; +} + +// Used by: common.proto +message CVRGamepadUIShared_Action { + optional uint32 action_id = 1; + optional string display_name = 2; + optional int32 invocation = 3 [(webui.description) = "enum"]; + optional CVRGamepadUIShared_Icon icon = 4; + optional CVRGamepadUIShared_Icon icon_active = 5; + optional bool enabled = 6; + optional bool active = 7; +} + +// Used by: common.proto +message CVRGamepadUIShared_DEPRECATED_DashboardActionIcon { + optional int32 enum = 1 [(webui.description) = "enum"]; +} + +// Used by: common.proto +message CVRGamepadUIShared_DEPRECATED_DashboardBarAction { + optional uint32 action_id = 1; + optional bool visible_in_dashboard_bar = 2; + optional bool enabled = 3; + optional string display_name = 4; + optional CVRGamepadUIShared_DEPRECATED_DashboardActionIcon deprecated_icon = 5; + optional CVRGamepadUIShared_DEPRECATED_DashboardActionIcon deprecated_icon_active = 6; + optional int32 invocation = 7 [(webui.description) = "enum"]; + optional bool active = 8; + optional int32 special_invocation = 9 [(webui.description) = "enum"]; + optional bool visible_in_menu = 10; + optional bool is_menu = 11; + optional uint32 parent_menu_action_id = 12; + optional CVRGamepadUIShared_Icon icon = 13; + optional CVRGamepadUIShared_Icon icon_active = 14; +} + +// Used by: common.proto +message CVRGamepadUIShared_DEPRECATED_DashboardTabIcon { + optional int32 enum = 1 [(webui.description) = "enum"]; + optional uint32 appid = 2; + optional string overlay = 3; + optional uint32 hwnd = 4; +} + +// Used by: common.proto +message CVRGamepadUIShared_Icon { + optional int32 enum = 1 [(webui.description) = "enum"]; + optional uint32 appid = 2; + optional string overlay = 3; + optional uint32 hwnd = 4; +} + +message CVRGamepadUIShared_PathProperty_ClientUserInfo { + optional bool logged_in = 1; + optional bool valve_email = 2; + optional bool developer_mode_enabled = 3; +} + +message CVRGamepadUIShared_PathProperty_DashboardBarActions { + repeated CVRGamepadUIShared_DEPRECATED_DashboardBarAction deprecated_actions = 1; + repeated CVRGamepadUIShared_Action defined_actions = 2; + repeated CVRGamepadUIShared_PathProperty_DashboardBarActions_BarButton bar_buttons = 3; + repeated CVRGamepadUIShared_PathProperty_DashboardBarActions_BarMenuItem bar_menu_items = 4; + repeated uint32 playspace_actions = 5; +} + +// Used by: common.proto +message CVRGamepadUIShared_PathProperty_DashboardBarActions_BarButton { + optional int32 type = 1 [(webui.description) = "enum"]; + optional uint32 action_id = 2; + optional bool is_main_hamburger_menu = 3; +} + +// Used by: common.proto +message CVRGamepadUIShared_PathProperty_DashboardBarActions_BarMenuItem { + optional int32 type = 1 [(webui.description) = "enum"]; + optional uint32 parent_menu_action_id = 2; + optional uint32 action_id = 3; +} + +message CVRGamepadUIShared_PathProperty_DashboardState { + optional bool dashboard_bar_visible = 1; + optional bool dashboard_bar_or_child_popup_focused = 2; + optional int32 vrlink_role = 3 [(webui.description) = "enum"]; + optional bool vrlink_unified_dashboard = 4; +} + +message CVRGamepadUIShared_PathProperty_DashboardTabs { + repeated CVRGamepadUIShared_PathProperty_DashboardTabs_Tab tabs = 1; + optional uint32 selected_tab_id = 2; + optional uint32 deprecated_vr_settings_tab_id = 3; + optional uint32 vr_steam_tab_id = 4; +} + +// Used by: common.proto +message CVRGamepadUIShared_PathProperty_DashboardTabs_Tab { + optional uint32 tab_id = 1; + optional bool visible_in_dashboard_bar = 2; + optional string display_name = 3; + optional CVRGamepadUIShared_DEPRECATED_DashboardTabIcon deprecated_icon = 4; + optional bool visible_in_dashboard_bar_hamburger_menu = 5; + optional CVRGamepadUIShared_Icon icon = 6; + optional uint32 associated_frame_id = 7; +} + +message CVRGamepadUIShared_PathProperty_DesktopWindows { + repeated CVRGamepadUIShared_PathProperty_DesktopWindows_Window windows = 1; +} + +// Used by: common.proto +message CVRGamepadUIShared_PathProperty_DesktopWindows_Window { + optional uint32 window_id = 1; + optional uint32 hwnd = 2; + optional string title = 3; + optional uint32 tab_id = 4; +} + +message CVRGamepadUIShared_PathProperty_HMDSettings { + optional float display_brightness_user_value = 1; + optional float display_brightness_min = 2; + optional float display_brightness_max = 3; + optional float display_refresh_rate_value = 4; + repeated float display_refresh_rates_available = 5; + optional bool supersample_manual_override = 10; + optional float supersample_scale_value = 11; + optional float supersample_scale_min = 12; + optional float supersample_scale_max = 13; + optional float supersample_scale_step = 14; + repeated uint32 supersample_effective_resolution = 15; + optional uint32 frames_to_throttle_value = 20; + optional bool motion_smoothing_value = 21; + optional bool env_theater_active = 30; + optional CVRGamepadUIShared_RichFloat env_brightness_construct_theater = 31; + optional CVRGamepadUIShared_RichFloat env_brightness_construct_nominal = 32; + optional string performance_profile_value = 50; + optional bool perf_graph_in_hmd_value = 51; + optional bool record_vr_stats_value = 52; + optional bool record_tracking_value = 53; +} + +message CVRGamepadUIShared_PathProperty_PowerOptions { + optional bool can_sleep = 1; + optional bool can_shutdown = 2; + optional bool can_restart_system = 3; + optional bool can_exitvr = 4; +} + +message CVRGamepadUIShared_PathProperty_RunningApps { + repeated CVRGamepadUIShared_PathProperty_RunningApps_App apps = 1; +} + +// Used by: common.proto +message CVRGamepadUIShared_PathProperty_RunningApps_App { + optional uint32 app_id = 1; + optional uint64 game_id = 2; + optional string display_name = 3; + optional int32 composition_state = 4 [(webui.description) = "enum"]; + optional string app_overlay_overlay_key = 5; +} + +message CVRGamepadUIShared_PathProperty_VRVersionInfo { + optional string version = 1; + optional uint32 webpack_build_timestamp = 2; + optional string hmd_tracking_info = 3; +} + +// Used by: common.proto +message CVRGamepadUIShared_RichFloat { + optional float value = 1; + optional float default = 2; + optional float min = 3; + optional float max = 4; +} + +// Used by: common.proto +message GamePerformanceSettings { + optional int32 setting = 1 [(webui.description) = "enum"]; + optional uint32 game_resolution_width = 2; + optional uint32 game_resolution_height = 3; +} + +// Used by: LoyaltyRewards, SaleItemRewards +message LoyaltyRewardDefinition { + optional uint32 appid = 1; + optional uint32 defid = 2; + optional int32 type = 3 [(webui.description) = "enum"]; + optional int32 community_item_class = 4; + optional uint32 community_item_type = 5; + optional int64 point_cost = 6; + optional uint32 timestamp_created = 7; + optional uint32 timestamp_updated = 8; + optional uint32 timestamp_available = 9; + optional int64 quantity = 10; + optional string internal_description = 11; + optional bool active = 12; + optional LoyaltyRewardDefinition_CommunityItemData community_item_data = 13; + optional uint32 timestamp_available_end = 14; + repeated uint32 bundle_defids = 15; + optional uint32 usable_duration = 16; + optional uint32 bundle_discount = 17; + optional uint32 timestamp_free_until = 18; +} + +// Used by: LoyaltyRewards, SaleItemRewards +message LoyaltyRewardDefinition_BadgeData { + optional int32 level = 1; + optional string image = 2; +} + +// Used by: LoyaltyRewards, SaleItemRewards +message LoyaltyRewardDefinition_CommunityItemData { + optional string item_name = 1; + optional string item_title = 2; + optional string item_description = 3; + optional string item_image_small = 4; + optional string item_image_large = 5; + optional string item_movie_webm = 6; + optional string item_movie_mp4 = 7; + optional bool animated = 8; + repeated LoyaltyRewardDefinition_BadgeData badge_data = 9; + optional string item_movie_webm_small = 10; + optional string item_movie_mp4_small = 11; + optional string profile_theme_id = 12; + optional bool tiled = 13; +} + +message SiteServerUI_CancelLogin_Request { +} + +message SiteServerUI_CancelLogin_Response { + optional int32 logon_state = 1; + optional int32 logon_eresult = 2; +} + +message SiteServerUI_ClientStatus_Request { +} + +message SiteServerUI_ClientStatus_Response { + repeated SiteServerUI_ClientStatus_Response_ClientInfo clients = 4; + repeated SiteServerUI_ClientStatus_Response_Payment payments = 5; +} + +// Used by: common.proto +message SiteServerUI_ClientStatus_Response_ClientInfo { + optional uint32 ip = 1; + optional string hostname = 2; + optional bool connected = 3; + optional uint64 instance_id = 4; +} + +// Used by: common.proto +message SiteServerUI_ClientStatus_Response_Payment { + optional uint64 transid = 1; + optional uint64 steamid = 2; + optional string amount = 3; + optional int32 time_created = 4; + optional int32 purchase_status = 5; + optional string hostname = 6; + optional string persona_name = 7; + optional string profile_url = 8; + optional string avatar_url = 9; +} + +message SiteServerUI_ContentCacheConfig_Request { + optional bool enabled = 1; + optional uint32 port = 2; + optional string cache_location = 3; + optional uint32 max_size_gb = 4; + optional bool p2p_enabled = 5; + optional bool external_process = 6; + optional string explicit_ip_address = 7; +} + +message SiteServerUI_ContentCacheConfig_Response { +} + +message SiteServerUI_ContentCacheStatus_Request { +} + +message SiteServerUI_ContentCacheStatus_Response { + optional bool enabled = 1; + optional uint32 port = 2; + optional string cache_location = 3; + optional uint32 max_size_gb = 4; + optional bool p2p_enabled = 5; + optional uint32 current_size_gb = 6; + optional uint64 current_bw = 7; + optional uint64 total_bytes_served = 8; + optional string explicit_ip_address = 9; + optional bool external_process = 10; +} + +message SiteServerUI_GetLanguage_Request { +} + +message SiteServerUI_GetLanguage_Response { + optional string language = 1; +} + +message SiteServerUI_Login_Request { + optional string username = 1; + optional string password = 2; + optional string steamguardcode = 3; + optional bool remember_password = 4; +} + +message SiteServerUI_Login_Response { + optional int32 logon_state = 1; + optional int32 logon_eresult = 2; +} + +message SiteServerUI_LoginStatus_Request { +} + +message SiteServerUI_LoginStatus_Response { + optional string username = 1; + optional bool cached_credentials = 2; + optional int32 logon_state = 3; + optional int32 logon_eresult = 4; +} + +message SiteServerUI_Logout_Request { +} + +message SiteServerUI_Logout_Response { + optional int32 logon_state = 1; + optional int32 logout_eresult = 2; +} + +message SiteServerUI_Quit_Request { + optional bool restart = 1; +} + +message SiteServerUI_Quit_Response { +} + +message SiteServerUI_SetLanguage_Request { + optional string language = 1; +} + +message SiteServerUI_SetLanguage_Response { +} + +message SiteServerUI_Status_Request { +} + +message SiteServerUI_Status_Response { + optional int32 logon_state = 1; + optional int32 logon_eresult = 2; + optional bool connected = 3; + optional bool cache_enabled = 4; + optional int32 acct_status = 5; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreBrowseContext { + optional string language = 1; + optional int32 elanguage = 2; + optional string country_code = 3; + optional int32 steam_realm = 4; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreBrowseFilterFailure { + optional int32 filter_failure = 1 [default = 0, (webui.description) = "enum"]; + optional bool already_owned = 5; + optional bool on_wishlist = 6; + optional bool ignored = 7; + optional bool not_in_users_language = 10; + optional bool not_on_users_platform = 11; + optional bool demo_for_owned_game = 12; + optional bool dlc_for_unowned_game = 13; + optional bool nonpreferred_product_type = 20; + repeated uint32 excluded_tagids = 21; + optional bool nonpreferred_product_early_access = 22; + optional bool nonpreferred_product_prepurchase = 23; + optional bool nonpreferred_product_software = 24; + optional bool nonpreferred_product_vr = 25; + repeated int32 excluded_content_descriptorids = 30 [(webui.description) = "enum"]; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +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; + optional bool apply_user_filters = 16; + optional bool include_links = 17; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +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; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem { + optional int32 item_type = 1 [(webui.description) = "enum"]; + 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 int32 type = 10 [(webui.description) = "enum"]; + repeated int32 included_types = 11 [(webui.description) = "enum"]; + 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 int32 content_descriptorids = 20 [(webui.description) = "enum"]; + 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 bool is_coming_soon = 34; + optional StoreItem_PurchaseOption best_purchase_option = 40; + repeated StoreItem_PurchaseOption purchase_options = 41; + repeated StoreItem_PurchaseOption accessories = 42; + optional StoreItem_PurchaseOption self_purchase_option = 43; + 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 string full_description_bbcode = 58; + optional bool is_free_temporarily = 59; + optional StoreItem_Assets assets_without_overrides = 60; + optional StoreBrowseFilterFailure user_filter_failure = 70; + repeated StoreItem_Link links = 71; + optional string purchase_description_bbcode = 72; + repeated StoreItem_PackageGroup package_groups = 74; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_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; + optional string page_background_path = 15; + optional string raw_page_background = 16; + optional string edition_comparison = 17; + optional string main_capsule_2x = 18; + optional string small_capsule_2x = 19; + optional string header_2x = 20; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_BasicInfo { + 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; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_BasicInfo_CreatorHomeLink { + optional string name = 1; + optional uint32 creator_clan_account_id = 2; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Categories { + repeated uint32 supported_player_categoryids = 2; + repeated uint32 feature_categoryids = 3; + repeated uint32 controller_categoryids = 4; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Demo { + optional uint32 appid = 1; + optional string label = 2; + optional bool show_above_purchase = 3; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_FreeWeekend { + optional uint32 start_time = 1; + optional uint32 end_time = 2; + optional string text = 3; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_IncludedItems { + repeated StoreItem included_apps = 1; + repeated StoreItem included_packages = 2; + repeated StoreItem included_bundles = 3; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Link { + optional int32 link_type = 1 [(webui.description) = "enum"]; + optional string url = 2; + optional string text = 3; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_PackageGroup { + optional string name = 1; + optional string heading = 2; + optional int32 display_type = 3 [(webui.description) = "enum"]; + optional string dropdown_title = 4; + optional string dropdown_description_bbcode = 5; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Platforms { + optional bool windows = 1; + optional bool mac = 2; + optional bool steamos_linux = 3; + optional StoreItem_Platforms_VRSupport vr_support = 10; + optional int32 steam_deck_compat_category = 11 [(webui.description) = "enum"]; + optional int32 steam_os_compat_category = 12 [(webui.description) = "enum"]; + optional int32 steam_frame_compat_category = 13 [(webui.description) = "enum"]; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Platforms_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; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Playtest { + optional uint32 appid = 1; + optional bool is_open = 2; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_PurchaseOption { + 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 string formatted_final_price = 8; + optional string formatted_original_price = 9; + optional int32 discount_pct = 10; + optional int32 bundle_discount_pct = 12; + optional bool is_free_to_keep = 13; + optional int64 price_before_bundle_discount = 14; + optional string formatted_price_before_bundle_discount = 15; + repeated StoreItem_PurchaseOption_Discount active_discounts = 20; + 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 [default = 1]; + optional int64 lowest_recent_price_in_cents = 44; + optional bool requires_shipping = 45; + optional StoreItem_PurchaseOption_RecurrenceInfo recurrence_info = 46; + optional uint32 free_to_keep_ends = 47; + optional bool must_purchase_as_set = 48 [default = false]; + optional string package_group = 49 [default = "default"]; + optional bool is_edition = 50; + optional uint32 free_to_keep_base_package = 51; + optional bool price_cannot_be_displayed_as_discount = 52 [default = false]; + optional int64 price_to_base_discount_on = 53; + optional uint32 free_with_master_sub_appid = 54; + optional string formatted_lowest_recent_price = 55; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_PurchaseOption_Discount { + optional int64 discount_amount = 1; + optional string discount_description = 2; + optional uint32 discount_end_date = 3; + optional uint32 master_sub_appid = 4; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_PurchaseOption_RecurrenceInfo { + optional int32 packageid = 1; + optional int32 billing_agreement_type = 2; + optional int32 renewal_time_unit = 3; + optional int32 renewal_time_period = 4; + optional int64 renewal_price_in_cents = 5; + optional string formatted_renewal_price = 6; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_RelatedF2P { + optional uint32 appid = 1; + optional string header_text = 2; + optional string description_text = 3; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_RelatedItems { + optional uint32 parent_appid = 1; + repeated uint32 demo_appid = 2; + repeated uint32 standalone_demo_appid = 3; + repeated StoreItem_Demo demos = 4; + repeated StoreItem_Demo standalone_demos = 5; + repeated StoreItem_Playtest playtests = 6; + optional StoreItem_RelatedF2P related_f2p = 7; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_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 release_from_early_access_date = 11; + optional uint32 release_from_early_access_style = 12; + optional uint32 mac_release_date = 20; + optional uint32 linux_release_date = 21; + optional bool limited_launch_active = 22; + optional uint32 advance_access_date = 23; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Reviews { + optional StoreItem_Reviews_StoreReviewSummary summary_filtered = 1; + optional StoreItem_Reviews_StoreReviewSummary summary_unfiltered = 2; + optional StoreItem_Reviews_StoreReviewSummary summary_language_specific = 3; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Reviews_StoreReviewSummary { + optional uint32 review_count = 1; + optional int32 percent_positive = 2; + optional int32 review_score = 3 [(webui.description) = "enum"]; + optional string review_score_label = 4; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Screenshots { + repeated StoreItem_Screenshots_Screenshot all_ages_screenshots = 2; + repeated StoreItem_Screenshots_Screenshot mature_content_screenshots = 3; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Screenshots_Screenshot { + optional string filename = 1; + optional int32 ordinal = 2; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_SupportedLanguage { + optional int32 elanguage = 1 [default = -1]; + optional bool supported = 2; + optional bool full_audio = 3; + optional bool subtitles = 4; + optional int32 eadditionallanguage = 5 [default = -1]; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Tag { + optional uint32 tagid = 1; + optional uint32 weight = 2; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Trailers { + repeated StoreItem_Trailers_Trailer highlights = 1; + repeated StoreItem_Trailers_Trailer other_trailers = 2; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Trailers_AdaptiveTrailer { + optional string cdn_path = 1; + optional string encoding = 2; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Trailers_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; + repeated StoreItem_Trailers_AdaptiveTrailer adaptive_trailers = 6; + optional string captions_manifest = 7; + optional string screenshot_medium = 10; + optional string screenshot_full = 11; + optional int32 trailer_base_id = 12; + optional int32 trailer_category = 13 [(webui.description) = "enum"]; + optional bool all_ages = 14; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, Store, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, StoreTopSellers, UserStoreVisit, Wishlist +message StoreItem_Trailers_VideoSource { + optional string filename = 1; + optional string type = 2; +} + +// Used by: Checkout, MarketingMessages, PartnerStoreBrowse, SteamCharts, StoreAppSimilarity, StoreBrowse, StoreMarketing, StoreQuery, UserStoreVisit +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; +} + +// Used by: Player, PlayerClient, Store, StoreClient +message UserContentDescriptorPreferences { + repeated UserContentDescriptorPreferences_ContentDescriptor content_descriptors_to_exclude = 1; +} + +// Used by: Player, PlayerClient, Store, StoreClient +message UserContentDescriptorPreferences_ContentDescriptor { + optional uint32 content_descriptorid = 1; + optional uint32 timestamp_added = 2; +} + +// Used by: AccountHardware, User, common.proto +message UserSystemInformation { + optional string manufacturer = 1; + optional string model = 2; + optional string dx_video_card = 3; + optional int32 dx_vendorid = 4; + optional int32 dx_deviceid = 5; + optional uint32 num_gpu = 6; + optional uint64 system_ram = 7; + optional string os = 8; + optional string cpu_vendor = 9; + optional string cpu_name = 10; + optional uint32 gaming_device_type = 11; + optional string dx_driver_version = 12; + optional string adapter_description = 14; + optional string driver_version = 15; + optional string driver_date = 16; + optional uint32 vram_size = 17; + optional uint32 screen_width = 18; + optional uint32 screen_height = 19; + optional bool precise_frame_rate = 20; +} diff --git a/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/common_base.proto b/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/common_base.proto new file mode 100644 index 000000000..fa3c0cd00 --- /dev/null +++ b/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/common_base.proto @@ -0,0 +1,34 @@ +import "google/protobuf/descriptor.proto"; + +package webui; + +option java_package = "in.dragonbra.javasteam.protobufs.webui"; + +option optimize_for = SPEED; +option java_generic_services = false; + +extend .google.protobuf.FieldOptions { + optional string description = 50000; +} + +extend .google.protobuf.ServiceOptions { + optional string service_description = 50000; +} + +extend .google.protobuf.MethodOptions { + optional string method_description = 50000; +} + +extend .google.protobuf.EnumOptions { + optional string enum_description = 50000; +} + +extend .google.protobuf.EnumValueOptions { + optional string enum_value_description = 50000; +} + +message NoResponse { +} + +message NotImplemented { +} diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_clientcomm.proto b/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_clientcomm.proto similarity index 74% rename from src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_clientcomm.proto rename to javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_clientcomm.proto index 73c6ec45e..349fa86a9 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_clientcomm.proto +++ b/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_clientcomm.proto @@ -1,3 +1,5 @@ +package webui; + option java_package = "in.dragonbra.javasteam.protobufs.webui"; option optimize_for = SPEED; @@ -10,7 +12,7 @@ message CClientComm_ClientData { optional string ip_public = 4; optional string ip_private = 5; optional uint64 bytes_available = 6; - repeated .CClientComm_ClientData_RunningGames running_games = 7; + repeated CClientComm_ClientData_RunningGames running_games = 7; optional uint32 protocol_version = 8; optional uint32 clientcomm_version = 9; repeated uint32 local_users = 10; @@ -34,7 +36,7 @@ message CClientComm_GetAllClientLogonInfo_Request { } message CClientComm_GetAllClientLogonInfo_Response { - repeated .CClientComm_GetAllClientLogonInfo_Response_Session sessions = 1; + repeated CClientComm_GetAllClientLogonInfo_Response_Session sessions = 1; optional uint32 refetch_interval_sec = 2; } @@ -59,8 +61,8 @@ message CClientComm_GetClientAppList_Request { message CClientComm_GetClientAppList_Response { optional uint64 bytes_available = 1; - repeated .CClientComm_GetClientAppList_Response_AppData apps = 2; - optional .CClientComm_ClientData client_info = 3; + repeated CClientComm_GetClientAppList_Response_AppData apps = 2; + optional CClientComm_ClientData client_info = 3; optional uint32 refetch_interval_sec_full = 4; optional uint32 refetch_interval_sec_changing = 5; optional uint32 refetch_interval_sec_updating = 6; @@ -75,7 +77,7 @@ message CClientComm_GetClientAppList_Response_AppData { optional uint32 bytes_download_rate = 11; optional uint64 bytes_downloaded = 12; optional uint64 bytes_to_download = 13; - repeated .CClientComm_GetClientAppList_Response_AppData_DLCData dlcs = 17; + repeated CClientComm_GetClientAppList_Response_AppData_DLCData dlcs = 17; optional bool favorite = 18; optional bool auto_update = 19; optional bool installed = 20; @@ -106,7 +108,7 @@ message CClientComm_GetClientInfo_Request { } message CClientComm_GetClientInfo_Response { - optional .CClientComm_ClientData client_info = 1; + optional CClientComm_ClientData client_info = 1; } message CClientComm_GetClientLogonInfo_Request { @@ -155,21 +157,21 @@ message CClientComm_UninstallClientApp_Response { service ClientComm { // ePrivilege=1 - rpc EnableOrDisableDownloads (.CClientComm_EnableOrDisableDownloads_Request) returns (.CClientComm_EnableOrDisableDownloads_Response); + rpc EnableOrDisableDownloads (CClientComm_EnableOrDisableDownloads_Request) returns (CClientComm_EnableOrDisableDownloads_Response); // bConstMethod=true, ePrivilege=1 - rpc GetAllClientLogonInfo (.CClientComm_GetAllClientLogonInfo_Request) returns (.CClientComm_GetAllClientLogonInfo_Response); + rpc GetAllClientLogonInfo (CClientComm_GetAllClientLogonInfo_Request) returns (CClientComm_GetAllClientLogonInfo_Response); // bConstMethod=true, ePrivilege=1 - rpc GetClientAppList (.CClientComm_GetClientAppList_Request) returns (.CClientComm_GetClientAppList_Response); + rpc GetClientAppList (CClientComm_GetClientAppList_Request) returns (CClientComm_GetClientAppList_Response); // bConstMethod=true, ePrivilege=1 - rpc GetClientInfo (.CClientComm_GetClientInfo_Request) returns (.CClientComm_GetClientInfo_Response); + rpc GetClientInfo (CClientComm_GetClientInfo_Request) returns (CClientComm_GetClientInfo_Response); // bConstMethod=true, ePrivilege=1 - rpc GetClientLogonInfo (.CClientComm_GetClientLogonInfo_Request) returns (.CClientComm_GetClientLogonInfo_Response); + rpc GetClientLogonInfo (CClientComm_GetClientLogonInfo_Request) returns (CClientComm_GetClientLogonInfo_Response); // ePrivilege=1 - rpc InstallClientApp (.CClientComm_InstallClientApp_Request) returns (.CClientComm_InstallClientApp_Response); + rpc InstallClientApp (CClientComm_InstallClientApp_Request) returns (CClientComm_InstallClientApp_Response); // ePrivilege=1 - rpc LaunchClientApp (.CClientComm_LaunchClientApp_Request) returns (.CClientComm_LaunchClientApp_Response); + rpc LaunchClientApp (CClientComm_LaunchClientApp_Request) returns (CClientComm_LaunchClientApp_Response); // ePrivilege=1 - rpc SetClientAppUpdateState (.CClientComm_SetClientAppUpdateState_Request) returns (.CClientComm_SetClientAppUpdateState_Response); + rpc SetClientAppUpdateState (CClientComm_SetClientAppUpdateState_Request) returns (CClientComm_SetClientAppUpdateState_Response); // ePrivilege=1 - rpc UninstallClientApp (.CClientComm_UninstallClientApp_Request) returns (.CClientComm_UninstallClientApp_Response); + rpc UninstallClientApp (CClientComm_UninstallClientApp_Request) returns (CClientComm_UninstallClientApp_Response); } diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_cloudconfigstore.proto b/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_cloudconfigstore.proto similarity index 56% rename from src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_cloudconfigstore.proto rename to javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_cloudconfigstore.proto index 71b5543ea..c6cd16761 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_cloudconfigstore.proto +++ b/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_cloudconfigstore.proto @@ -1,4 +1,6 @@ -import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base.steamclient.proto"; +import "in/dragonbra/javasteam/protobufs/webui/common_base.proto"; + +package webui; option java_package = "in.dragonbra.javasteam.protobufs.webui"; @@ -6,15 +8,15 @@ option optimize_for = SPEED; option java_generic_services = false; message CCloudConfigStore_Change_Notification { - repeated .CCloudConfigStore_NamespaceVersion versions = 2; + repeated CCloudConfigStore_NamespaceVersion versions = 2; } message CCloudConfigStore_Download_Request { - repeated .CCloudConfigStore_NamespaceVersion versions = 1; + repeated CCloudConfigStore_NamespaceVersion versions = 1; } message CCloudConfigStore_Download_Response { - repeated .CCloudConfigStore_NamespaceData data = 1; + repeated CCloudConfigStore_NamespaceData data = 1; } message CCloudConfigStore_Entry { @@ -28,7 +30,7 @@ message CCloudConfigStore_Entry { message CCloudConfigStore_NamespaceData { optional uint32 enamespace = 1; optional uint64 version = 2; - repeated .CCloudConfigStore_Entry entries = 3; + repeated CCloudConfigStore_Entry entries = 3; optional uint64 horizon = 4; } @@ -38,20 +40,21 @@ message CCloudConfigStore_NamespaceVersion { } message CCloudConfigStore_Upload_Request { - repeated .CCloudConfigStore_NamespaceData data = 1; + repeated CCloudConfigStore_NamespaceData data = 1; } message CCloudConfigStore_Upload_Response { - repeated .CCloudConfigStore_NamespaceVersion versions = 1; + repeated CCloudConfigStore_NamespaceVersion versions = 1; } service CloudConfigStore { // bConstMethod=true, ePrivilege=1 - rpc Download (.CCloudConfigStore_Download_Request) returns (.CCloudConfigStore_Download_Response); + rpc Download (CCloudConfigStore_Download_Request) returns (CCloudConfigStore_Download_Response); // ePrivilege=1 - rpc Upload (.CCloudConfigStore_Upload_Request) returns (.CCloudConfigStore_Upload_Response); + rpc Upload (CCloudConfigStore_Upload_Request) returns (CCloudConfigStore_Upload_Response); } service CloudConfigStoreClient { - rpc NotifyChange (.CCloudConfigStore_Change_Notification) returns (.NoResponse); + rpc NotifyChange (CCloudConfigStore_Change_Notification) returns (NoResponse); } + diff --git a/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_store.proto b/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_store.proto new file mode 100644 index 000000000..3d16991c3 --- /dev/null +++ b/javasteam-protobufs-webui/src/main/proto/in/dragonbra/javasteam/protobufs/webui/service_store.proto @@ -0,0 +1,460 @@ +import "in/dragonbra/javasteam/protobufs/webui/common_base.proto"; +import "in/dragonbra/javasteam/protobufs/webui/common.proto"; + +package webui; + +option java_package = "in.dragonbra.javasteam.protobufs.webui"; + +option optimize_for = SPEED; +option java_generic_services = false; + +message CPackageReservationStatus { + optional uint32 packageid = 1; + optional int32 reservation_state = 2; + optional int32 queue_position = 3; + optional int32 total_queue_size = 4; + optional string reservation_country_code = 5; + optional bool expired = 6; + optional uint32 time_expires = 7; + optional uint32 time_reserved = 8; + optional uint32 rtime_estimated_notification = 9; + optional string notificaton_token = 10; + optional int32 queue_head_position_at_reservation = 11; + optional int32 queue_head_position_now = 12; + optional bool position_is_waitlist = 13; + optional string user_waitlist_token = 14; + optional bool queue_in_waitlist = 15; + optional string queue_waitlist_token = 16; + optional uint32 collection_time_active = 17; +} + +message CReservationPositionMessage { + optional uint32 edistributor = 1; + optional string product_identifier = 2; + optional uint32 start_queue_position = 3; + optional uint32 rtime_estimated_notification = 4; + optional string localization_token = 5; + optional uint32 accountid = 6; + optional uint32 rtime_created = 7; +} + +message CSteamDeckCompatibility_SetFeedback_Request { + optional uint32 appid = 1; + optional int32 feedback = 2 [(webui.description) = "enum"]; + optional uint32 feedback_details = 3; +} + +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 int32 existing_feedback = 3 [(webui.description) = "enum"]; +} + +message CStore_DeleteReservationPositionMessage_Request { + optional uint32 edistributor = 1; + optional string product_identifier = 2; + optional uint32 start_queue_position = 3; +} + +message CStore_DeleteReservationPositionMessage_Response { +} + +message CStore_GetAllReservationPositionMessages_Request { +} + +message CStore_GetAllReservationPositionMessages_Response { + repeated CReservationPositionMessage settings = 1; +} + +message CStore_GetDiscoveryQueue_Request { + optional int32 queue_type = 1 [(webui.description) = "enum"]; + 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; + optional CStorePageFilter store_page_filter = 12; + optional StoreBrowseContext context = 13; + optional StoreBrowseItemDataRequest data_request = 14; +} + +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; + repeated StoreItem store_items = 8; +} + +message CStore_GetDiscoveryQueueSettings_Request { + optional int32 queue_type = 1 [(webui.description) = "enum"]; + optional CStorePageFilter store_page_filter = 2; +} + +message CStore_GetDiscoveryQueueSettings_Response { + optional string country_code = 1; + optional CStoreDiscoveryQueueSettings settings = 2; +} + +message CStore_GetDiscoveryQueueSkippedApps_Request { + optional fixed64 steamid = 1; + optional int32 queue_type = 2 [(webui.description) = "enum"]; + optional CStorePageFilter store_page_filter = 3; +} + +message CStore_GetDiscoveryQueueSkippedApps_Response { + repeated uint32 appids = 1; +} + +message CStore_GetGamesFollowed_Request { + optional fixed64 steamid = 1; +} + +message CStore_GetGamesFollowed_Response { + repeated uint32 appids = 1; +} + +message CStore_GetGamesFollowedCount_Request { + optional fixed64 steamid = 1; +} + +message CStore_GetGamesFollowedCount_Response { + optional uint32 followed_game_count = 1; +} + +message CStore_GetLocalizedNameForTags_Request { + optional string language = 1; + repeated uint32 tagids = 2; +} + +message CStore_GetLocalizedNameForTags_Response { + repeated CStore_GetLocalizedNameForTags_Response_Tag tags = 1; +} + +message CStore_GetLocalizedNameForTags_Response_Tag { + optional uint32 tagid = 1; + optional string english_name = 2; + optional string name = 3; + optional string normalized_name = 4; +} + +message CStore_GetMostPopularTags_Request { + optional string language = 1; +} + +message CStore_GetMostPopularTags_Response { + repeated CStore_GetMostPopularTags_Response_Tag tags = 1; +} + +message CStore_GetMostPopularTags_Response_Tag { + optional uint32 tagid = 1; + optional string name = 2; +} + +message CStore_GetRecommendedTagsForUser_Request { + optional string language = 2; + optional string country_code = 3; + optional bool favor_rarer_tags = 4; +} + +message CStore_GetRecommendedTagsForUser_Response { + repeated CStore_GetRecommendedTagsForUser_Response_Tag tags = 1; +} + +message CStore_GetRecommendedTagsForUser_Response_Tag { + optional uint32 tagid = 1; + optional string name = 2; + optional float weight = 3; +} + +message CStore_GetStorePreferences_Request { + optional string country_code = 1; +} + +message CStore_GetStorePreferences_Response { + optional CStore_UserPreferences preferences = 1; + optional CStore_UserTagPreferences tag_preferences = 2; + optional UserContentDescriptorPreferences content_descriptor_preferences = 3; +} + +message CStore_GetTagList_Request { + optional string language = 1; + optional string have_version_hash = 2; +} + +message CStore_GetTagList_Response { + optional string version_hash = 1; + repeated CStore_GetTagList_Response_Tag tags = 2; +} + +message CStore_GetTagList_Response_Tag { + optional uint32 tagid = 1; + optional string name = 2; +} + +message CStore_GetTrendingAppsAmongFriends_Request { + optional uint32 num_apps = 1; + optional uint32 num_top_friends = 2; +} + +message CStore_GetTrendingAppsAmongFriends_Response { + repeated CStore_GetTrendingAppsAmongFriends_Response_TrendingAppData trending_apps = 1; +} + +message CStore_GetTrendingAppsAmongFriends_Response_TrendingAppData { + optional uint32 appid = 1; + repeated uint64 steamids_top_friends = 2; + optional uint32 total_friends = 3; +} + +message CStore_GetUserGameInterestState_Request { + optional uint32 appid = 1; + optional uint32 store_appid = 2; + optional uint32 beta_appid = 3; +} + +message CStore_GetUserGameInterestState_Response { + optional bool owned = 1; + optional bool wishlist = 2; + optional bool ignored = 3; + optional bool following = 4; + repeated int32 in_queues = 5 [(webui.description) = "enum"]; + repeated int32 queues_with_skip = 6 [(webui.description) = "enum"]; + repeated int32 queue_items_remaining = 7; + repeated uint32 queue_items_next_appid = 8; + optional bool temporarily_owned = 9; + repeated CStore_GetUserGameInterestState_Response_InQueue queues = 10; + optional int32 ignored_reason = 11; + optional int32 beta_status = 12 [(webui.description) = "enum"]; +} + +message CStore_GetUserGameInterestState_Response_InQueue { + optional int32 type = 1 [(webui.description) = "enum"]; + optional bool skipped = 2; + optional int32 items_remaining = 3; + optional uint32 next_appid = 4; + optional uint32 experimental_cohort = 5; +} + +message CStore_GetWishlistDemoEmailStatus_Request { + optional uint32 appid = 1; + optional uint32 demo_appid = 2; + optional bool allow_late_firing = 3; +} + +message CStore_GetWishlistDemoEmailStatus_Response { + optional bool can_fire = 1 [default = false]; + optional uint32 time_staged = 2; + optional uint32 demo_release_date = 3; +} + +message CStore_MigratePartnerLinkTracking_Notification { + optional uint32 accountid = 1; + optional uint64 browserid = 2; + optional int32 backfill_source = 3 [(webui.description) = "enum"]; +} + +message CStore_PurchaseReceiptInfo { + 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_PurchaseReceiptInfo_LineItem { + optional uint32 packageid = 1; + optional uint32 appid = 2; + optional string line_item_description = 3; +} + +message CStore_QueueWishlistDemoEmailToFire_Request { + optional uint32 appid = 1; + optional uint32 demo_appid = 2; + optional bool allow_late_firing = 3; +} + +message CStore_QueueWishlistDemoEmailToFire_Response { +} + +message CStore_RegisterCDKey_Request { + optional string activation_code = 1; + optional int32 purchase_platform = 2; + optional bool is_request_from_client = 3; +} + +message CStore_RegisterCDKey_Response { + optional int32 purchase_result_details = 1; + optional CStore_PurchaseReceiptInfo purchase_receipt_info = 2; +} + +message CStore_ReloadAllReservationPositionMessages_Notification { +} + +message CStore_ReportApp_Request { + optional uint32 appid = 1; + optional int32 report_type = 2 [(webui.description) = "enum"]; + optional string report = 3; +} + +message CStore_ReportApp_Response { +} + +message CStore_SetReservationPositionMessage_Request { + repeated CReservationPositionMessage settings = 1; +} + +message CStore_SetReservationPositionMessage_Response { +} + +message CStore_SkipDiscoveryQueueItem_Request { + optional int32 queue_type = 1 [(webui.description) = "enum"]; + optional uint32 appid = 2; + optional CStorePageFilter store_page_filter = 3; +} + +message CStore_SkipDiscoveryQueueItem_Response { +} + +message CStore_StorePreferencesChanged_Notification { + optional CStore_UserPreferences preferences = 1; + optional CStore_UserTagPreferences tag_preferences = 2; + optional UserContentDescriptorPreferences content_descriptor_preferences = 3; +} + +message CStore_UpdatePackageReservations_Request { + repeated uint32 packages_to_reserve = 1; + repeated uint32 packages_to_unreserve = 2; + optional string country_code = 3; +} + +message CStore_UpdatePackageReservations_Response { + repeated CPackageReservationStatus reservation_status = 1; +} + +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 uint32 timestamp_updated = 8; + optional bool hide_store_broadcast = 9; + optional int32 review_score_preference = 10 [(webui.description) = "enum"]; + optional int32 timestamp_content_descriptor_preferences_updated = 11; + optional int32 provide_deck_feedback = 12 [(webui.description) = "enum"]; + optional string additional_languages = 13; + optional int32 game_frame_rate_reporting = 14 [(webui.description) = "enum"]; + optional bool disable_microtrailers = 15; + optional bool disable_animated_marketing = 16; +} + +message CStore_UserTagPreferences { + repeated CStore_UserTagPreferences_Tag tags_to_exclude = 1; +} + +message CStore_UserTagPreferences_Tag { + optional uint32 tagid = 1; + optional string name = 2; + optional uint32 timestamp_added = 3; +} + +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; + 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; +} + +service Store { + // ePrivilege=4 + rpc DeleteReservationPositionMessage (CStore_DeleteReservationPositionMessage_Request) returns (CStore_DeleteReservationPositionMessage_Response); + // bConstMethod=true, ePrivilege=4 + rpc GetAllReservationPositionMessages (CStore_GetAllReservationPositionMessages_Request) returns (CStore_GetAllReservationPositionMessages_Response); + // bConstMethod=true, ePrivilege=1 + rpc GetDiscoveryQueue (CStore_GetDiscoveryQueue_Request) returns (CStore_GetDiscoveryQueue_Response); + // bConstMethod=true, ePrivilege=1 + rpc GetDiscoveryQueueSettings (CStore_GetDiscoveryQueueSettings_Request) returns (CStore_GetDiscoveryQueueSettings_Response); + // bConstMethod=true, ePrivilege=1 + rpc GetDiscoveryQueueSkippedApps (CStore_GetDiscoveryQueueSkippedApps_Request) returns (CStore_GetDiscoveryQueueSkippedApps_Response); + // bConstMethod=true, ePrivilege=2, eWebAPIKeyRequirement=1 + rpc GetGamesFollowed (CStore_GetGamesFollowed_Request) returns (CStore_GetGamesFollowed_Response); + // bConstMethod=true, ePrivilege=2, eWebAPIKeyRequirement=1 + rpc GetGamesFollowedCount (CStore_GetGamesFollowedCount_Request) returns (CStore_GetGamesFollowedCount_Response); + // bConstMethod=true, ePrivilege=1, eWebAPIKeyRequirement=1 + rpc GetLocalizedNameForTags (CStore_GetLocalizedNameForTags_Request) returns (CStore_GetLocalizedNameForTags_Response); + // bConstMethod=true, ePrivilege=1, eWebAPIKeyRequirement=1 + rpc GetMostPopularTags (CStore_GetMostPopularTags_Request) returns (CStore_GetMostPopularTags_Response); + // bConstMethod=true, ePrivilege=1 + rpc GetRecommendedTagsForUser (CStore_GetRecommendedTagsForUser_Request) returns (CStore_GetRecommendedTagsForUser_Response); + // bConstMethod=true, ePrivilege=1 + rpc GetStorePreferences (CStore_GetStorePreferences_Request) returns (CStore_GetStorePreferences_Response); + // bConstMethod=true, ePrivilege=1, eWebAPIKeyRequirement=1 + rpc GetTagList (CStore_GetTagList_Request) returns (CStore_GetTagList_Response); + // bConstMethod=true, ePrivilege=1 + rpc GetTrendingAppsAmongFriends (CStore_GetTrendingAppsAmongFriends_Request) returns (CStore_GetTrendingAppsAmongFriends_Response); + // ePrivilege=1 + rpc GetUserGameInterestState (CStore_GetUserGameInterestState_Request) returns (CStore_GetUserGameInterestState_Response); + // ePrivilege=1 + rpc GetWishlistDemoEmailStatus (CStore_GetWishlistDemoEmailStatus_Request) returns (CStore_GetWishlistDemoEmailStatus_Response); + // ePrivilege=1 + rpc MigratePartnerLinkTracking (CStore_MigratePartnerLinkTracking_Notification) returns (NoResponse); + // ePrivilege=1 + rpc QueueWishlistDemoEmailToFire (CStore_QueueWishlistDemoEmailToFire_Request) returns (CStore_QueueWishlistDemoEmailToFire_Response); + // ePrivilege=1 + rpc RegisterCDKey (CStore_RegisterCDKey_Request) returns (CStore_RegisterCDKey_Response); + // ePrivilege=4 + rpc ReloadAllReservationPositionMessages (CStore_ReloadAllReservationPositionMessages_Notification) returns (NoResponse); + // ePrivilege=3 + rpc ReportApp (CStore_ReportApp_Request) returns (CStore_ReportApp_Response); + // ePrivilege=1 + rpc SetCompatibilityFeedback (CSteamDeckCompatibility_SetFeedback_Request) returns (CSteamDeckCompatibility_SetFeedback_Response); + // ePrivilege=4 + rpc SetReservationPositionMessage (CStore_SetReservationPositionMessage_Request) returns (CStore_SetReservationPositionMessage_Response); + // ePrivilege=1 + rpc ShouldPromptForCompatibilityFeedback (CSteamDeckCompatibility_ShouldPrompt_Request) returns (CSteamDeckCompatibility_ShouldPrompt_Response); + // ePrivilege=1 + rpc SkipDiscoveryQueueItem (CStore_SkipDiscoveryQueueItem_Request) returns (CStore_SkipDiscoveryQueueItem_Response); + // ePrivilege=1 + rpc UpdatePackageReservations (CStore_UpdatePackageReservations_Request) returns (CStore_UpdatePackageReservations_Response); +} + +service StoreClient { + rpc NotifyStorePreferencesChanged (CStore_StorePreferencesChanged_Notification) returns (NoResponse); +} diff --git a/javasteam-protobufs-webui/src/test/java/in/dragonbra/javasteam/rpc/WebUiUnifiedInterfaceTest.java b/javasteam-protobufs-webui/src/test/java/in/dragonbra/javasteam/rpc/WebUiUnifiedInterfaceTest.java new file mode 100644 index 000000000..9fde5549e --- /dev/null +++ b/javasteam-protobufs-webui/src/test/java/in/dragonbra/javasteam/rpc/WebUiUnifiedInterfaceTest.java @@ -0,0 +1,57 @@ +package in.dragonbra.javasteam.rpc; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.io.File; + +/** + * This test class makes sure there are a certain number of Unified classes/interfaces + * generated from the webui .proto files. + *

+ * Any updates to .proto files, either adding or removing services would need to reflect these tests. + */ +public class WebUiUnifiedInterfaceTest { + + private static final String SERVICE_PATH = + "build/generated/source/javasteam/main/java/in/dragonbra/javasteam/rpc/service/webui"; + + /** + * Any changes to the number of interfaces would need to reflect here. Otherwise, the test should fail. + */ + private static final String[] KNOWN_SERVICE_TYPES = { + "ClientComm.kt", + "CloudConfigStore.kt", + "CloudConfigStoreClient.kt", + "Store.kt", + "StoreClient.kt", + }; + + @Test + public void testServiceCount() { + File interfaceDir = new File(SERVICE_PATH); + + Assertions.assertTrue( + interfaceDir.exists() && interfaceDir.isDirectory(), + interfaceDir.getName() + " should exist to test" + ); + + File[] files = interfaceDir.listFiles(File::isFile); + + Assertions.assertNotNull(files, "Couldn't count files"); + + Assertions.assertEquals( + KNOWN_SERVICE_TYPES.length, + files.length, + "Interface count doesn't match known file types! Did something change in the .proto files?" + ); + } + + @Test + public void testKnownServices() { + for (String filename : KNOWN_SERVICE_TYPES) { + File file = new File(SERVICE_PATH, filename); + Assertions.assertTrue(file.exists() && file.isFile(), "File " + filename + " should exist"); + } + } +} \ No newline at end of file diff --git a/javasteam-tf/build.gradle.kts b/javasteam-tf/build.gradle.kts index 579a72188..33aa35cde 100644 --- a/javasteam-tf/build.gradle.kts +++ b/javasteam-tf/build.gradle.kts @@ -26,6 +26,11 @@ tasks.javadoc { exclude("**/in/dragonbra/javasteam/protobufs/**") } +/* Jar */ +tasks.jar { + exclude("**/*.proto") +} + dependencies { implementation(libs.protobuf.java) } diff --git a/settings.gradle.kts b/settings.gradle.kts index fa1f85798..c28c3bf79 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -5,3 +5,4 @@ include(":javasteam-depotdownloader") include(":javasteam-dota2") include(":javasteam-samples") include(":javasteam-tf") +include(":javasteam-protobufs-webui") diff --git a/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.kt b/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.kt index e95df567f..54be73b90 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.kt +++ b/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.kt @@ -45,11 +45,12 @@ import kotlin.time.Duration.Companion.milliseconds * * @constructor Initializes a new instance of the [SteamClient] class with a specific configuration. * @param configuration The configuration to use for this client. + * @param defaultScope The coroutine scope used for callbacks and handler coroutines, cancelled by [close]. */ @Suppress("unused") class SteamClient @JvmOverloads constructor( configuration: SteamConfiguration? = SteamConfiguration.createDefault(), - internal val defaultScope: CoroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob()), + val defaultScope: CoroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob()), ) : CMClient(configuration), Closeable { @@ -87,7 +88,7 @@ class SteamClient @JvmOverloads constructor( addHandlerCore(SteamContent()) addHandlerCore(SteamAuthTicket()) addHandlerCore(SteamNotifications()) // JavaSteam Addition - // addHandlerCore(SteamClientCommunication()) // JavaSteam Addition, not enabled by default + // addHandlerCore(SteamClientCommunication()) // JavaSteam Addition, required javasteam-protobufs-webui dependency if (handlers.size != HANDLERS_COUNT) { logger.error("Handlers size didnt match handlers count (${handlers.size}) when initializing") diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/contenthubs.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/contenthubs.proto new file mode 100644 index 000000000..23b209b6a --- /dev/null +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/contenthubs.proto @@ -0,0 +1,41 @@ +option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EContentHubDiscountFilterType { + k_EContentHubDiscountFilterType_None = 0; + k_EContentHubDiscountFilterType_DiscountsOnly = 1; + k_EContentHubDiscountFilterType_PrioritizeDiscounts = 2; +} + +message CStorePageFilter { + message SalePageFilter { + optional uint32 sale_tagid = 1; + optional uint32 creator_clan_account_id = 2; + } + + message ContentHubFilter { + message OptInInfo { + optional string name = 1; + optional uint32 optin_tagid = 2; + optional uint32 prune_tagid = 3; + optional bool optin_only = 4; + } + + optional string hub_type = 1; + optional string hub_category = 2; + optional uint32 hub_tagid = 3; + optional .EContentHubDiscountFilterType discount_filter = 4 [default = k_EContentHubDiscountFilterType_None]; + optional .CStorePageFilter.ContentHubFilter.OptInInfo optin = 5; + } + + message StoreFilter { + optional string filter_json = 1; + optional string cache_key = 2; + } + + optional .CStorePageFilter.SalePageFilter sale_filter = 1; + optional .CStorePageFilter.ContentHubFilter content_hub_filter = 2; + repeated .CStorePageFilter.StoreFilter store_filters = 3; +} diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_store.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_store.steamclient.proto new file mode 100644 index 000000000..c10ac34ac --- /dev/null +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_store.steamclient.proto @@ -0,0 +1,476 @@ +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base.steamclient.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/contenthubs.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_storebrowse.steamclient.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; + +option optimize_for = SPEED; +option java_generic_services = false; + +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_EStoreDiscoveryQueueTypeDLCUpcoming = 15; + k_EStoreDiscoveryQueueTypeMAX = 16; +} + +enum EPlaytestStatus { + k_ETesterStatusNone = 0; + k_ETesterStatusPending = 1; + k_ETesterStatusInvited = 2; + k_ETesterStatusGranted = 3; + k_ETesterStatusExpired = 4; +} + +enum EAppReportType { + k_EAppReportType_Invalid = 0; + k_EAppReportType_Scam = 1; + k_EAppReportType_Malware = 2; + k_EAppReportType_HateSpeech = 3; + k_EAppReportType_Pornography = 4; + k_EAppReportType_NonLabeledAdultContent = 5; + k_EAppReportType_Libelous = 6; + k_EAppReportType_Offensive = 7; + k_EAppReportType_ExploitsChildren = 8; + k_EAppReportType_MtxWithNonSteamWalletPaymentMethods = 9; + k_EAppReportType_CopyrightViolation = 10; + k_EAppReportType_ViolatesLaws = 11; + k_EAppReportType_Other = 12; + k_EAppReportType_Broken = 13; + k_EAppReportType_AIContentReport = 14; +} + +enum EUserReviewScorePreference { + k_EUserReviewScorePreference_Unset = 0; + k_EUserReviewScorePreference_IncludeAll = 1; + k_EUserReviewScorePreference_ExcludeBombs = 2; +} + +enum EPartnerLinkTrackingBackfillSource { + k_EPartnerLinkTrackingBackfillSource_None = 0; + k_EPartnerLinkTrackingBackfillSource_Web = 1; + k_EPartnerLinkTrackingBackfillSource_Mobile = 2; + k_EPartnerLinkTrackingBackfillSource_Desktop = 3; +} + +message CStore_RegisterCDKey_Request { + optional string activation_code = 1; + optional int32 purchase_platform = 2; + optional bool is_request_from_client = 3; +} + +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; + optional .CStore_PurchaseReceiptInfo purchase_receipt_info = 2; +} + +message CStore_GetRecommendedTagsForUser_Request { + optional string language = 2; + optional string country_code = 3; + optional bool favor_rarer_tags = 4; +} + +message CStore_GetRecommendedTagsForUser_Response { + message Tag { + optional uint32 tagid = 1; + optional string name = 2; + optional float weight = 3; + } + + repeated .CStore_GetRecommendedTagsForUser_Response.Tag tags = 1; +} + +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; + } + + repeated .CStore_GetLocalizedNameForTags_Response.Tag tags = 1; +} + +message CStore_GetTagList_Request { + optional string language = 1; + optional string have_version_hash = 2; +} + +message CStore_GetTagList_Response { + message Tag { + optional uint32 tagid = 1; + optional string name = 2; + } + + optional string version_hash = 1; + repeated .CStore_GetTagList_Response.Tag tags = 2; +} + +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; + 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; +} + +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; + optional .CStorePageFilter store_page_filter = 12; + optional .StoreBrowseContext context = 13; + optional .StoreBrowseItemDataRequest data_request = 14; +} + +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; + repeated .StoreItem store_items = 8; +} + +message CStore_GetDiscoveryQueueSettings_Request { + optional .EStoreDiscoveryQueueType queue_type = 1 [default = k_EStoreDiscoveryQueueTypeNew]; + optional .CStorePageFilter store_page_filter = 2; +} + +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; + optional .CStorePageFilter store_page_filter = 3; +} + +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; + repeated int32 queue_items_remaining = 7; + repeated uint32 queue_items_next_appid = 8; + optional bool temporarily_owned = 9; + repeated .CStore_GetUserGameInterestState_Response.InQueue queues = 10; + optional int32 ignored_reason = 11; + optional .EPlaytestStatus beta_status = 12 [default = k_ETesterStatusNone]; +} + +message CStore_GetGamesFollowed_Request { + optional fixed64 steamid = 1; +} + +message CStore_GetGamesFollowed_Response { + repeated uint32 appids = 1; +} + +message CStore_GetGamesFollowedCount_Request { + optional fixed64 steamid = 1; +} + +message CStore_GetGamesFollowedCount_Response { + optional uint32 followed_game_count = 1; +} + +message CStore_GetDiscoveryQueueSkippedApps_Request { + optional fixed64 steamid = 1; + optional .EStoreDiscoveryQueueType queue_type = 2 [default = k_EStoreDiscoveryQueueTypeNew]; + optional .CStorePageFilter store_page_filter = 3; +} + +message CStore_GetDiscoveryQueueSkippedApps_Response { + repeated uint32 appids = 1; +} + +message CStore_ReportApp_Request { + optional uint32 appid = 1; + optional .EAppReportType report_type = 2 [default = k_EAppReportType_Invalid]; + optional string report = 3; +} + +message CStore_ReportApp_Response { +} + +message CStore_GetStorePreferences_Request { + optional string country_code = 1; +} + +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 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]; + optional string additional_languages = 13; + optional .EGameFrameRateReportingPreference game_frame_rate_reporting = 14 [default = k_EGameFrameRateReportingPreference_Unset]; + optional bool disable_microtrailers = 15; + optional bool disable_animated_marketing = 16; +} + +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_GetStorePreferences_Response { + optional .CStore_UserPreferences preferences = 1; + optional .CStore_UserTagPreferences tag_preferences = 2; + optional .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 CStore_MigratePartnerLinkTracking_Notification { + optional uint32 accountid = 1; + optional uint64 browserid = 2; + optional .EPartnerLinkTrackingBackfillSource backfill_source = 3 [default = k_EPartnerLinkTrackingBackfillSource_None]; +} + +message CStore_UpdatePackageReservations_Request { + repeated uint32 packages_to_reserve = 1; + repeated uint32 packages_to_unreserve = 2; + optional string country_code = 3; +} + +message CStore_UpdatePackageReservations_Response { + repeated .CPackageReservationStatus reservation_status = 1; +} + +message CStore_GetWishlistDemoEmailStatus_Request { + optional uint32 appid = 1; + optional uint32 demo_appid = 2; + optional bool allow_late_firing = 3; +} + +message CStore_GetWishlistDemoEmailStatus_Response { + optional bool can_fire = 1 [default = false]; + optional uint32 time_staged = 2; + optional uint32 demo_release_date = 3; +} + +message CStore_QueueWishlistDemoEmailToFire_Request { + optional uint32 appid = 1; + optional uint32 demo_appid = 2; + optional bool allow_late_firing = 3; +} + +message CStore_QueueWishlistDemoEmailToFire_Response { +} + +message CReservationPositionMessage { + optional uint32 edistributor = 1; + optional string product_identifier = 2; + optional uint32 start_queue_position = 3; + optional uint32 rtime_estimated_notification = 4; + optional string localization_token = 5; + optional uint32 accountid = 6; + optional uint32 rtime_created = 7; +} + +message CStore_SetReservationPositionMessage_Request { + repeated .CReservationPositionMessage settings = 1; +} + +message CStore_SetReservationPositionMessage_Response { +} + +message CStore_DeleteReservationPositionMessage_Request { + optional uint32 edistributor = 1; + optional string product_identifier = 2; + optional uint32 start_queue_position = 3; +} + +message CStore_DeleteReservationPositionMessage_Response { +} + +message CStore_GetAllReservationPositionMessages_Request { +} + +message CStore_GetAllReservationPositionMessages_Response { + repeated .CReservationPositionMessage settings = 1; +} + +message CStore_ReloadAllReservationPositionMessages_Notification { +} + +message CSteamDeckCompatibility_SetFeedback_Request { + optional uint32 appid = 1; + optional .ESteamDeckCompatibilityFeedback feedback = 2 [default = k_ESteamDeckCompatibilityFeedback_Unset]; + optional uint32 feedback_details = 3; +} + +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 .UserContentDescriptorPreferences content_descriptor_preferences = 3; +} + +service Store { + rpc RegisterCDKey (.CStore_RegisterCDKey_Request) returns (.CStore_RegisterCDKey_Response); + rpc GetRecommendedTagsForUser (.CStore_GetRecommendedTagsForUser_Request) returns (.CStore_GetRecommendedTagsForUser_Response); + rpc GetMostPopularTags (.CStore_GetMostPopularTags_Request) returns (.CStore_GetMostPopularTags_Response); + rpc GetLocalizedNameForTags (.CStore_GetLocalizedNameForTags_Request) returns (.CStore_GetLocalizedNameForTags_Response); + rpc GetTagList (.CStore_GetTagList_Request) returns (.CStore_GetTagList_Response); + rpc GetDiscoveryQueue (.CStore_GetDiscoveryQueue_Request) returns (.CStore_GetDiscoveryQueue_Response); + rpc GetDiscoveryQueueSettings (.CStore_GetDiscoveryQueueSettings_Request) returns (.CStore_GetDiscoveryQueueSettings_Response); + rpc SkipDiscoveryQueueItem (.CStore_SkipDiscoveryQueueItem_Request) returns (.CStore_SkipDiscoveryQueueItem_Response); + rpc GetUserGameInterestState (.CStore_GetUserGameInterestState_Request) returns (.CStore_GetUserGameInterestState_Response); + rpc GetGamesFollowed (.CStore_GetGamesFollowed_Request) returns (.CStore_GetGamesFollowed_Response); + rpc GetGamesFollowedCount (.CStore_GetGamesFollowedCount_Request) returns (.CStore_GetGamesFollowedCount_Response); + rpc GetDiscoveryQueueSkippedApps (.CStore_GetDiscoveryQueueSkippedApps_Request) returns (.CStore_GetDiscoveryQueueSkippedApps_Response); + rpc ReportApp (.CStore_ReportApp_Request) returns (.CStore_ReportApp_Response); + rpc GetStorePreferences (.CStore_GetStorePreferences_Request) returns (.CStore_GetStorePreferences_Response); + rpc GetTrendingAppsAmongFriends (.CStore_GetTrendingAppsAmongFriends_Request) returns (.CStore_GetTrendingAppsAmongFriends_Response); + rpc MigratePartnerLinkTracking (.CStore_MigratePartnerLinkTracking_Notification) returns (.NoResponse); + rpc UpdatePackageReservations (.CStore_UpdatePackageReservations_Request) returns (.CStore_UpdatePackageReservations_Response); + rpc GetWishlistDemoEmailStatus (.CStore_GetWishlistDemoEmailStatus_Request) returns (.CStore_GetWishlistDemoEmailStatus_Response); + rpc QueueWishlistDemoEmailToFire (.CStore_QueueWishlistDemoEmailToFire_Request) returns (.CStore_QueueWishlistDemoEmailToFire_Response); + rpc SetReservationPositionMessage (.CStore_SetReservationPositionMessage_Request) returns (.CStore_SetReservationPositionMessage_Response); + rpc DeleteReservationPositionMessage (.CStore_DeleteReservationPositionMessage_Request) returns (.CStore_DeleteReservationPositionMessage_Response); + rpc GetAllReservationPositionMessages (.CStore_GetAllReservationPositionMessages_Request) returns (.CStore_GetAllReservationPositionMessages_Response); + rpc ReloadAllReservationPositionMessages (.CStore_ReloadAllReservationPositionMessages_Notification) returns (.NoResponse); + rpc SetCompatibilityFeedback (.CSteamDeckCompatibility_SetFeedback_Request) returns (.CSteamDeckCompatibility_SetFeedback_Response); + rpc ShouldPromptForCompatibilityFeedback (.CSteamDeckCompatibility_ShouldPrompt_Request) returns (.CSteamDeckCompatibility_ShouldPrompt_Response); +} + +service StoreClient { + option (service_execution_site) = k_EProtoExecutionSiteSteamClient; + + rpc NotifyStorePreferencesChanged (.CStore_StorePreferencesChanged_Notification) returns (.NoResponse); +} diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_storebrowse.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_storebrowse.steamclient.proto new file mode 100644 index 000000000..46e13bda9 --- /dev/null +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_storebrowse.steamclient.proto @@ -0,0 +1,629 @@ +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base.steamclient.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/enums_productinfo.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/enums.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/contenthubs.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; + +option optimize_for = SPEED; +option java_generic_services = false; + +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 ETrailerCategory { + k_ETrailerCategory_Invalid = 0; + k_ETrailerCategory_Gameplay = 1; + k_ETrailerCategory_Teaser = 2; + k_ETrailerCategory_Cinematic = 3; + k_ETrailerCategory_Update = 4; + k_ETrailerCategory_Accolades = 5; + k_ETrailerCategory_Interview = 6; +} + +enum EStoreBrowseFilterFailure { + k_EStoreBrowseFilterFailure_None = 0; + k_EStoreBrowseFilterFailure_Redundant = 10; + k_EStoreBrowseFilterFailure_NotPreferred = 20; + k_EStoreBrowseFilterFailure_NotInterested = 30; + k_EStoreBrowseFilterFailure_UnwantedContent = 40; + k_EStoreBrowseFilterFailure_Unavailable = 50; +} + +enum EStoreLinkType { + k_EStoreLinkType_None = 0; + k_EStoreLinkType_YouTube = 1; + k_EStoreLinkType_Facebook = 2; + k_EStoreLinkType_Twitter = 3; + k_EStoreLinkType_Twitch = 4; + k_EStoreLinkType_Discord = 5; + k_EStoreLinkType_QQ = 6; + k_EStoreLinkType_VK = 7; + k_EStoreLinkType_Bilibili = 8; + k_EStoreLinkType_Weibo = 9; + k_EStoreLinkType_Reddit = 10; + k_EStoreLinkType_Instagram = 11; + k_EStoreLinkType_Tumblr = 12; + k_EStoreLinkType_Tieba = 13; + k_EStoreLinkType_Tiktok = 14; + k_EStoreLinkType_Telegram = 15; + k_EStoreLinkType_LinkedIn = 16; + k_EStoreLinkType_WeChat = 17; + k_EStoreLinkType_QQLink = 18; + k_EStoreLinkType_Douyin = 19; + k_EStoreLinkType_Bluesky = 20; + k_EStoreLinkType_Mastodon = 21; + k_EStoreLinkType_Threads = 22; + k_EStoreLinkType_QQChannel = 23; + k_EStoreLinkType_RedNote = 24; + k_EStoreLinkType_MAX = 25; +} + +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; +} + +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; + optional bool apply_user_filters = 16; + optional bool include_links = 17; +} + +message CStoreBrowse_GetItems_Request { + repeated .StoreItemID ids = 1; + optional .StoreBrowseContext context = 2; + optional .StoreBrowseItemDataRequest data_request = 3; +} + +message StoreItem { + message Demo { + optional uint32 appid = 1; + optional string label = 2; + optional bool show_above_purchase = 3; + } + + message Playtest { + optional uint32 appid = 1; + optional bool is_open = 2; + } + + message RelatedF2P { + optional uint32 appid = 1; + optional string header_text = 2; + optional string description_text = 3; + } + + message RelatedItems { + optional uint32 parent_appid = 1; + repeated uint32 demo_appid = 2; + repeated uint32 standalone_demo_appid = 3; + repeated .StoreItem.Demo demos = 4; + repeated .StoreItem.Demo standalone_demos = 5; + repeated .StoreItem.Playtest playtests = 6; + optional .StoreItem.RelatedF2P related_f2p = 7; + } + + message IncludedItems { + repeated .StoreItem included_apps = 1; + repeated .StoreItem included_packages = 2; + repeated .StoreItem included_bundles = 3; + } + + 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; + optional .StoreItem.Reviews.StoreReviewSummary summary_language_specific = 3; + } + + 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 main_capsule_2x = 18; + optional string small_capsule = 3; + optional string small_capsule_2x = 19; + optional string header = 4; + optional string header_2x = 20; + 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; + optional string page_background_path = 15; + optional string raw_page_background = 16; + optional string edition_comparison = 17; + } + + message ReleaseInfo { + optional uint32 steam_release_date = 1; + optional uint32 original_release_date = 2; + optional uint32 original_steam_release_date = 3; + optional uint32 release_from_early_access_date = 11; + optional uint32 release_from_early_access_style = 12; + 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; + optional bool limited_launch_active = 22; + optional uint32 advance_access_date = 23; + } + + 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]; + optional .ESteamOSCompatibilityCategory steam_os_compat_category = 12 [default = k_ESteamOSCompatibilityCategory_Unknown]; + optional .ESteamDeckCompatibilityCategory steam_frame_compat_category = 13 [default = k_ESteamDeckCompatibilityCategory_Unknown]; + } + + message PurchaseOption { + message Discount { + optional int64 discount_amount = 1; + optional string discount_description = 2; + optional uint32 discount_end_date = 3; + optional uint32 master_sub_appid = 4; + } + + 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 int64 renewal_price_in_cents = 5; + optional string formatted_renewal_price = 6; + } + + 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 string formatted_final_price = 8; + optional string formatted_original_price = 9; + optional int32 discount_pct = 10; + optional int32 bundle_discount_pct = 12; + optional bool is_free_to_keep = 13; + optional int64 price_before_bundle_discount = 14; + optional string formatted_price_before_bundle_discount = 15; + repeated .StoreItem.PurchaseOption.Discount active_discounts = 20; + 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 [default = 1]; + optional int64 lowest_recent_price_in_cents = 44; + optional bool requires_shipping = 45; + optional .StoreItem.PurchaseOption.RecurrenceInfo recurrence_info = 46; + optional uint32 free_to_keep_ends = 47; + optional bool must_purchase_as_set = 48 [default = false]; + optional string package_group = 49 [default = "default"]; + optional bool is_edition = 50; + optional uint32 free_to_keep_base_package = 51; + optional bool price_cannot_be_displayed_as_discount = 52 [default = false]; + optional int64 price_to_base_discount_on = 53; + optional uint32 free_with_master_sub_appid = 54; + optional string formatted_lowest_recent_price = 55; + } + + 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 AdaptiveTrailer { + optional string cdn_path = 1; + optional string encoding = 2; + } + + message Trailer { + optional string trailer_name = 1; + optional string trailer_url_format = 2; + optional .ETrailerCategory trailer_category = 13 [default = k_ETrailerCategory_Invalid]; + repeated .StoreItem.Trailers.VideoSource microtrailer = 5; + repeated .StoreItem.Trailers.AdaptiveTrailer adaptive_trailers = 6; + optional string captions_manifest = 7; + optional string screenshot_medium = 10; + optional string screenshot_full = 11; + optional int32 trailer_base_id = 12; + optional bool all_ages = 14; + } + + repeated .StoreItem.Trailers.Trailer highlights = 1; + repeated .StoreItem.Trailers.Trailer other_trailers = 2; + } + + message SupportedLanguage { + optional int32 elanguage = 1 [default = -1]; + optional int32 eadditionallanguage = 5 [default = -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; + } + + message Link { + optional .EStoreLinkType link_type = 1 [default = k_EStoreLinkType_None]; + optional string url = 2; + optional string text = 3; + } + + message PackageGroup { + enum EPackageGroupDisplayType { + k_EPackageGroupDisplayType_Default = 0; + k_EPackageGroupDisplayType_Dropdown = 1; + } + + optional string name = 1; + optional string heading = 2; + optional .StoreItem.PackageGroup.EPackageGroupDisplayType display_type = 3 [default = k_EPackageGroupDisplayType_Default]; + optional string dropdown_title = 4; + optional string dropdown_description_bbcode = 5; + } + + 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 bool is_coming_soon = 34; + optional .StoreItem.PurchaseOption best_purchase_option = 40; + repeated .StoreItem.PurchaseOption purchase_options = 41; + optional .StoreItem.PurchaseOption self_purchase_option = 43; + 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_bbcode = 58; + optional bool is_free_temporarily = 59; + optional .StoreItem.Assets assets_without_overrides = 60; + optional .StoreBrowseFilterFailure user_filter_failure = 70; + repeated .StoreItem.Link links = 71; + optional string purchase_description_bbcode = 72; + repeated .StoreItem.PackageGroup package_groups = 74; +} + +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 StoreBrowseFilterFailure { + optional .EStoreBrowseFilterFailure filter_failure = 1 [default = k_EStoreBrowseFilterFailure_None]; + optional bool already_owned = 5; + optional bool on_wishlist = 6; + optional bool ignored = 7; + optional bool not_in_users_language = 10; + optional bool not_on_users_platform = 11; + optional bool demo_for_owned_game = 12; + optional bool dlc_for_unowned_game = 13; + optional bool nonpreferred_product_early_access = 22; + optional bool nonpreferred_product_prepurchase = 23; + optional bool nonpreferred_product_software = 24; + optional bool nonpreferred_product_vr = 25; + repeated uint32 excluded_tagids = 21; + repeated .EContentDescriptorID excluded_content_descriptorids = 30; +} + +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; + optional bool computed = 7; + optional string edit_url = 8; + optional uint32 edit_sort_order = 9; + } + + repeated .CStoreBrowse_GetStoreCategories_Response.Category categories = 1; +} + +message CStoreBrowse_GetContentHubConfig_Request { + optional .StoreBrowseContext context = 1; + repeated .EContentDescriptorID excluded_content_descriptorids = 2; +} + +message CStoreBrowse_GetContentHubConfig_Response { + message ContentHubConfig { + optional uint32 hubcategoryid = 1; + optional string type = 2; + optional string handle = 3; + optional string display_name = 4; + optional string url_path = 5; + repeated uint32 replaces_tags = 6; + repeated uint32 must_have_tags = 7; + repeated uint32 any_one_of_tags = 8; + repeated uint32 must_not_have_tags = 9; + optional string hub_description = 10; + } + + repeated .CStoreBrowse_GetContentHubConfig_Response.ContentHubConfig hubconfigs = 1; +} + +message CStoreBrowse_GetPriceStops_Request { + optional string country_code = 1; + optional string currency_code = 2; +} + +message CStoreBrowse_GetPriceStops_Response { + message PriceStop { + optional string formatted_amount = 1; + optional int64 amount_in_cents = 2; + } + + repeated .CStoreBrowse_GetPriceStops_Response.PriceStop price_stops = 1; + optional string currency_code = 2; +} + +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; + optional bool not_allowed_to_reserved_because_already_owned = 19; + optional uint32 appid_ownership_not_allowed_to_reserve = 20; + optional uint32 account_first_date_purchase_requirement = 21; + optional bool position_is_waitlist = 22; + optional string user_waitlist_token = 23; + optional bool queue_in_waitlist = 24; + optional string queue_waitlist_token = 25; + optional uint32 collection_time_active = 26; + optional bool reservation_not_allowed = 27; +} + +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 GetContentHubConfig (.CStoreBrowse_GetContentHubConfig_Request) returns (.CStoreBrowse_GetContentHubConfig_Response); + rpc GetPriceStops (.CStoreBrowse_GetPriceStops_Request) returns (.CStoreBrowse_GetPriceStops_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); +} diff --git a/src/test/java/in/dragonbra/javasteam/rpc/UnifiedInterfaceTest.kt b/src/test/java/in/dragonbra/javasteam/rpc/UnifiedInterfaceTest.kt index a30f62496..397ee2574 100644 --- a/src/test/java/in/dragonbra/javasteam/rpc/UnifiedInterfaceTest.kt +++ b/src/test/java/in/dragonbra/javasteam/rpc/UnifiedInterfaceTest.kt @@ -13,27 +13,37 @@ class UnifiedInterfaceTest { @Test fun testServiceCount() { - val interfaceDir = File(SERVICE_PATH) + assertServiceCount(SERVICE_PATH, knownServiceTypes) + } + + @Test + fun testKnownServices() { + assertKnownServices(SERVICE_PATH, knownServiceTypes) + } + + @Suppress("SameParameterValue") + private fun assertServiceCount(path: String, knownTypes: Array) { + val interfaceDir = File(path) Assertions.assertTrue( interfaceDir.exists() && interfaceDir.isDirectory, "${interfaceDir.name} should exist to test" ) - val fileCount = interfaceDir.listFiles() + val fileCount = interfaceDir.listFiles { file -> file.isFile } Assertions.assertNotNull(fileCount, "Couldn't count files") Assertions.assertTrue( - knownServiceTypes.count() == fileCount!!.size, + knownTypes.count() == fileCount!!.size, "Interface count doesn't match known file types! Did something change in the .proto files?" ) } - @Test - fun testKnownServices() { - for (filename in knownServiceTypes) { - val file = File(SERVICE_PATH, filename) + @Suppress("SameParameterValue") + private fun assertKnownServices(path: String, knownTypes: Array) { + for (filename in knownTypes) { + val file = File(path, filename) Assertions.assertTrue(file.exists() && file.isFile, "File $filename should exist") } } @@ -76,15 +86,13 @@ class UnifiedInterfaceTest { "PlayerClient.kt", "RemoteClient.kt", "RemoteClientSteamClient.kt", + "Store.kt", + "StoreBrowse.kt", + "StoreClient.kt", "TwoFactor.kt", "UserAccount.kt", "PublishedFile.kt", "PublishedFileClient.kt", - - // WebUI - "ClientComm.kt", - "CloudConfigStore.kt", - "CloudConfigStoreClient.kt", ) } }