diff --git a/PlayFabSDK/source/PlayFabAdminModels.cs b/PlayFabSDK/source/PlayFabAdminModels.cs index 6f236ece..ef600f16 100644 --- a/PlayFabSDK/source/PlayFabAdminModels.cs +++ b/PlayFabSDK/source/PlayFabAdminModels.cs @@ -21,12 +21,64 @@ public class AbortTaskInstanceRequest : PlayFabRequestCommon } + /// + /// The work to be performed on each entity which can only be of one type. + /// + public class Action + { + /// + /// Action content to ban player + /// + public BanPlayerContent BanPlayerContent ; + + /// + /// Action content to delete player + /// + public DeletePlayerContent DeletePlayerContent ; + + /// + /// Action content to execute cloud script + /// + public ExecuteCloudScriptContent ExecuteCloudScriptContent ; + + /// + /// Action content to execute azure function + /// + public ExecuteFunctionContent ExecuteFunctionContent ; + + /// + /// Action content to grant item + /// + public GrantItemContent GrantItemContent ; + + /// + /// Action content to grant virtual currency + /// + public GrantVirtualCurrencyContent GrantVirtualCurrencyContent ; + + /// + /// Action content to increment player statistic + /// + public IncrementPlayerStatisticContent IncrementPlayerStatisticContent ; + + /// + /// Action content to send push notification + /// + public PushNotificationContent PushNotificationContent ; + + /// + /// Action content to send email + /// + public SendEmailContent SendEmailContent ; + + } + public class ActionsOnPlayersInSegmentTaskParameter { /// - /// ID of the action to perform on each player in segment. + /// List of actions to perform on each player in a segment. Each action object can contain only one action type. /// - public string ActionId ; + public List Actions ; /// /// ID of the segment to perform actions on. @@ -349,6 +401,20 @@ public class BanInfo } + public class BanPlayerContent + { + /// + /// Duration(in hours) to ban a player. If not provided, the player will be banned permanently. + /// + public int BanDurationHours ; + + /// + /// Reason to ban a player + /// + public string BanReason ; + + } + public class BanPlayerSegmentAction { /// @@ -1615,6 +1681,10 @@ public class DeleteOpenIdConnectionRequest : PlayFabRequestCommon } + public class DeletePlayerContent + { + } + /// /// Deletes all data associated with the player, including statistics, custom data, inventory, purchases, virtual currency /// balances, characters and shared group memberships. Removes the player from all leaderboards and player search indexes. @@ -1828,6 +1898,25 @@ public class ExecuteAzureFunctionSegmentAction } + public class ExecuteCloudScriptContent + { + /// + /// Arguments(JSON) to be passed into the cloudscript method + /// + public string CloudScriptMethodArguments ; + + /// + /// Cloudscript method name + /// + public string CloudScriptMethodName ; + + /// + /// Publish cloudscript results as playstream event + /// + public bool PublishResultsToPlayStream ; + + } + public class ExecuteCloudScriptResult : PlayFabResultCommon { /// @@ -1914,6 +2003,25 @@ public class ExecuteCloudScriptSegmentAction } + public class ExecuteFunctionContent + { + /// + /// Arguments(JSON) to be passed into the cloudscript azure function + /// + public string CloudScriptFunctionArguments ; + + /// + /// Cloudscript azure function name + /// + public string CloudScriptFunctionName ; + + /// + /// Publish results from executing the azure function as playstream event + /// + public bool PublishResultsToPlayStream ; + + } + /// /// Exports all data associated with the master player account, including data from all titles the player has played, such /// as statistics, custom data, inventory, purchases, virtual currency balances, characters, group memberships, publisher @@ -2547,6 +2655,7 @@ public enum GenericErrorCodes InvalidServiceConfiguration, InvalidNamespaceMismatch, LeaderboardColumnLengthMismatch, + InvalidStatisticScore, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingQueueNotFound, @@ -2691,6 +2800,12 @@ public enum GenericErrorCodes LobbyNewOwnerMustBeConnected, LobbyCurrentOwnerStillConnected, LobbyMemberIsNotOwner, + LobbyAssociatedServerMismatch, + LobbyAssociatedServerNotFound, + LobbyAssociatedToDifferentServer, + LobbyServerAlreadyAssociated, + LobbyIsNotClientOwned, + LobbyDoesNotUseConnections, EventSamplingInvalidRatio, EventSamplingInvalidEventNamespace, EventSamplingInvalidEventName, @@ -3757,6 +3872,25 @@ public int CompareTo(GrantedItemInstance other) } + public class GrantItemContent + { + /// + /// Publish cloudscript results as playstream event + /// + public string CatalogVersion ; + + /// + /// Publish cloudscript results as playstream event + /// + public string ItemId ; + + /// + /// Publish cloudscript results as playstream event + /// + public int ItemQuantity ; + + } + public class GrantItemSegmentAction { /// @@ -3814,6 +3948,20 @@ public class GrantItemsToUsersResult : PlayFabResultCommon } + public class GrantVirtualCurrencyContent + { + /// + /// Amount of currency to be granted to a player + /// + public int CurrencyAmount ; + + /// + /// Code of the currency to be granted to a player + /// + public string CurrencyCode ; + + } + public class GrantVirtualCurrencySegmentAction { /// @@ -3860,6 +4008,20 @@ public class IncrementLimitedEditionItemAvailabilityResult : PlayFabResultCommon { } + public class IncrementPlayerStatisticContent + { + /// + /// Amount(in whole number) to increase the player statistic by + /// + public int StatisticChangeBy ; + + /// + /// Name of the player statistic to be incremented + /// + public string StatisticName ; + + } + public class IncrementPlayerStatisticSegmentAction { /// @@ -4928,6 +5090,25 @@ public class PlayerStatisticVersion } + public class PushNotificationContent + { + /// + /// Text of message to send. + /// + public string Message ; + + /// + /// Id of the push notification template. + /// + public string PushNotificationTemplateId ; + + /// + /// Subject of message to send (may not be displayed in all platforms) + /// + public string Subject ; + + } + public enum PushNotificationPlatform { ApplePushNotificationService, @@ -6164,6 +6345,15 @@ public class SendAccountRecoveryEmailResult : PlayFabResultCommon { } + public class SendEmailContent + { + /// + /// The email template id of the email template to send. + /// + public string EmailTemplateId ; + + } + /// /// This API lets developers set overrides for membership expirations, independent of any subscriptions setting it. /// diff --git a/PlayFabSDK/source/PlayFabErrors.cs b/PlayFabSDK/source/PlayFabErrors.cs index ed6e077b..c7b8d91e 100644 --- a/PlayFabSDK/source/PlayFabErrors.cs +++ b/PlayFabSDK/source/PlayFabErrors.cs @@ -563,6 +563,7 @@ public enum PlayFabErrorCode InvalidServiceConfiguration = 1560, InvalidNamespaceMismatch = 1561, LeaderboardColumnLengthMismatch = 1562, + InvalidStatisticScore = 1563, MatchmakingEntityInvalid = 2001, MatchmakingPlayerAttributesInvalid = 2002, MatchmakingQueueNotFound = 2016, @@ -707,6 +708,12 @@ public enum PlayFabErrorCode LobbyNewOwnerMustBeConnected = 13009, LobbyCurrentOwnerStillConnected = 13010, LobbyMemberIsNotOwner = 13011, + LobbyAssociatedServerMismatch = 13012, + LobbyAssociatedServerNotFound = 13013, + LobbyAssociatedToDifferentServer = 13014, + LobbyServerAlreadyAssociated = 13015, + LobbyIsNotClientOwned = 13016, + LobbyDoesNotUseConnections = 13017, EventSamplingInvalidRatio = 14000, EventSamplingInvalidEventNamespace = 14001, EventSamplingInvalidEventName = 14002, diff --git a/PlayFabSDK/source/PlayFabMultiplayerAPI.cs b/PlayFabSDK/source/PlayFabMultiplayerAPI.cs index f2159756..3a44ab05 100644 --- a/PlayFabSDK/source/PlayFabMultiplayerAPI.cs +++ b/PlayFabSDK/source/PlayFabMultiplayerAPI.cs @@ -1825,6 +1825,33 @@ public static async Task> Reques return new PlayFabResult { Result = result, CustomData = customData }; } + /// + /// Request a party session. + /// + public static async Task> RequestPartyServiceAsync(RequestPartyServiceRequest request, object customData = null, Dictionary extraHeaders = null) + { + await new PlayFabUtil.SynchronizationContextRemover(); + + var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer; + var requestSettings = PlayFabSettings.staticSettings; + if (requestContext.EntityToken == null) throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call Client Login or GetEntityToken before calling this method"); + + + var httpResult = await PlayFabHttp.DoPost("/Party/RequestPartyService", request, "X-EntityToken", requestContext.EntityToken, extraHeaders); + if (httpResult is PlayFabError) + { + var error = (PlayFabError)httpResult; + PlayFabSettings.GlobalErrorHandler?.Invoke(error); + return new PlayFabResult { Error = error, CustomData = customData }; + } + + var resultRawJson = (string)httpResult; + var resultData = PluginManager.GetPlugin(PluginContract.PlayFab_Serializer).DeserializeObject>(resultRawJson); + var result = resultData.data; + + return new PlayFabResult { Result = result, CustomData = customData }; + } + /// /// Rolls over the credentials to the container registry. /// diff --git a/PlayFabSDK/source/PlayFabMultiplayerInstanceAPI.cs b/PlayFabSDK/source/PlayFabMultiplayerInstanceAPI.cs index 5af3080e..69bdc662 100644 --- a/PlayFabSDK/source/PlayFabMultiplayerInstanceAPI.cs +++ b/PlayFabSDK/source/PlayFabMultiplayerInstanceAPI.cs @@ -1777,6 +1777,32 @@ public async Task> RequestMultip return new PlayFabResult { Result = result, CustomData = customData }; } + /// + /// Request a party session. + /// + public async Task> RequestPartyServiceAsync(RequestPartyServiceRequest request, object customData = null, Dictionary extraHeaders = null) + { + await new PlayFabUtil.SynchronizationContextRemover(); + + var requestContext = request?.AuthenticationContext ?? authenticationContext; + var requestSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (requestContext.EntityToken == null) throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call Client Login or GetEntityToken before calling this method"); + + var httpResult = await PlayFabHttp.DoPost("/Party/RequestPartyService", request, "X-EntityToken", requestContext.EntityToken, extraHeaders, requestSettings); + if (httpResult is PlayFabError) + { + var error = (PlayFabError)httpResult; + PlayFabSettings.GlobalErrorHandler?.Invoke(error); + return new PlayFabResult { Error = error, CustomData = customData }; + } + + var resultRawJson = (string)httpResult; + var resultData = PluginManager.GetPlugin(PluginContract.PlayFab_Serializer).DeserializeObject>(resultRawJson); + var result = resultData.data; + + return new PlayFabResult { Result = result, CustomData = customData }; + } + /// /// Rolls over the credentials to the container registry. /// diff --git a/PlayFabSDK/source/PlayFabMultiplayerModels.cs b/PlayFabSDK/source/PlayFabMultiplayerModels.cs index e3169ef3..596bb715 100644 --- a/PlayFabSDK/source/PlayFabMultiplayerModels.cs +++ b/PlayFabSDK/source/PlayFabMultiplayerModels.cs @@ -1856,6 +1856,18 @@ public class DifferenceRule } + public enum DirectPeerConnectivityOptions + { + None, + SamePlatformType, + DifferentPlatformType, + AnyPlatformType, + SameEntityLoginProvider, + DifferentEntityLoginProvider, + AnyEntityLoginProvider, + AnyPlatformTypeAndEntityLoginProvider + } + public class DynamicStandbySettings { /// @@ -4271,6 +4283,73 @@ public class PaginationResponse : PlayFabResultCommon } + public class PartyInvitationConfiguration + { + /// + /// The list of PlayFab EntityKeys that the invitation allows to authenticate into the network. If this list is empty, all + /// users are allowed to authenticate using the invitation's identifier. This list may contain no more than 1024 items. + /// + public List EntityKeys ; + + /// + /// The invite identifier for this party. If this value is specified, it must be no longer than 127 characters. + /// + public string Identifier ; + + /// + /// Controls which participants can revoke this invite. + /// + public string Revocability ; + + } + + public enum PartyInvitationRevocability + { + Creator, + Anyone + } + + public class PartyNetworkConfiguration + { + /// + /// Controls whether and how to support direct peer-to-peer connection attempts among devices in the network. + /// + public string DirectPeerConnectivityOptions ; + + /// + /// The maximum number of devices allowed to connect to the network. Must be between 1 and 32, inclusive. + /// + public uint MaxDevices ; + + /// + /// The maximum number of devices allowed per user. Must be greater than 0. + /// + public uint MaxDevicesPerUser ; + + /// + /// The maximum number of endpoints allowed per device. Must be between 0 and 32, inclusive. + /// + public uint MaxEndpointsPerDevice ; + + /// + /// The maximum number of unique users allowed in the network. Must be greater than 0. + /// + public uint MaxUsers ; + + /// + /// The maximum number of users allowed per device. Must be between 1 and 8, inclusive. + /// + public uint MaxUsersPerDevice ; + + /// + /// An optionally-specified configuration for the initial invitation for this party. If not provided, default configuration + /// values will be used: a title-unique invitation identifier will be generated, the revocability will be Anyone, and the + /// EntityID list will be empty. + /// + public PartyInvitationConfiguration PartyInvitationConfiguration ; + + } + public class Port { /// @@ -4582,6 +4661,55 @@ public class RequestMultiplayerServerResponse : PlayFabResultCommon } + /// + /// Requests a party session from a particular set of builds if build alias params is provided, in any of the given + /// preferred regions. + /// + public class RequestPartyServiceRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags ; + + /// + /// The network configuration for this request. + /// + public PartyNetworkConfiguration NetworkConfiguration ; + + /// + /// A guid string party ID created track the party session over its life. + /// + public string PartyId ; + + /// + /// The preferred regions to request a party session from. The party service will iterate through the regions in the + /// specified order and allocate a party session from the first one that is available. + /// + public List PreferredRegions ; + + } + + public class RequestPartyServiceResponse : PlayFabResultCommon + { + /// + /// The invitation identifier supplied in the PartyInvitationConfiguration, or the PlayFab-generated guid if none was + /// supplied. + /// + public string InvitationId ; + + /// + /// The guid string party ID of the party session. + /// + public string PartyId ; + + /// + /// A base-64 encoded string containing the serialized network descriptor for this party. + /// + public string SerializedNetworkDescriptor ; + + } + /// /// Gets new credentials to the container registry where game developers can upload custom container images to before /// creating a new build. @@ -5419,6 +5547,11 @@ public class UploadCertificateRequest : PlayFabRequestCommon /// public Dictionary CustomTags ; + /// + /// Forces the certificate renewal if the certificate already exists. Default is false + /// + public bool? ForceUpdate ; + /// /// The game certificate to upload. /// diff --git a/PlayFabSDK/source/PlayFabProfilesModels.cs b/PlayFabSDK/source/PlayFabProfilesModels.cs index 8e832132..a5d9aaf1 100644 --- a/PlayFabSDK/source/PlayFabProfilesModels.cs +++ b/PlayFabSDK/source/PlayFabProfilesModels.cs @@ -231,7 +231,7 @@ public class EntityStatisticAttributeValue /// /// Attribute Statistic scores. /// - public List Scores ; + public List Scores ; } @@ -255,7 +255,7 @@ public class EntityStatisticValue /// /// Statistic scores /// - public List Scores ; + public List Scores ; /// /// Statistic value diff --git a/PlayFabSDK/source/PlayFabSDK.csproj b/PlayFabSDK/source/PlayFabSDK.csproj index 5237223b..11aa9b18 100644 --- a/PlayFabSDK/source/PlayFabSDK.csproj +++ b/PlayFabSDK/source/PlayFabSDK.csproj @@ -8,7 +8,7 @@ 512 PlayFabAllSDK - 1.163.230915 + 1.165.230929 PlayFab CSharp Sdk Microsoft Microsoft @@ -21,7 +21,7 @@ PlayFab PlayFabSDK PlayFab, Baas, Paas, JSON, REST, HTTP, SSL, API, cloud, liveops, game, gamedev, native - https://docs.microsoft.com/gaming/playfab/release-notes#230915 + https://docs.microsoft.com/gaming/playfab/release-notes#230929 en 1 1 diff --git a/PlayFabSDK/source/PlayFabServerModels.cs b/PlayFabSDK/source/PlayFabServerModels.cs index 52c27200..9f326b21 100644 --- a/PlayFabSDK/source/PlayFabServerModels.cs +++ b/PlayFabSDK/source/PlayFabServerModels.cs @@ -2091,6 +2091,7 @@ public enum GenericErrorCodes InvalidServiceConfiguration, InvalidNamespaceMismatch, LeaderboardColumnLengthMismatch, + InvalidStatisticScore, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingQueueNotFound, @@ -2235,6 +2236,12 @@ public enum GenericErrorCodes LobbyNewOwnerMustBeConnected, LobbyCurrentOwnerStillConnected, LobbyMemberIsNotOwner, + LobbyAssociatedServerMismatch, + LobbyAssociatedServerNotFound, + LobbyAssociatedToDifferentServer, + LobbyServerAlreadyAssociated, + LobbyIsNotClientOwned, + LobbyDoesNotUseConnections, EventSamplingInvalidRatio, EventSamplingInvalidEventNamespace, EventSamplingInvalidEventName, diff --git a/PlayFabSDK/source/PlayFabSettings.cs b/PlayFabSDK/source/PlayFabSettings.cs index 82496e7e..a3f19341 100644 --- a/PlayFabSDK/source/PlayFabSettings.cs +++ b/PlayFabSDK/source/PlayFabSettings.cs @@ -6,9 +6,9 @@ namespace PlayFab { public class PlayFabSettings { - public const string SdkVersion = "1.163.230915"; - public const string BuildIdentifier = "adobuild_csharpsdk_115"; - public const string SdkVersionString = "CSharpSDK-1.163.230915"; + public const string SdkVersion = "1.165.230929"; + public const string BuildIdentifier = "adobuild_csharpsdk_114"; + public const string SdkVersionString = "CSharpSDK-1.165.230929"; /// This is only for customers running a private cluster. Generally you shouldn't touch this public static string DefaultProductionEnvironmentUrl = "playfabapi.com"; diff --git a/Plugins/CloudScript/source/PlayFabCloudScriptPlugin.csproj b/Plugins/CloudScript/source/PlayFabCloudScriptPlugin.csproj index a33f2663..f5f3540a 100644 --- a/Plugins/CloudScript/source/PlayFabCloudScriptPlugin.csproj +++ b/Plugins/CloudScript/source/PlayFabCloudScriptPlugin.csproj @@ -8,7 +8,7 @@ 512 PlayFabCloudScriptPlugin - 1.163.230915-alpha + 1.165.230929-alpha PlayFab CSharp CloudScript Plugin Microsoft Microsoft @@ -21,7 +21,7 @@ PlayFabCloudScriptPlugin Copyright 2023 PlayFab, Baas, Paas, JSON, REST, HTTP, SSL, API, cloud, liveops, game, gamedev, native - https://docs.microsoft.com/gaming/playfab/release-notes#230915 + https://docs.microsoft.com/gaming/playfab/release-notes#230929 en 1 1 @@ -45,7 +45,7 @@ - + diff --git a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabAdminModels.cs b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabAdminModels.cs index 6f236ece..ef600f16 100644 --- a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabAdminModels.cs +++ b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabAdminModels.cs @@ -21,12 +21,64 @@ public class AbortTaskInstanceRequest : PlayFabRequestCommon } + /// + /// The work to be performed on each entity which can only be of one type. + /// + public class Action + { + /// + /// Action content to ban player + /// + public BanPlayerContent BanPlayerContent ; + + /// + /// Action content to delete player + /// + public DeletePlayerContent DeletePlayerContent ; + + /// + /// Action content to execute cloud script + /// + public ExecuteCloudScriptContent ExecuteCloudScriptContent ; + + /// + /// Action content to execute azure function + /// + public ExecuteFunctionContent ExecuteFunctionContent ; + + /// + /// Action content to grant item + /// + public GrantItemContent GrantItemContent ; + + /// + /// Action content to grant virtual currency + /// + public GrantVirtualCurrencyContent GrantVirtualCurrencyContent ; + + /// + /// Action content to increment player statistic + /// + public IncrementPlayerStatisticContent IncrementPlayerStatisticContent ; + + /// + /// Action content to send push notification + /// + public PushNotificationContent PushNotificationContent ; + + /// + /// Action content to send email + /// + public SendEmailContent SendEmailContent ; + + } + public class ActionsOnPlayersInSegmentTaskParameter { /// - /// ID of the action to perform on each player in segment. + /// List of actions to perform on each player in a segment. Each action object can contain only one action type. /// - public string ActionId ; + public List Actions ; /// /// ID of the segment to perform actions on. @@ -349,6 +401,20 @@ public class BanInfo } + public class BanPlayerContent + { + /// + /// Duration(in hours) to ban a player. If not provided, the player will be banned permanently. + /// + public int BanDurationHours ; + + /// + /// Reason to ban a player + /// + public string BanReason ; + + } + public class BanPlayerSegmentAction { /// @@ -1615,6 +1681,10 @@ public class DeleteOpenIdConnectionRequest : PlayFabRequestCommon } + public class DeletePlayerContent + { + } + /// /// Deletes all data associated with the player, including statistics, custom data, inventory, purchases, virtual currency /// balances, characters and shared group memberships. Removes the player from all leaderboards and player search indexes. @@ -1828,6 +1898,25 @@ public class ExecuteAzureFunctionSegmentAction } + public class ExecuteCloudScriptContent + { + /// + /// Arguments(JSON) to be passed into the cloudscript method + /// + public string CloudScriptMethodArguments ; + + /// + /// Cloudscript method name + /// + public string CloudScriptMethodName ; + + /// + /// Publish cloudscript results as playstream event + /// + public bool PublishResultsToPlayStream ; + + } + public class ExecuteCloudScriptResult : PlayFabResultCommon { /// @@ -1914,6 +2003,25 @@ public class ExecuteCloudScriptSegmentAction } + public class ExecuteFunctionContent + { + /// + /// Arguments(JSON) to be passed into the cloudscript azure function + /// + public string CloudScriptFunctionArguments ; + + /// + /// Cloudscript azure function name + /// + public string CloudScriptFunctionName ; + + /// + /// Publish results from executing the azure function as playstream event + /// + public bool PublishResultsToPlayStream ; + + } + /// /// Exports all data associated with the master player account, including data from all titles the player has played, such /// as statistics, custom data, inventory, purchases, virtual currency balances, characters, group memberships, publisher @@ -2547,6 +2655,7 @@ public enum GenericErrorCodes InvalidServiceConfiguration, InvalidNamespaceMismatch, LeaderboardColumnLengthMismatch, + InvalidStatisticScore, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingQueueNotFound, @@ -2691,6 +2800,12 @@ public enum GenericErrorCodes LobbyNewOwnerMustBeConnected, LobbyCurrentOwnerStillConnected, LobbyMemberIsNotOwner, + LobbyAssociatedServerMismatch, + LobbyAssociatedServerNotFound, + LobbyAssociatedToDifferentServer, + LobbyServerAlreadyAssociated, + LobbyIsNotClientOwned, + LobbyDoesNotUseConnections, EventSamplingInvalidRatio, EventSamplingInvalidEventNamespace, EventSamplingInvalidEventName, @@ -3757,6 +3872,25 @@ public int CompareTo(GrantedItemInstance other) } + public class GrantItemContent + { + /// + /// Publish cloudscript results as playstream event + /// + public string CatalogVersion ; + + /// + /// Publish cloudscript results as playstream event + /// + public string ItemId ; + + /// + /// Publish cloudscript results as playstream event + /// + public int ItemQuantity ; + + } + public class GrantItemSegmentAction { /// @@ -3814,6 +3948,20 @@ public class GrantItemsToUsersResult : PlayFabResultCommon } + public class GrantVirtualCurrencyContent + { + /// + /// Amount of currency to be granted to a player + /// + public int CurrencyAmount ; + + /// + /// Code of the currency to be granted to a player + /// + public string CurrencyCode ; + + } + public class GrantVirtualCurrencySegmentAction { /// @@ -3860,6 +4008,20 @@ public class IncrementLimitedEditionItemAvailabilityResult : PlayFabResultCommon { } + public class IncrementPlayerStatisticContent + { + /// + /// Amount(in whole number) to increase the player statistic by + /// + public int StatisticChangeBy ; + + /// + /// Name of the player statistic to be incremented + /// + public string StatisticName ; + + } + public class IncrementPlayerStatisticSegmentAction { /// @@ -4928,6 +5090,25 @@ public class PlayerStatisticVersion } + public class PushNotificationContent + { + /// + /// Text of message to send. + /// + public string Message ; + + /// + /// Id of the push notification template. + /// + public string PushNotificationTemplateId ; + + /// + /// Subject of message to send (may not be displayed in all platforms) + /// + public string Subject ; + + } + public enum PushNotificationPlatform { ApplePushNotificationService, @@ -6164,6 +6345,15 @@ public class SendAccountRecoveryEmailResult : PlayFabResultCommon { } + public class SendEmailContent + { + /// + /// The email template id of the email template to send. + /// + public string EmailTemplateId ; + + } + /// /// This API lets developers set overrides for membership expirations, independent of any subscriptions setting it. /// diff --git a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabErrors.cs b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabErrors.cs index ed6e077b..c7b8d91e 100644 --- a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabErrors.cs +++ b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabErrors.cs @@ -563,6 +563,7 @@ public enum PlayFabErrorCode InvalidServiceConfiguration = 1560, InvalidNamespaceMismatch = 1561, LeaderboardColumnLengthMismatch = 1562, + InvalidStatisticScore = 1563, MatchmakingEntityInvalid = 2001, MatchmakingPlayerAttributesInvalid = 2002, MatchmakingQueueNotFound = 2016, @@ -707,6 +708,12 @@ public enum PlayFabErrorCode LobbyNewOwnerMustBeConnected = 13009, LobbyCurrentOwnerStillConnected = 13010, LobbyMemberIsNotOwner = 13011, + LobbyAssociatedServerMismatch = 13012, + LobbyAssociatedServerNotFound = 13013, + LobbyAssociatedToDifferentServer = 13014, + LobbyServerAlreadyAssociated = 13015, + LobbyIsNotClientOwned = 13016, + LobbyDoesNotUseConnections = 13017, EventSamplingInvalidRatio = 14000, EventSamplingInvalidEventNamespace = 14001, EventSamplingInvalidEventName = 14002, diff --git a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerAPI.cs b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerAPI.cs index f2159756..3a44ab05 100644 --- a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerAPI.cs +++ b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerAPI.cs @@ -1825,6 +1825,33 @@ public static async Task> Reques return new PlayFabResult { Result = result, CustomData = customData }; } + /// + /// Request a party session. + /// + public static async Task> RequestPartyServiceAsync(RequestPartyServiceRequest request, object customData = null, Dictionary extraHeaders = null) + { + await new PlayFabUtil.SynchronizationContextRemover(); + + var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer; + var requestSettings = PlayFabSettings.staticSettings; + if (requestContext.EntityToken == null) throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call Client Login or GetEntityToken before calling this method"); + + + var httpResult = await PlayFabHttp.DoPost("/Party/RequestPartyService", request, "X-EntityToken", requestContext.EntityToken, extraHeaders); + if (httpResult is PlayFabError) + { + var error = (PlayFabError)httpResult; + PlayFabSettings.GlobalErrorHandler?.Invoke(error); + return new PlayFabResult { Error = error, CustomData = customData }; + } + + var resultRawJson = (string)httpResult; + var resultData = PluginManager.GetPlugin(PluginContract.PlayFab_Serializer).DeserializeObject>(resultRawJson); + var result = resultData.data; + + return new PlayFabResult { Result = result, CustomData = customData }; + } + /// /// Rolls over the credentials to the container registry. /// diff --git a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerInstanceAPI.cs b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerInstanceAPI.cs index 5af3080e..69bdc662 100644 --- a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerInstanceAPI.cs +++ b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerInstanceAPI.cs @@ -1777,6 +1777,32 @@ public async Task> RequestMultip return new PlayFabResult { Result = result, CustomData = customData }; } + /// + /// Request a party session. + /// + public async Task> RequestPartyServiceAsync(RequestPartyServiceRequest request, object customData = null, Dictionary extraHeaders = null) + { + await new PlayFabUtil.SynchronizationContextRemover(); + + var requestContext = request?.AuthenticationContext ?? authenticationContext; + var requestSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (requestContext.EntityToken == null) throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call Client Login or GetEntityToken before calling this method"); + + var httpResult = await PlayFabHttp.DoPost("/Party/RequestPartyService", request, "X-EntityToken", requestContext.EntityToken, extraHeaders, requestSettings); + if (httpResult is PlayFabError) + { + var error = (PlayFabError)httpResult; + PlayFabSettings.GlobalErrorHandler?.Invoke(error); + return new PlayFabResult { Error = error, CustomData = customData }; + } + + var resultRawJson = (string)httpResult; + var resultData = PluginManager.GetPlugin(PluginContract.PlayFab_Serializer).DeserializeObject>(resultRawJson); + var result = resultData.data; + + return new PlayFabResult { Result = result, CustomData = customData }; + } + /// /// Rolls over the credentials to the container registry. /// diff --git a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerModels.cs b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerModels.cs index e3169ef3..596bb715 100644 --- a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerModels.cs +++ b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabMultiplayerModels.cs @@ -1856,6 +1856,18 @@ public class DifferenceRule } + public enum DirectPeerConnectivityOptions + { + None, + SamePlatformType, + DifferentPlatformType, + AnyPlatformType, + SameEntityLoginProvider, + DifferentEntityLoginProvider, + AnyEntityLoginProvider, + AnyPlatformTypeAndEntityLoginProvider + } + public class DynamicStandbySettings { /// @@ -4271,6 +4283,73 @@ public class PaginationResponse : PlayFabResultCommon } + public class PartyInvitationConfiguration + { + /// + /// The list of PlayFab EntityKeys that the invitation allows to authenticate into the network. If this list is empty, all + /// users are allowed to authenticate using the invitation's identifier. This list may contain no more than 1024 items. + /// + public List EntityKeys ; + + /// + /// The invite identifier for this party. If this value is specified, it must be no longer than 127 characters. + /// + public string Identifier ; + + /// + /// Controls which participants can revoke this invite. + /// + public string Revocability ; + + } + + public enum PartyInvitationRevocability + { + Creator, + Anyone + } + + public class PartyNetworkConfiguration + { + /// + /// Controls whether and how to support direct peer-to-peer connection attempts among devices in the network. + /// + public string DirectPeerConnectivityOptions ; + + /// + /// The maximum number of devices allowed to connect to the network. Must be between 1 and 32, inclusive. + /// + public uint MaxDevices ; + + /// + /// The maximum number of devices allowed per user. Must be greater than 0. + /// + public uint MaxDevicesPerUser ; + + /// + /// The maximum number of endpoints allowed per device. Must be between 0 and 32, inclusive. + /// + public uint MaxEndpointsPerDevice ; + + /// + /// The maximum number of unique users allowed in the network. Must be greater than 0. + /// + public uint MaxUsers ; + + /// + /// The maximum number of users allowed per device. Must be between 1 and 8, inclusive. + /// + public uint MaxUsersPerDevice ; + + /// + /// An optionally-specified configuration for the initial invitation for this party. If not provided, default configuration + /// values will be used: a title-unique invitation identifier will be generated, the revocability will be Anyone, and the + /// EntityID list will be empty. + /// + public PartyInvitationConfiguration PartyInvitationConfiguration ; + + } + public class Port { /// @@ -4582,6 +4661,55 @@ public class RequestMultiplayerServerResponse : PlayFabResultCommon } + /// + /// Requests a party session from a particular set of builds if build alias params is provided, in any of the given + /// preferred regions. + /// + public class RequestPartyServiceRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags ; + + /// + /// The network configuration for this request. + /// + public PartyNetworkConfiguration NetworkConfiguration ; + + /// + /// A guid string party ID created track the party session over its life. + /// + public string PartyId ; + + /// + /// The preferred regions to request a party session from. The party service will iterate through the regions in the + /// specified order and allocate a party session from the first one that is available. + /// + public List PreferredRegions ; + + } + + public class RequestPartyServiceResponse : PlayFabResultCommon + { + /// + /// The invitation identifier supplied in the PartyInvitationConfiguration, or the PlayFab-generated guid if none was + /// supplied. + /// + public string InvitationId ; + + /// + /// The guid string party ID of the party session. + /// + public string PartyId ; + + /// + /// A base-64 encoded string containing the serialized network descriptor for this party. + /// + public string SerializedNetworkDescriptor ; + + } + /// /// Gets new credentials to the container registry where game developers can upload custom container images to before /// creating a new build. @@ -5419,6 +5547,11 @@ public class UploadCertificateRequest : PlayFabRequestCommon /// public Dictionary CustomTags ; + /// + /// Forces the certificate renewal if the certificate already exists. Default is false + /// + public bool? ForceUpdate ; + /// /// The game certificate to upload. /// diff --git a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabProfilesModels.cs b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabProfilesModels.cs index 8e832132..a5d9aaf1 100644 --- a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabProfilesModels.cs +++ b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabProfilesModels.cs @@ -231,7 +231,7 @@ public class EntityStatisticAttributeValue /// /// Attribute Statistic scores. /// - public List Scores ; + public List Scores ; } @@ -255,7 +255,7 @@ public class EntityStatisticValue /// /// Statistic scores /// - public List Scores ; + public List Scores ; /// /// Statistic value diff --git a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabSDK.csproj b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabSDK.csproj index 5237223b..11aa9b18 100644 --- a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabSDK.csproj +++ b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabSDK.csproj @@ -8,7 +8,7 @@ 512 PlayFabAllSDK - 1.163.230915 + 1.165.230929 PlayFab CSharp Sdk Microsoft Microsoft @@ -21,7 +21,7 @@ PlayFab PlayFabSDK PlayFab, Baas, Paas, JSON, REST, HTTP, SSL, API, cloud, liveops, game, gamedev, native - https://docs.microsoft.com/gaming/playfab/release-notes#230915 + https://docs.microsoft.com/gaming/playfab/release-notes#230929 en 1 1 diff --git a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabServerModels.cs b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabServerModels.cs index 52c27200..9f326b21 100644 --- a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabServerModels.cs +++ b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabServerModels.cs @@ -2091,6 +2091,7 @@ public enum GenericErrorCodes InvalidServiceConfiguration, InvalidNamespaceMismatch, LeaderboardColumnLengthMismatch, + InvalidStatisticScore, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingQueueNotFound, @@ -2235,6 +2236,12 @@ public enum GenericErrorCodes LobbyNewOwnerMustBeConnected, LobbyCurrentOwnerStillConnected, LobbyMemberIsNotOwner, + LobbyAssociatedServerMismatch, + LobbyAssociatedServerNotFound, + LobbyAssociatedToDifferentServer, + LobbyServerAlreadyAssociated, + LobbyIsNotClientOwned, + LobbyDoesNotUseConnections, EventSamplingInvalidRatio, EventSamplingInvalidEventNamespace, EventSamplingInvalidEventName, diff --git a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabSettings.cs b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabSettings.cs index 82496e7e..a3f19341 100644 --- a/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabSettings.cs +++ b/XamarinTestRunner/XamarinTestRunner/PlayFabSDK/PlayFabSettings.cs @@ -6,9 +6,9 @@ namespace PlayFab { public class PlayFabSettings { - public const string SdkVersion = "1.163.230915"; - public const string BuildIdentifier = "adobuild_csharpsdk_115"; - public const string SdkVersionString = "CSharpSDK-1.163.230915"; + public const string SdkVersion = "1.165.230929"; + public const string BuildIdentifier = "adobuild_csharpsdk_114"; + public const string SdkVersionString = "CSharpSDK-1.165.230929"; /// This is only for customers running a private cluster. Generally you shouldn't touch this public static string DefaultProductionEnvironmentUrl = "playfabapi.com";