[{"data":1,"prerenderedAt":90},["ShallowReactive",2],{"docs:\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.GameData.IGameDataManager":3},{"kind":4,"title":5,"namespace":6,"namespaceUrl":7,"trail":8,"typeKind":14,"availability":15,"signature":18,"displaySignature":19,"signatureHtml":20,"documentation":21,"documented":22,"bases":23,"inheritedMembers":24,"members":25,"release":87,"section":89},"type","IGameDataManager","Unbroken.LaunchBox.Plugins.Services.GameData","\u002Fplugins\u002Fnamespaces\u002FUnbroken.LaunchBox.Plugins.Services.GameData",[9,12],{"title":10,"url":11},"Services","\u002Fplugins\u002Fnamespaces\u002FUnbroken.LaunchBox.Plugins.Services",{"title":13,"url":7},"GameData","Interface",{"firstSeen":16,"isBaseline":17,"declarationFirstSeen":16},"14.1",false,"public interface Unbroken.LaunchBox.Plugins.Services.GameData.IGameDataManager","public interface IGameDataManager","\u003Cpre class=\"shiki dark-plus\" style=\"background-color:#1E1E1E;color:#D4D4D4\" tabindex=\"0\" aria-label=\"C# code\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#569CD6\">public\u003C\u002Fspan>\u003Cspan style=\"color:#569CD6\"> interface\u003C\u002Fspan>\u003Cspan style=\"color:#4EC9B0\"> \u003C\u002Fspan>\u003Cspan title=\"Unbroken.LaunchBox.Plugins.Services.GameData.IGameDataManager\">\u003Cspan style=\"color:#4EC9B0\">IGameDataManager\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\n            \u003Cdiv class=\"api-summary\">Browses catalogs and queries descriptive metadata, media candidates, and community completion estimates from installed game-data sources.\u003C\u002Fdiv>\n            \u003Ch4>Remarks\u003C\u002Fh4>\n            \u003Cp>Request this service by declaring a public constructor with an \u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.GameData.IGameDataManager\" title=\"Unbroken.LaunchBox.Plugins.Services.GameData.IGameDataManager\">IGameDataManager\u003C\u002Fa> parameter and call asynchronously after activation. Each capability is independently optional. Queries return provider observations without applying library changes, downloading assets, or initiating sign-in. The host serializes managed provider calls with its existing game-data runtime. Caller cancellation throws \u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.operationcanceledexception\" title=\"System.OperationCanceledException\">OperationCanceledException\u003C\u002Fa>; retrieval problems are reported in results. Ordinary warning diagnostics preserve Success when retrieval completed; warnings remain available in the result&#39;s diagnostics and Message.\u003C\u002Fp>\n            \u003Cp>A provider&#39;s \u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Models.Diagnostics.PluginAccountNotConfiguredException\" title=\"Unbroken.LaunchBox.Plugins.Models.Diagnostics.PluginAccountNotConfiguredException\">PluginAccountNotConfiguredException\u003C\u002Fa> produces Unconfigured. Missing accounts do not change capability support flags. Retrieval stops without offering sign-in; earlier batches can remain as incomplete observations. Authentication rejection and uncertain account state remain failures. No separate achievement or connection preflight is required.\u003C\u002Fp>\n            \n        ",true,[],[],[26,37,47,57,67,77],{"availability":27,"id":28,"name":29,"label":29,"kind":30,"summary":31,"signature":32,"displaySignature":33,"signatureHtml":34,"anchor":35,"documentation":36,"documented":22},{"firstSeen":16,"isBaseline":17,"declarationFirstSeen":16},"M:Unbroken.LaunchBox.Plugins.Services.GameData.IGameDataManager.GetCatalogPageAsync(System.String,Unbroken.LaunchBox.Plugins.Components.GameData.GameCatalogRequest,System.Threading.CancellationToken)","GetCatalogPageAsync","Method","Browses one bounded page of the source's game catalog.","System.Threading.Tasks.Task\u003CUnbroken.LaunchBox.Plugins.Services.PluginServiceResult\u003CUnbroken.LaunchBox.Plugins.Components.GameData.GameCatalogPage>> GetCatalogPageAsync(string sourceId, Unbroken.LaunchBox.Plugins.Components.GameData.GameCatalogRequest request, System.Threading.CancellationToken cancellationToken)","Task\u003CPluginServiceResult\u003CGameCatalogPage>> GetCatalogPageAsync(\n    string sourceId,\n    GameCatalogRequest request,\n    CancellationToken cancellationToken\n)","\u003Cpre class=\"shiki dark-plus\" style=\"background-color:#1E1E1E;color:#D4D4D4\" tabindex=\"0\" aria-label=\"C# code\">\u003Ccode>\u003Cspan class=\"line\">\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.tasks.task-1\" title=\"System.Threading.Tasks.Task (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">Task\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.PluginServiceResult-1\" title=\"Unbroken.LaunchBox.Plugins.Services.PluginServiceResult\">\u003Cspan style=\"color:#4EC9B0\">PluginServiceResult\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Components.GameData.GameCatalogPage\" title=\"Unbroken.LaunchBox.Plugins.Components.GameData.GameCatalogPage\">\u003Cspan style=\"color:#4EC9B0\">GameCatalogPage\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">>> \u003C\u002Fspan>\u003Cspan style=\"color:#DCDCAA\">GetCatalogPageAsync\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#569CD6\">    string\u003C\u002Fspan>\u003Cspan style=\"color:#9CDCFE\"> sourceId\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Components.GameData.GameCatalogRequest\" title=\"Unbroken.LaunchBox.Plugins.Components.GameData.GameCatalogRequest\">\u003Cspan style=\"color:#4EC9B0\">GameCatalogRequest\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> request\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.cancellationtoken\" title=\"System.Threading.CancellationToken (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">CancellationToken\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> cancellationToken\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D4D4D4\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","member-4560ff97a5bb195138c4","\n            \u003Cdiv class=\"api-summary\">Browses one bounded page of the source&#39;s game catalog.\u003C\u002Fdiv>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>sourceId\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>The game-data source identity.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>request\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Optional platform filter, page size, and continuation from a complete previous page.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>cancellationToken\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Cancels retrieval.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Ch4>Returns\u003C\u002Fh4>Existing metadata and media payloads in a catalog page. Follow NextPageToken on a complete page; only a complete page with no continuation establishes the end. Incomplete or failed pages can retain partial data but cannot advance.\n            \u003Ch4>Remarks\u003C\u002Fh4>Makes one attempt without automatic retries or persistent caching. Incomplete or Failed status alone is not an instruction to retry. When Retry is present, honor its CanRetry, RetryAfter, and CountsAsAttempt values. Any retry must use the same page request and a bounded retry policy; without Retry, callers may still choose to retry a transient failure. Continuations are opaque, temporary, and scoped to the source, account, and platform filter. Queries do not import games or download artwork.\n        ",{"availability":38,"id":39,"name":40,"label":40,"kind":30,"summary":41,"signature":42,"displaySignature":43,"signatureHtml":44,"anchor":45,"documentation":46,"documented":22},{"firstSeen":16,"isBaseline":17,"declarationFirstSeen":16},"M:Unbroken.LaunchBox.Plugins.Services.GameData.IGameDataManager.GetCompletionTimesAsync(System.String,System.String,System.Threading.CancellationToken)","GetCompletionTimesAsync","Queries community completion-time estimates for one source-local game, independently of metadata, media, or personal playtime.","System.Threading.Tasks.Task\u003CUnbroken.LaunchBox.Plugins.Services.PluginServiceResult\u003CSystem.Collections.Generic.IReadOnlyList\u003CUnbroken.LaunchBox.Plugins.Components.GameData.GameCompletionTime>>> GetCompletionTimesAsync(string sourceId, string gameId, System.Threading.CancellationToken cancellationToken)","Task\u003CPluginServiceResult\u003CIReadOnlyList\u003CGameCompletionTime>>> GetCompletionTimesAsync(\n    string sourceId,\n    string gameId,\n    CancellationToken cancellationToken\n)","\u003Cpre class=\"shiki dark-plus\" style=\"background-color:#1E1E1E;color:#D4D4D4\" tabindex=\"0\" aria-label=\"C# code\">\u003Ccode>\u003Cspan class=\"line\">\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.tasks.task-1\" title=\"System.Threading.Tasks.Task (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">Task\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.PluginServiceResult-1\" title=\"Unbroken.LaunchBox.Plugins.Services.PluginServiceResult\">\u003Cspan style=\"color:#4EC9B0\">PluginServiceResult\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.collections.generic.ireadonlylist-1\" title=\"System.Collections.Generic.IReadOnlyList (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">IReadOnlyList\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Components.GameData.GameCompletionTime\" title=\"Unbroken.LaunchBox.Plugins.Components.GameData.GameCompletionTime\">\u003Cspan style=\"color:#4EC9B0\">GameCompletionTime\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">>>> \u003C\u002Fspan>\u003Cspan style=\"color:#DCDCAA\">GetCompletionTimesAsync\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#569CD6\">    string\u003C\u002Fspan>\u003Cspan style=\"color:#9CDCFE\"> sourceId\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#569CD6\">    string\u003C\u002Fspan>\u003Cspan style=\"color:#9CDCFE\"> gameId\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.cancellationtoken\" title=\"System.Threading.CancellationToken (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">CancellationToken\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> cancellationToken\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D4D4D4\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","member-33ed68daf38d7955fa7b","\n            \u003Cdiv class=\"api-summary\">Queries community completion-time estimates for one source-local game, independently of metadata, media, or personal playtime.\u003C\u002Fdiv>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>sourceId\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>The game-data source identity.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>gameId\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>The source-local game identity.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>cancellationToken\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Cancels retrieval.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Ch4>Returns\u003C\u002Fh4>Read-only existing completion-time payloads. An empty Success means no known estimates. Null values within estimates remain unknown; unsupported, unavailable, and failed queries have distinct outcomes.\n        ",{"availability":48,"id":49,"name":50,"label":50,"kind":30,"summary":51,"signature":52,"displaySignature":53,"signatureHtml":54,"anchor":55,"documentation":56,"documented":22},{"firstSeen":16,"isBaseline":17,"declarationFirstSeen":16},"M:Unbroken.LaunchBox.Plugins.Services.GameData.IGameDataManager.GetMediaAsync(System.String,Unbroken.LaunchBox.Plugins.Components.GameData.GameMediaRequest,System.Threading.CancellationToken)","GetMediaAsync","Queries media candidates for known source-local game IDs.","System.Threading.Tasks.Task\u003CUnbroken.LaunchBox.Plugins.Services.PluginServiceResult\u003CUnbroken.LaunchBox.Plugins.Components.GameData.GameMediaResult>> GetMediaAsync(string sourceId, Unbroken.LaunchBox.Plugins.Components.GameData.GameMediaRequest request, System.Threading.CancellationToken cancellationToken)","Task\u003CPluginServiceResult\u003CGameMediaResult>> GetMediaAsync(\n    string sourceId,\n    GameMediaRequest request,\n    CancellationToken cancellationToken\n)","\u003Cpre class=\"shiki dark-plus\" style=\"background-color:#1E1E1E;color:#D4D4D4\" tabindex=\"0\" aria-label=\"C# code\">\u003Ccode>\u003Cspan class=\"line\">\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.tasks.task-1\" title=\"System.Threading.Tasks.Task (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">Task\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.PluginServiceResult-1\" title=\"Unbroken.LaunchBox.Plugins.Services.PluginServiceResult\">\u003Cspan style=\"color:#4EC9B0\">PluginServiceResult\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Components.GameData.GameMediaResult\" title=\"Unbroken.LaunchBox.Plugins.Components.GameData.GameMediaResult\">\u003Cspan style=\"color:#4EC9B0\">GameMediaResult\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">>> \u003C\u002Fspan>\u003Cspan style=\"color:#DCDCAA\">GetMediaAsync\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#569CD6\">    string\u003C\u002Fspan>\u003Cspan style=\"color:#9CDCFE\"> sourceId\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Components.GameData.GameMediaRequest\" title=\"Unbroken.LaunchBox.Plugins.Components.GameData.GameMediaRequest\">\u003Cspan style=\"color:#4EC9B0\">GameMediaRequest\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> request\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.cancellationtoken\" title=\"System.Threading.CancellationToken (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">CancellationToken\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> cancellationToken\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D4D4D4\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","member-6a026d3883282433c752","\n            \u003Cdiv class=\"api-summary\">Queries media candidates for known source-local game IDs.\u003C\u002Fdiv>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>sourceId\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>The game-data source identity.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>request\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Existing media request containing at most 100 game IDs. Region preferences and media selection are preserved; null requests all media types, otherwise select at least one type.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>cancellationToken\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Cancels retrieval.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Ch4>Returns\u003C\u002Fh4>The existing media result and host outcome. Candidate URLs, variants, and composition information are preserved. A complete empty catalog means no candidates; omitted or incomplete observations remain unknown.\n            \u003Ch4>Remarks\u003C\u002Fh4>Uses the same batching and retry rules as metadata. An empty game list avoids provider retrieval. Returned assets are candidates for the caller&#39;s use; this query does not run the host&#39;s import or download workflow.\n        ",{"availability":58,"id":59,"name":60,"label":60,"kind":30,"summary":61,"signature":62,"displaySignature":63,"signatureHtml":64,"anchor":65,"documentation":66,"documented":22},{"firstSeen":16,"isBaseline":17,"declarationFirstSeen":16},"M:Unbroken.LaunchBox.Plugins.Services.GameData.IGameDataManager.GetMetadataAsync(System.String,Unbroken.LaunchBox.Plugins.Components.GameData.GameMetadataRequest,System.Threading.CancellationToken)","GetMetadataAsync","Queries descriptive metadata for known source-local game IDs.","System.Threading.Tasks.Task\u003CUnbroken.LaunchBox.Plugins.Services.PluginServiceResult\u003CUnbroken.LaunchBox.Plugins.Components.GameData.GameMetadataResult>> GetMetadataAsync(string sourceId, Unbroken.LaunchBox.Plugins.Components.GameData.GameMetadataRequest request, System.Threading.CancellationToken cancellationToken)","Task\u003CPluginServiceResult\u003CGameMetadataResult>> GetMetadataAsync(\n    string sourceId,\n    GameMetadataRequest request,\n    CancellationToken cancellationToken\n)","\u003Cpre class=\"shiki dark-plus\" style=\"background-color:#1E1E1E;color:#D4D4D4\" tabindex=\"0\" aria-label=\"C# code\">\u003Ccode>\u003Cspan class=\"line\">\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.tasks.task-1\" title=\"System.Threading.Tasks.Task (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">Task\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.PluginServiceResult-1\" title=\"Unbroken.LaunchBox.Plugins.Services.PluginServiceResult\">\u003Cspan style=\"color:#4EC9B0\">PluginServiceResult\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Components.GameData.GameMetadataResult\" title=\"Unbroken.LaunchBox.Plugins.Components.GameData.GameMetadataResult\">\u003Cspan style=\"color:#4EC9B0\">GameMetadataResult\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">>> \u003C\u002Fspan>\u003Cspan style=\"color:#DCDCAA\">GetMetadataAsync\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#569CD6\">    string\u003C\u002Fspan>\u003Cspan style=\"color:#9CDCFE\"> sourceId\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Components.GameData.GameMetadataRequest\" title=\"Unbroken.LaunchBox.Plugins.Components.GameData.GameMetadataRequest\">\u003Cspan style=\"color:#4EC9B0\">GameMetadataRequest\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> request\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.cancellationtoken\" title=\"System.Threading.CancellationToken (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">CancellationToken\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> cancellationToken\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D4D4D4\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","member-f50c3226700e8a57b1ad","\n            \u003Cdiv class=\"api-summary\">Queries descriptive metadata for known source-local game IDs.\u003C\u002Fdiv>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>sourceId\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>The game-data source identity.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>request\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Existing metadata request containing at most 100 game IDs. Duplicate IDs are queried once. The host splits the request to the provider&#39;s batch limit.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>cancellationToken\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Cancels retrieval.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Ch4>Returns\u003C\u002Fh4>The existing metadata result, including completeness, diagnostics, and retry information, inside the shared host outcome. Omitted games and fields remain unknown. Valid partial observations can accompany Incomplete or Failed.\n            \u003Ch4>Remarks\u003C\u002Fh4>Queries make one attempt per batch and stop on a failure or rate-limit deferral. They do not automatically retry. Honor the returned Retry information before requesting another attempt. These reads have no persistent consumer cache.\n        ",{"availability":68,"id":69,"name":70,"label":70,"kind":30,"summary":71,"signature":72,"displaySignature":73,"signatureHtml":74,"anchor":75,"documentation":76,"documented":22},{"firstSeen":16,"isBaseline":17,"declarationFirstSeen":16},"M:Unbroken.LaunchBox.Plugins.Services.GameData.IGameDataManager.GetPlatformsAsync(System.String,System.Threading.CancellationToken)","GetPlatformsAsync","Lists a source's catalog platforms without requiring library ownership or achievement support.","System.Threading.Tasks.Task\u003CUnbroken.LaunchBox.Plugins.Services.PluginServiceResult\u003CSystem.Collections.Generic.IReadOnlyList\u003CUnbroken.LaunchBox.Plugins.Components.GameData.GameCatalogPlatform>>> GetPlatformsAsync(string sourceId, System.Threading.CancellationToken cancellationToken)","Task\u003CPluginServiceResult\u003CIReadOnlyList\u003CGameCatalogPlatform>>> GetPlatformsAsync(\n    string sourceId,\n    CancellationToken cancellationToken\n)","\u003Cpre class=\"shiki dark-plus\" style=\"background-color:#1E1E1E;color:#D4D4D4\" tabindex=\"0\" aria-label=\"C# code\">\u003Ccode>\u003Cspan class=\"line\">\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.tasks.task-1\" title=\"System.Threading.Tasks.Task (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">Task\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.PluginServiceResult-1\" title=\"Unbroken.LaunchBox.Plugins.Services.PluginServiceResult\">\u003Cspan style=\"color:#4EC9B0\">PluginServiceResult\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.collections.generic.ireadonlylist-1\" title=\"System.Collections.Generic.IReadOnlyList (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">IReadOnlyList\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Components.GameData.GameCatalogPlatform\" title=\"Unbroken.LaunchBox.Plugins.Components.GameData.GameCatalogPlatform\">\u003Cspan style=\"color:#4EC9B0\">GameCatalogPlatform\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">>>> \u003C\u002Fspan>\u003Cspan style=\"color:#DCDCAA\">GetPlatformsAsync\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#569CD6\">    string\u003C\u002Fspan>\u003Cspan style=\"color:#9CDCFE\"> sourceId\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.cancellationtoken\" title=\"System.Threading.CancellationToken (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">CancellationToken\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> cancellationToken\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D4D4D4\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","member-6fb72b41085ba96414c7","\n            \u003Cdiv class=\"api-summary\">Lists a source&#39;s catalog platforms without requiring library ownership or achievement support.\u003C\u002Fdiv>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>sourceId\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>The game-data source identity.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>cancellationToken\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Cancels retrieval.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Ch4>Returns\u003C\u002Fh4>Read-only platform identities and names. Empty Success means no platform filters; unsupported, unavailable, and failed queries remain distinct.\n        ",{"availability":78,"id":79,"name":80,"label":80,"kind":30,"summary":81,"signature":82,"displaySignature":83,"signatureHtml":84,"anchor":85,"documentation":86,"documented":22},{"firstSeen":16,"isBaseline":17,"declarationFirstSeen":16},"M:Unbroken.LaunchBox.Plugins.Services.GameData.IGameDataManager.GetSourcesAsync(System.Threading.CancellationToken)","GetSourcesAsync","Lists registered game-data sources without invoking their retrieval capabilities.","System.Threading.Tasks.Task\u003CSystem.Collections.Generic.IReadOnlyList\u003CUnbroken.LaunchBox.Plugins.Services.GameData.GameDataSourceInfo>> GetSourcesAsync(System.Threading.CancellationToken cancellationToken)","Task\u003CIReadOnlyList\u003CGameDataSourceInfo>> GetSourcesAsync(\n    CancellationToken cancellationToken\n)","\u003Cpre class=\"shiki dark-plus\" style=\"background-color:#1E1E1E;color:#D4D4D4\" tabindex=\"0\" aria-label=\"C# code\">\u003Ccode>\u003Cspan class=\"line\">\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.tasks.task-1\" title=\"System.Threading.Tasks.Task (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">Task\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.collections.generic.ireadonlylist-1\" title=\"System.Collections.Generic.IReadOnlyList (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">IReadOnlyList\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">&#x3C;\u003C\u002Fspan>\u003Ca href=\"\u002Fplugins\u002Freference\u002FUnbroken.LaunchBox.Plugins.Services.GameData.GameDataSourceInfo\" title=\"Unbroken.LaunchBox.Plugins.Services.GameData.GameDataSourceInfo\">\u003Cspan style=\"color:#4EC9B0\">GameDataSourceInfo\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#D4D4D4\">>> \u003C\u002Fspan>\u003Cspan style=\"color:#DCDCAA\">GetSourcesAsync\u003C\u002Fspan>\u003Cspan style=\"color:#D4D4D4\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#4EC9B0\">    \u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fsystem.threading.cancellationtoken\" title=\"System.Threading.CancellationToken (Microsoft Learn)\">\u003Cspan style=\"color:#4EC9B0\">CancellationToken\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan style=\"color:#9CDCFE\"> cancellationToken\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D4D4D4\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","member-03e245f901a7f3713163","\n            \u003Cdiv class=\"api-summary\">Lists registered game-data sources without invoking their retrieval capabilities.\u003C\u002Fdiv>\n            \u003Cdl>\u003Cdt class=\"version-row\">\u003Cspan>\u003Ccode>cancellationToken\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Fdt>\u003Cdd>Cancels discovery.\u003C\u002Fdd>\u003C\u002Fdl>\n            \u003Ch4>Returns\u003C\u002Fh4>One entry per registered source with its currently supported operations, including built-in sources. Disabled or conflicting sources are marked unavailable with all support properties false. Removed sources are omitted.\n        ",{"currentRelease":16,"currentReleaseState":88},"stable","plugins",1794763757785]