diff --git a/BungieSharper.Benchmark/BungieSharper.Benchmark.csproj b/BungieSharper.Benchmark/BungieSharper.Benchmark.csproj index 5eba1b0..989977a 100644 --- a/BungieSharper.Benchmark/BungieSharper.Benchmark.csproj +++ b/BungieSharper.Benchmark/BungieSharper.Benchmark.csproj @@ -10,7 +10,7 @@ false net5.0;net6.0 - 0.9.0 + 0.9.1 diff --git a/BungieSharper.CodeGen.Entities.Tests/BungieSharper.CodeGen.Entities.Tests.csproj b/BungieSharper.CodeGen.Entities.Tests/BungieSharper.CodeGen.Entities.Tests.csproj index 2782d40..d050b81 100644 --- a/BungieSharper.CodeGen.Entities.Tests/BungieSharper.CodeGen.Entities.Tests.csproj +++ b/BungieSharper.CodeGen.Entities.Tests/BungieSharper.CodeGen.Entities.Tests.csproj @@ -9,7 +9,7 @@ false net6.0 - 0.9.0 + 0.9.1 diff --git a/BungieSharper.CodeGen.Entities/BungieSharper.CodeGen.Entities.csproj b/BungieSharper.CodeGen.Entities/BungieSharper.CodeGen.Entities.csproj index 9e0fc3b..cdf3cc6 100644 --- a/BungieSharper.CodeGen.Entities/BungieSharper.CodeGen.Entities.csproj +++ b/BungieSharper.CodeGen.Entities/BungieSharper.CodeGen.Entities.csproj @@ -9,7 +9,7 @@ true net6.0 - 0.9.0 + 0.9.1 diff --git a/BungieSharper.CodeGen/BungieSharper.CodeGen.csproj b/BungieSharper.CodeGen/BungieSharper.CodeGen.csproj index 56d69d5..436ae52 100644 --- a/BungieSharper.CodeGen/BungieSharper.CodeGen.csproj +++ b/BungieSharper.CodeGen/BungieSharper.CodeGen.csproj @@ -10,7 +10,7 @@ false net6.0 - 0.9.0 + 0.9.1 diff --git a/BungieSharper.Entities/BungieSharper.Entities.csproj b/BungieSharper.Entities/BungieSharper.Entities.csproj index 2b3708d..48079fc 100644 --- a/BungieSharper.Entities/BungieSharper.Entities.csproj +++ b/BungieSharper.Entities/BungieSharper.Entities.csproj @@ -10,7 +10,7 @@ true net5.0;net6.0 - 0.9.0 + 0.9.1 diff --git a/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.ActivityModifiers.cs b/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.ActivityModifiers.cs index 38d0f66..fbe6730 100644 --- a/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.ActivityModifiers.cs +++ b/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.ActivityModifiers.cs @@ -10,6 +10,12 @@ public class DestinyActivityModifierDefinition [JsonPropertyName("displayProperties")] public Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition DisplayProperties { get; set; } + [JsonPropertyName("displayInNavMode")] + public bool DisplayInNavMode { get; set; } + + [JsonPropertyName("displayInActivitySelection")] + public bool DisplayInActivitySelection { get; set; } + /// /// The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally. /// When entities refer to each other in Destiny content, it is this hash that they are referring to. diff --git a/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.Records.cs b/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.Records.cs index 4b3c96f..05b7d8a 100644 --- a/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.Records.cs +++ b/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.Records.cs @@ -28,6 +28,10 @@ public class DestinyRecordDefinition [JsonPropertyName("forTitleGilding")] public bool ForTitleGilding { get; set; } + /// A hint to show a large icon for a reward + [JsonPropertyName("shouldShowLargeIcons")] + public bool ShouldShowLargeIcons { get; set; } + [JsonPropertyName("titleInfo")] public Destiny.Definitions.Records.DestinyRecordTitleBlock TitleInfo { get; set; } diff --git a/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.Traits.cs b/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.Traits.cs index a28198d..704d3cf 100644 --- a/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.Traits.cs +++ b/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.Traits.cs @@ -14,6 +14,10 @@ public class DestinyTraitDefinition [JsonPropertyName("traitCategoryHash")] public uint TraitCategoryHash { get; set; } + /// An identifier for how this trait can be displayed. For example: a 'keyword' hint to show an explanation for certain related terms. + [JsonPropertyName("displayHint")] + public string DisplayHint { get; set; } + /// /// The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally. /// When entities refer to each other in Destiny content, it is this hash that they are referring to. diff --git a/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.cs b/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.cs index ec63553..69295d9 100644 --- a/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.cs +++ b/BungieSharper.Entities/Destiny/Entities.Destiny.Definitions.cs @@ -2678,7 +2678,10 @@ public class DestinyObjectiveDefinition [JsonPropertyName("isCountingDownward")] public bool IsCountingDownward { get; set; } - /// The UI style applied to the objective. It's an enum, take a look at DestinyUnlockValueUIStyle for details of the possible styles. Use this info as you wish to customize your UI. + /// + /// The UI style applied to the objective. It's an enum, take a look at DestinyUnlockValueUIStyle for details of the possible styles. Use this info as you wish to customize your UI. + /// DEPRECATED: This is no longer populated by Destiny 2 game content. Please use inProgressValueStyle and completedValueStyle instead. + /// [JsonPropertyName("valueStyle")] public Destiny.DestinyUnlockValueUIStyle ValueStyle { get; set; } @@ -3591,6 +3594,73 @@ public class DestinyFactionVendorDefinition internal partial class DestinyFactionVendorDefinitionJsonContext : JsonSerializerContext { } #endif + public class DestinySandboxPatternDefinition + { + [JsonPropertyName("patternHash")] + public uint PatternHash { get; set; } + + [JsonPropertyName("patternGlobalTagIdHash")] + public uint PatternGlobalTagIdHash { get; set; } + + [JsonPropertyName("weaponContentGroupHash")] + public uint WeaponContentGroupHash { get; set; } + + [JsonPropertyName("weaponTranslationGroupHash")] + public uint WeaponTranslationGroupHash { get; set; } + + [JsonPropertyName("weaponTypeHash")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public uint? WeaponTypeHash { get; set; } + + [JsonPropertyName("weaponType")] + public Destiny.DestinyItemSubType WeaponType { get; set; } + + [JsonPropertyName("filters")] + public IEnumerable Filters { get; set; } + + /// + /// The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally. + /// When entities refer to each other in Destiny content, it is this hash that they are referring to. + /// + [JsonPropertyName("hash")] + public uint Hash { get; set; } + + /// The index of the entity as it was found in the investment tables. + [JsonPropertyName("index")] + public int Index { get; set; } + + /// If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry! + [JsonPropertyName("redacted")] + public bool Redacted { get; set; } + } + +#if NET6_0_OR_GREATER + [JsonSerializable(typeof(DestinySandboxPatternDefinition))] + [JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)] + internal partial class DestinySandboxPatternDefinitionJsonContext : JsonSerializerContext { } +#endif + + public class DestinyArrangementRegionFilterDefinition + { + [JsonPropertyName("artArrangementRegionHash")] + public uint ArtArrangementRegionHash { get; set; } + + [JsonPropertyName("artArrangementRegionIndex")] + public int ArtArrangementRegionIndex { get; set; } + + [JsonPropertyName("statHash")] + public uint StatHash { get; set; } + + [JsonPropertyName("arrangementIndexByStatValue")] + public Dictionary ArrangementIndexByStatValue { get; set; } + } + +#if NET6_0_OR_GREATER + [JsonSerializable(typeof(DestinyArrangementRegionFilterDefinition))] + [JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)] + internal partial class DestinyArrangementRegionFilterDefinitionJsonContext : JsonSerializerContext { } +#endif + /// /// Items like Sacks or Boxes can have items that it shows in-game when you view details that represent the items you can obtain if you use or acquire the item. /// This defines those categories, and gives some insights into that data's source. @@ -4122,6 +4192,11 @@ public class DestinyPlugItemCraftingRequirements [JsonPropertyName("unlockRequirements")] public IEnumerable UnlockRequirements { get; set; } + /// If the plug has a known level requirement, it'll be available here. + [JsonPropertyName("requiredLevel")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public int? RequiredLevel { get; set; } + [JsonPropertyName("materialRequirementHashes")] public IEnumerable MaterialRequirementHashes { get; set; } } diff --git a/BungieSharper.Entities/Destiny/Entities.Destiny.HistoricalStats.Definitions.cs b/BungieSharper.Entities/Destiny/Entities.Destiny.HistoricalStats.Definitions.cs index 963e8a7..aef4c0c 100644 --- a/BungieSharper.Entities/Destiny/Entities.Destiny.HistoricalStats.Definitions.cs +++ b/BungieSharper.Entities/Destiny/Entities.Destiny.HistoricalStats.Definitions.cs @@ -88,7 +88,11 @@ public enum DestinyActivityModeType : int Sundial = 83, TrialsOfOsiris = 84, Dares = 85, - Offensive = 86 + Offensive = 86, + LostSector = 87, + Rift = 88, + ZoneControl = 89, + IronBannerRift = 90 } public class DestinyHistoricalStatsDefinition diff --git a/BungieSharper.Entities/Destiny/Entities.Destiny.HistoricalStats.cs b/BungieSharper.Entities/Destiny/Entities.Destiny.HistoricalStats.cs index 0cc3005..3af4b85 100644 --- a/BungieSharper.Entities/Destiny/Entities.Destiny.HistoricalStats.cs +++ b/BungieSharper.Entities/Destiny/Entities.Destiny.HistoricalStats.cs @@ -10,12 +10,12 @@ public class DestinyPostGameCarnageReportData [JsonPropertyName("period")] public DateTime Period { get; set; } - /// OBSOLETE - If this activity has "phases", this is the phase at which the activity was started. + /// If this activity has "phases", this is the phase at which the activity was started. This value is only valid for activities before the Beyond Light expansion shipped. Subsequent activities will not have a valid value here. [JsonPropertyName("startingPhaseIndex")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public int? StartingPhaseIndex { get; set; } - /// True if the activity was started from the beginning, if that information is available. + /// True if the activity was started from the beginning, if that information is available and the activity was played post Witch Queen release. [JsonPropertyName("activityWasStartedFromBeginning")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public bool? ActivityWasStartedFromBeginning { get; set; } diff --git a/BungieSharper.Entities/Destiny/Entities.Destiny.Quests.cs b/BungieSharper.Entities/Destiny/Entities.Destiny.Quests.cs index 7a04584..cc11af7 100644 --- a/BungieSharper.Entities/Destiny/Entities.Destiny.Quests.cs +++ b/BungieSharper.Entities/Destiny/Entities.Destiny.Quests.cs @@ -22,7 +22,7 @@ public class DestinyObjectiveProgress [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public uint? ActivityHash { get; set; } - /// If progress has been made, and the progress can be measured numerically, this will be the value of that progress. You can compare it to the DestinyObjectiveDefinition.completionValue property for current vs. upper bounds, and use DestinyObjectiveDefinition.valueStyle to determine how this should be rendered. Note that progress, in Destiny 2, need not be a literal numeric progression. It could be one of a number of possible values, even a Timestamp. Always examine DestinyObjectiveDefinition.valueStyle before rendering progress. + /// If progress has been made, and the progress can be measured numerically, this will be the value of that progress. You can compare it to the DestinyObjectiveDefinition.completionValue property for current vs. upper bounds, and use DestinyObjectiveDefinition.inProgressValueStyle or completedValueStyle to determine how this should be rendered. Note that progress, in Destiny 2, need not be a literal numeric progression. It could be one of a number of possible values, even a Timestamp. Always examine DestinyObjectiveDefinition.inProgressValueStyle or completedValueStyle before rendering progress. [JsonPropertyName("progress")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public int? Progress { get; set; } diff --git a/BungieSharper.Entities/Destiny/Entities.Destiny.cs b/BungieSharper.Entities/Destiny/Entities.Destiny.cs index ee4fb58..9ff01d5 100644 --- a/BungieSharper.Entities/Destiny/Entities.Destiny.cs +++ b/BungieSharper.Entities/Destiny/Entities.Destiny.cs @@ -823,7 +823,8 @@ public enum DestinyItemType : int Bounty = 26, Wrapper = 27, SeasonalArtifact = 28, - Finisher = 29 + Finisher = 29, + Pattern = 30 } /// @@ -1524,7 +1525,10 @@ public enum DestinyVendorItemState : int Popular = 65536, /// This indicates that the sale item is free. - Free = 131072 + Free = 131072, + + /// This indicates that the sale item is locked. + Locked = 262144 } /// diff --git a/BungieSharper.Entities/Exceptions/Entities.Exceptions.cs b/BungieSharper.Entities/Exceptions/Entities.Exceptions.cs index a99458c..07a6e90 100644 --- a/BungieSharper.Entities/Exceptions/Entities.Exceptions.cs +++ b/BungieSharper.Entities/Exceptions/Entities.Exceptions.cs @@ -188,6 +188,10 @@ public enum PlatformErrorCodes : int NonTransactionalEmailSendFailure = 235, UnknownErrorSettingGlobalDisplayName = 236, DuplicateGlobalDisplayName = 237, + ErrorRunningNameValidationChecks = 238, + ErrorDatabaseGlobalName = 239, + ErrorNoAvailableNameChanges = 240, + ErrorNameAlreadySetToInput = 241, MessagingUnknownError = 300, MessagingSelfError = 301, MessagingSendThrottle = 302, @@ -747,6 +751,12 @@ public enum PlatformErrorCodes : int ClanFireteamTooManyOpenScheduledFireteams = 3030, ClanFireteamCannotReopenScheduledFireteams = 3031, ClanFireteamJoinNoAccountSpecified = 3032, + ClanFireteamMinDestiny2ProgressForCreation = 3033, + ClanFireteamMinDestiny2ProgressForJoin = 3034, + ClanFireteamSMSOrPurchaseRequiredCreate = 3035, + ClanFireteamPurchaseRequiredCreate = 3036, + ClanFireteamSMSOrPurchaseRequiredJoin = 3037, + ClanFireteamPurchaseRequiredJoin = 3038, CrossSaveOverriddenAccountNotFound = 3200, CrossSaveTooManyOverriddenPlatforms = 3201, CrossSaveNoOverriddenPlatforms = 3202, diff --git a/BungieSharper.Entities/Tokens/Entities.Tokens.cs b/BungieSharper.Entities/Tokens/Entities.Tokens.cs index e5353ed..735bc3a 100644 --- a/BungieSharper.Entities/Tokens/Entities.Tokens.cs +++ b/BungieSharper.Entities/Tokens/Entities.Tokens.cs @@ -87,4 +87,116 @@ public class PartnerOfferHistoryResponse [JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)] internal partial class PartnerOfferHistoryResponseJsonContext : JsonSerializerContext { } #endif + + public class BungieRewardDisplay + { + [JsonPropertyName("UserRewardAvailabilityModel")] + public Tokens.UserRewardAvailabilityModel UserRewardAvailabilityModel { get; set; } + + [JsonPropertyName("ObjectiveDisplayProperties")] + public Tokens.RewardDisplayProperties ObjectiveDisplayProperties { get; set; } + + [JsonPropertyName("RewardDisplayProperties")] + public Tokens.RewardDisplayProperties RewardDisplayProperties { get; set; } + } + +#if NET6_0_OR_GREATER + [JsonSerializable(typeof(BungieRewardDisplay))] + [JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)] + internal partial class BungieRewardDisplayJsonContext : JsonSerializerContext { } +#endif + + public class UserRewardAvailabilityModel + { + [JsonPropertyName("AvailabilityModel")] + public Tokens.RewardAvailabilityModel AvailabilityModel { get; set; } + + [JsonPropertyName("IsAvailableForUser")] + public bool IsAvailableForUser { get; set; } + + [JsonPropertyName("IsUnlockedForUser")] + public bool IsUnlockedForUser { get; set; } + } + +#if NET6_0_OR_GREATER + [JsonSerializable(typeof(UserRewardAvailabilityModel))] + [JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)] + internal partial class UserRewardAvailabilityModelJsonContext : JsonSerializerContext { } +#endif + + public class RewardAvailabilityModel + { + [JsonPropertyName("HasExistingCode")] + public bool HasExistingCode { get; set; } + + [JsonPropertyName("RecordDefinitions")] + public IEnumerable RecordDefinitions { get; set; } + + [JsonPropertyName("CollectibleDefinitions")] + public IEnumerable CollectibleDefinitions { get; set; } + + [JsonPropertyName("IsOffer")] + public bool IsOffer { get; set; } + + [JsonPropertyName("HasOffer")] + public bool HasOffer { get; set; } + + [JsonPropertyName("OfferApplied")] + public bool OfferApplied { get; set; } + + [JsonPropertyName("DecryptedToken")] + public string DecryptedToken { get; set; } + + [JsonPropertyName("IsLoyaltyReward")] + public bool IsLoyaltyReward { get; set; } + + [JsonPropertyName("ShopifyEndDate")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public DateTime? ShopifyEndDate { get; set; } + + [JsonPropertyName("GameEarnByDate")] + public DateTime GameEarnByDate { get; set; } + + [JsonPropertyName("RedemptionEndDate")] + public DateTime RedemptionEndDate { get; set; } + } + +#if NET6_0_OR_GREATER + [JsonSerializable(typeof(RewardAvailabilityModel))] + [JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)] + internal partial class RewardAvailabilityModelJsonContext : JsonSerializerContext { } +#endif + + public class CollectibleDefinitions + { + [JsonPropertyName("CollectibleDefinition")] + public Destiny.Definitions.Collectibles.DestinyCollectibleDefinition CollectibleDefinition { get; set; } + + [JsonPropertyName("DestinyInventoryItemDefinition")] + public Destiny.Definitions.DestinyInventoryItemDefinition DestinyInventoryItemDefinition { get; set; } + } + +#if NET6_0_OR_GREATER + [JsonSerializable(typeof(CollectibleDefinitions))] + [JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)] + internal partial class CollectibleDefinitionsJsonContext : JsonSerializerContext { } +#endif + + public class RewardDisplayProperties + { + [JsonPropertyName("Name")] + public string Name { get; set; } + + [JsonPropertyName("Description")] + public string Description { get; set; } + + [JsonPropertyName("ImagePath")] + public string ImagePath { get; set; } + } + +#if NET6_0_OR_GREATER + [JsonSerializable(typeof(RewardDisplayProperties))] + [JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)] + internal partial class RewardDisplayPropertiesJsonContext : JsonSerializerContext { } +#endif } \ No newline at end of file diff --git a/BungieSharper.Tests/BungieSharper.Tests.csproj b/BungieSharper.Tests/BungieSharper.Tests.csproj index 1611e63..1bacab2 100644 --- a/BungieSharper.Tests/BungieSharper.Tests.csproj +++ b/BungieSharper.Tests/BungieSharper.Tests.csproj @@ -9,7 +9,7 @@ false net5.0;net6.0 - 0.9.0 + 0.9.1 diff --git a/BungieSharper/BungieSharper.csproj b/BungieSharper/BungieSharper.csproj index b7fe2f2..58f2140 100644 --- a/BungieSharper/BungieSharper.csproj +++ b/BungieSharper/BungieSharper.csproj @@ -10,7 +10,7 @@ true net5.0;net6.0 - 0.9.0 + 0.9.1 diff --git a/BungieSharper/Endpoints/Tokens.cs b/BungieSharper/Endpoints/Tokens.cs index d34f426..b706451 100644 --- a/BungieSharper/Endpoints/Tokens.cs +++ b/BungieSharper/Endpoints/Tokens.cs @@ -85,5 +85,53 @@ public Task Tokens_GetPartnerOfferSkuHistory(int partnerApplicationId, lon null, HttpMethod.Get, authToken, cancelToken ); } + + /// + /// Returns the bungie rewards for the targeted user. + /// Requires OAuth2 scope(s): ReadAndApplyTokens + /// + /// bungie.net user membershipId for requested user rewards. If not self, elevated permissions are required. + /// The OAuth access token to authenticate the request with. + /// The to observe. + public Task> Tokens_GetBungieRewardsForUser(long membershipId, string? authToken = null, CancellationToken cancelToken = default) + { + return _apiAccessor.ApiRequestAsync>( + new Uri($"Tokens/Rewards/GetRewardsForUser/{membershipId}/", UriKind.Relative), + null, HttpMethod.Get, authToken, cancelToken + ); + } + + /// + /// The custom type to deserialize to. + public Task Tokens_GetBungieRewardsForUser(long membershipId, string? authToken = null, CancellationToken cancelToken = default) + { + return _apiAccessor.ApiRequestAsync( + new Uri($"Tokens/Rewards/GetRewardsForUser/{membershipId}/", UriKind.Relative), + null, HttpMethod.Get, authToken, cancelToken + ); + } + + /// + /// Returns a list of the current bungie rewards + /// + /// The OAuth access token to authenticate the request with. + /// The to observe. + public Task> Tokens_GetBungieRewardsList(string? authToken = null, CancellationToken cancelToken = default) + { + return _apiAccessor.ApiRequestAsync>( + new Uri($"Tokens/Rewards/BungieRewards/", UriKind.Relative), + null, HttpMethod.Get, authToken, cancelToken + ); + } + + /// + /// The custom type to deserialize to. + public Task Tokens_GetBungieRewardsList(string? authToken = null, CancellationToken cancelToken = default) + { + return _apiAccessor.ApiRequestAsync( + new Uri($"Tokens/Rewards/BungieRewards/", UriKind.Relative), + null, HttpMethod.Get, authToken, cancelToken + ); + } } } \ No newline at end of file diff --git a/BungieSharper/Endpoints/User.cs b/BungieSharper/Endpoints/User.cs index 44d28d6..83db498 100644 --- a/BungieSharper/Endpoints/User.cs +++ b/BungieSharper/Endpoints/User.cs @@ -34,6 +34,30 @@ public Task User_GetBungieNetUserById(long id, string? authToken = null, C ); } + /// + /// Gets a list of all display names linked to this membership id but sanitized (profanity filtered). Obeys all visibility rules of calling user and is heavily cached. + /// + /// The requested membership id to load. + /// The OAuth access token to authenticate the request with. + /// The to observe. + public Task> User_GetSanitizedPlatformDisplayNames(long membershipId, string? authToken = null, CancellationToken cancelToken = default) + { + return _apiAccessor.ApiRequestAsync>( + new Uri($"User/GetSanitizedPlatformDisplayNames/{membershipId}/", UriKind.Relative), + null, HttpMethod.Get, authToken, cancelToken + ); + } + + /// + /// The custom type to deserialize to. + public Task User_GetSanitizedPlatformDisplayNames(long membershipId, string? authToken = null, CancellationToken cancelToken = default) + { + return _apiAccessor.ApiRequestAsync( + new Uri($"User/GetSanitizedPlatformDisplayNames/{membershipId}/", UriKind.Relative), + null, HttpMethod.Get, authToken, cancelToken + ); + } + /// /// Returns a list of credential types attached to the requested account /// diff --git a/bnet-api-spec b/bnet-api-spec index 76c6979..b50cd37 160000 --- a/bnet-api-spec +++ b/bnet-api-spec @@ -1 +1 @@ -Subproject commit 76c6979959b05c30766b9bf75ee38ee54a8dedcd +Subproject commit b50cd37feb78ac62629a6fe8e7a3eb49a95d7202