diff --git a/AndroidStudioExample/app/packageMe.ps1 b/AndroidStudioExample/app/packageMe.ps1 index a9ceee60..d47298ef 100644 --- a/AndroidStudioExample/app/packageMe.ps1 +++ b/AndroidStudioExample/app/packageMe.ps1 @@ -5,4 +5,4 @@ New-Item -ItemType Directory -Force ./builds popd cd target -Copy-Item client-sdk-0.199.230915.jar -Destination ../../builds/client-sdk-0.199.230915.jar \ No newline at end of file +Copy-Item client-sdk-0.205.231110.jar -Destination ../../builds/client-sdk-0.205.231110.jar \ No newline at end of file diff --git a/AndroidStudioExample/app/packageMe.sh b/AndroidStudioExample/app/packageMe.sh index 3bb90378..cb2ab262 100644 --- a/AndroidStudioExample/app/packageMe.sh +++ b/AndroidStudioExample/app/packageMe.sh @@ -7,4 +7,4 @@ mkdir -p ./builds popd cd target -cp client-sdk-0.199.230915.jar ../../builds/client-sdk-0.199.230915.jar +cp client-sdk-0.205.231110.jar ../../builds/client-sdk-0.205.231110.jar diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabAuthenticationAPI.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabAuthenticationAPI.java index 969ca312..5deb9aee 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabAuthenticationAPI.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabAuthenticationAPI.java @@ -11,9 +11,9 @@ /** * The Authentication APIs provide a convenient way to convert classic authentication responses into entity authentication - * models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. Manage - * API keys for authenticating any entity. The game_server API is designed to create uniquely identifiable game_server - * entities. The game_server Entity token can be used to call Matchmaking Lobby and Pubsub for server scenarios. + * models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. The + * game_server API is designed to create uniquely identifiable game_server entities. The game_server Entity token can be + * used to call Matchmaking Lobby and Pubsub for server scenarios. */ public class PlayFabAuthenticationAPI { private static Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").create(); diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientAPI.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientAPI.java index 48f964d0..b930260d 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientAPI.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientAPI.java @@ -7574,6 +7574,7 @@ private static PlayFabResult privateRegisterPlayFabUs PlayFabJsonSuccess resultData = gson.fromJson(resultRawJson, new TypeToken>(){}.getType()); RegisterPlayFabUserResult result = resultData.data; PlayFabSettings.ClientSessionTicket = result.SessionTicket != null ? result.SessionTicket : PlayFabSettings.ClientSessionTicket; + if (result.EntityToken != null) PlayFabSettings.EntityToken = result.EntityToken.EntityToken != null ? result.EntityToken.EntityToken : PlayFabSettings.EntityToken; PlayFabResult pfResult = new PlayFabResult(); pfResult.Result = result; diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabEconomyModels.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabEconomyModels.java index b14035f4..a0cb86c4 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabEconomyModels.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabEconomyModels.java @@ -1472,7 +1472,10 @@ public static class RedeemMicrosoftStoreInventoryItemsRequest { public Map CustomTags; /** The entity to perform this action on. */ public EntityKey Entity; - /** Xbox Token used for delegated business partner authentication. */ + /** + * Xbox Token used for delegated business partner authentication. Token provided by the Xbox Live SDK method + * GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", ""). + */ public String XboxToken; } diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabErrors.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabErrors.java index 8c14cd92..5936a267 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabErrors.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabErrors.java @@ -561,6 +561,8 @@ public static enum PlayFabErrorCode { InvalidServiceConfiguration(1560), InvalidNamespaceMismatch(1561), LeaderboardColumnLengthMismatch(1562), + InvalidStatisticScore(1563), + LeaderboardColumnsNotSpecified(1564), MatchmakingEntityInvalid(2001), MatchmakingPlayerAttributesInvalid(2002), MatchmakingQueueNotFound(2016), @@ -705,6 +707,12 @@ public static 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), @@ -728,6 +736,7 @@ public static enum PlayFabErrorCode { EventSinkTenantNotFound(15009), EventSinkAadNotFound(15010), EventSinkDatabaseNotFound(15011), + EventSinkTitleUnauthorized(15012), OperationCanceled(16000), InvalidDisplayNameRandomSuffixLength(17000), AllowNonUniquePlayerDisplayNamesDisableNotAllowed(17001), @@ -747,7 +756,9 @@ public static enum PlayFabErrorCode { PlayerCustomPropertiesDuplicatePropertyName(19006), PlayerCustomPropertiesPropertyDoesNotExist(19007), AddonAlreadyExists(19008), - AddonDoesntExist(19009); + AddonDoesntExist(19009), + CopilotDisabled(19100), + CopilotInvalidRequest(19101); public int id; diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerAPI.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerAPI.java index e1e6f397..c080f24b 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerAPI.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerAPI.java @@ -3964,6 +3964,68 @@ private static PlayFabResult privateRequestMul return pfResult; } + /** + * Request a party session. + * @param request RequestPartyServiceRequest + * @return Async Task will return RequestPartyServiceResponse + */ + @SuppressWarnings("unchecked") + public static FutureTask> RequestPartyServiceAsync(final RequestPartyServiceRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRequestPartyServiceAsync(request); + } + }); + } + + /** + * Request a party session. + * @param request RequestPartyServiceRequest + * @return RequestPartyServiceResponse + */ + @SuppressWarnings("unchecked") + public static PlayFabResult RequestPartyService(final RequestPartyServiceRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRequestPartyServiceAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + PlayFabResult exceptionResult = new PlayFabResult(); + exceptionResult.Error = PlayFabHTTP.GeneratePfError(-1, PlayFabErrorCode.Unknown, e.getMessage(), null, null); + return exceptionResult; + } + } + + /** Request a party session. */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateRequestPartyServiceAsync(final RequestPartyServiceRequest request) throws Exception { + if (PlayFabSettings.EntityToken == null) throw new Exception ("Must call GetEntityToken before you can use the Entity API"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Party/RequestPartyService"), request, "X-EntityToken", PlayFabSettings.EntityToken); + task.run(); + Object httpResult = task.get(); + if (httpResult instanceof PlayFabError) { + PlayFabError error = (PlayFabError)httpResult; + if (PlayFabSettings.GlobalErrorHandler != null) + PlayFabSettings.GlobalErrorHandler.callback(error); + PlayFabResult result = new PlayFabResult(); + result.Error = error; + return result; + } + String resultRawJson = (String) httpResult; + + PlayFabJsonSuccess resultData = gson.fromJson(resultRawJson, new TypeToken>(){}.getType()); + RequestPartyServiceResponse result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Rolls over the credentials to the container registry. * @param request RolloverContainerRegistryCredentialsRequest diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerModels.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerModels.java index 03456f52..4c5c3924 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerModels.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerModels.java @@ -58,7 +58,8 @@ public static enum AzureRegion { WestUs2, CentralIndia, UaeNorth, - UkSouth + UkSouth, + SwedenCentral } public static enum AzureVmFamily { @@ -736,7 +737,7 @@ public static class CreateLobbyRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; /** - * The private key-value pairs which are only visible to members of the lobby. At most 30 key-value pairs may be stored + * The private key-value pairs which are visible to all entities in the lobby. At most 30 key-value pairs may be stored * here, keys are limited to 30 characters and values to 1000. The total size of all lobbyData values may not exceed 4096 * bytes. Keys are case sensitive. */ @@ -994,6 +995,17 @@ public static class DeleteRemoteUserRequest { } + public static enum DirectPeerConnectivityOptions { + None, + SamePlatformType, + DifferentPlatformType, + AnyPlatformType, + SameEntityLoginProvider, + DifferentEntityLoginProvider, + AnyEntityLoginProvider, + AnyPlatformTypeAndEntityLoginProvider + } + public static class DynamicStandbySettings { /** * List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, @@ -1665,7 +1677,7 @@ public static class JoinArrangedLobbyRequest { public Long MaxPlayers; /** * The private key-value pairs used by the member to communicate information to other members and the owner. Visible to all - * members of the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to + * entities in the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to * 1000. The total size of all memberData values may not exceed 4096 bytes. Keys are case sensitive. */ public Map MemberData; @@ -1699,7 +1711,7 @@ public static class JoinLobbyRequest { public Map CustomTags; /** * The private key-value pairs used by the member to communicate information to other members and the owner. Visible to all - * members of the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to + * entities in the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to * 1000. The total size of all memberData values may not exceed 4096 bytes.Keys are case sensitive. */ public Map MemberData; @@ -2198,6 +2210,46 @@ public static class PaginationResponse { } + public static 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 ArrayList 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 static enum PartyInvitationRevocability { + Creator, + Anyone + } + + public static 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 Long MaxDevices; + /** The maximum number of devices allowed per user. Must be greater than 0. */ + public Long MaxDevicesPerUser; + /** The maximum number of endpoints allowed per device. Must be between 0 and 32, inclusive. */ + public Long MaxEndpointsPerDevice; + /** The maximum number of unique users allowed in the network. Must be greater than 0. */ + public Long MaxUsers; + /** The maximum number of users allowed per device. Must be between 1 and 8, inclusive. */ + public Long 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 static class Port { /** The name for the port. */ public String Name; @@ -2321,6 +2373,38 @@ public static class RequestMultiplayerServerResponse { } + /** + * Requests a party session from a particular set of builds if build alias params is provided, in any of the given + * preferred regions. + */ + public static class RequestPartyServiceRequest { + /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ + public Map 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 ArrayList PreferredRegions; + + } + + public static class RequestPartyServiceResponse { + /** + * 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. @@ -2556,7 +2640,7 @@ public static class UpdateLobbyRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; /** - * The private key-value pairs which are only visible to members of the lobby. Optional. Sets or updates key-value pairs on + * The private key-value pairs which are visible to all entities in the lobby. Optional. Sets or updates key-value pairs on * the lobby. Only the current lobby owner can set lobby data. Keys may be an arbitrary string of at most 30 characters. * The total size of all lobbyData values may not exceed 4096 bytes. Values are not individually limited. There can be up * to 30 key-value pairs stored here. Keys are case sensitive. @@ -2575,9 +2659,9 @@ public static class UpdateLobbyRequest { /** * The private key-value pairs used by the member to communicate information to other members and the owner. Optional. Sets * or updates new key-value pairs on the caller's member data. New keys will be added with their values and existing keys - * will be updated with the new values. Visible to all members of the lobby. At most 30 key-value pairs may be stored here, - * keys are limited to 30 characters and values to 1000. The total size of all memberData values may not exceed 4096 bytes. - * Keys are case sensitive. Servers cannot specifiy this. + * will be updated with the new values. Visible to all entities in the lobby. At most 30 key-value pairs may be stored + * here, keys are limited to 30 characters and values to 1000. The total size of all memberData values may not exceed 4096 + * bytes. Keys are case sensitive. Servers cannot specifiy this. */ public Map MemberData; /** @@ -2627,6 +2711,8 @@ public static class UpdateLobbyRequest { public static class UploadCertificateRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; + /** Forces the certificate renewal if the certificate already exists. Default is false */ + public Boolean ForceUpdate; /** The game certificate to upload. */ public Certificate GameCertificate; diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabProfilesModels.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabProfilesModels.java index 5ac15b90..8b276b92 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabProfilesModels.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabProfilesModels.java @@ -120,7 +120,7 @@ public static class EntityStatisticAttributeValue { /** Attribute name. */ public String Name; /** Attribute Statistic scores. */ - public ArrayList Scores; + public ArrayList Scores; } @@ -132,7 +132,7 @@ public static class EntityStatisticValue { /** Statistic name */ public String Name; /** Statistic scores */ - public ArrayList Scores; + public ArrayList Scores; /** Statistic value */ public Integer Value; /** Statistic version */ diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabSettings.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabSettings.java index 255ace96..630f7548 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabSettings.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabSettings.java @@ -9,9 +9,9 @@ import com.playfab.PlayFabErrors.ErrorCallback; public class PlayFabSettings { - public static String SdkVersion = "0.199.230915"; - public static String BuildIdentifier = "adobuild_javasdk_116"; - public static String SdkVersionString = "JavaSDK-0.199.230915"; + public static String SdkVersion = "0.205.231110"; + public static String BuildIdentifier = "adobuild_javasdk_114"; + public static String SdkVersionString = "JavaSDK-0.205.231110"; public static Map RequestGetParams; static { diff --git a/PlayFabClientSDK/packageMe.ps1 b/PlayFabClientSDK/packageMe.ps1 index a9ceee60..d47298ef 100644 --- a/PlayFabClientSDK/packageMe.ps1 +++ b/PlayFabClientSDK/packageMe.ps1 @@ -5,4 +5,4 @@ New-Item -ItemType Directory -Force ./builds popd cd target -Copy-Item client-sdk-0.199.230915.jar -Destination ../../builds/client-sdk-0.199.230915.jar \ No newline at end of file +Copy-Item client-sdk-0.205.231110.jar -Destination ../../builds/client-sdk-0.205.231110.jar \ No newline at end of file diff --git a/PlayFabClientSDK/packageMe.sh b/PlayFabClientSDK/packageMe.sh index 3bb90378..cb2ab262 100644 --- a/PlayFabClientSDK/packageMe.sh +++ b/PlayFabClientSDK/packageMe.sh @@ -7,4 +7,4 @@ mkdir -p ./builds popd cd target -cp client-sdk-0.199.230915.jar ../../builds/client-sdk-0.199.230915.jar +cp client-sdk-0.205.231110.jar ../../builds/client-sdk-0.205.231110.jar diff --git a/PlayFabClientSDK/pom.xml b/PlayFabClientSDK/pom.xml index f9abd39a..879969a8 100644 --- a/PlayFabClientSDK/pom.xml +++ b/PlayFabClientSDK/pom.xml @@ -14,7 +14,7 @@ com.playfab client-sdk - 0.199.230915 + 0.205.231110 PlayFab Client API PlayFab is the unified backend platform for games — everything you need to build and operate your game, all in one place, so you can focus on creating and delivering a great player experience. https://docs.microsoft.com/gaming/playfab/ diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java index 969ca312..5deb9aee 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java @@ -11,9 +11,9 @@ /** * The Authentication APIs provide a convenient way to convert classic authentication responses into entity authentication - * models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. Manage - * API keys for authenticating any entity. The game_server API is designed to create uniquely identifiable game_server - * entities. The game_server Entity token can be used to call Matchmaking Lobby and Pubsub for server scenarios. + * models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. The + * game_server API is designed to create uniquely identifiable game_server entities. The game_server Entity token can be + * used to call Matchmaking Lobby and Pubsub for server scenarios. */ public class PlayFabAuthenticationAPI { private static Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").create(); diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientAPI.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientAPI.java index 48f964d0..b930260d 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientAPI.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientAPI.java @@ -7574,6 +7574,7 @@ private static PlayFabResult privateRegisterPlayFabUs PlayFabJsonSuccess resultData = gson.fromJson(resultRawJson, new TypeToken>(){}.getType()); RegisterPlayFabUserResult result = resultData.data; PlayFabSettings.ClientSessionTicket = result.SessionTicket != null ? result.SessionTicket : PlayFabSettings.ClientSessionTicket; + if (result.EntityToken != null) PlayFabSettings.EntityToken = result.EntityToken.EntityToken != null ? result.EntityToken.EntityToken : PlayFabSettings.EntityToken; PlayFabResult pfResult = new PlayFabResult(); pfResult.Result = result; diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabEconomyModels.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabEconomyModels.java index b14035f4..a0cb86c4 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabEconomyModels.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabEconomyModels.java @@ -1472,7 +1472,10 @@ public static class RedeemMicrosoftStoreInventoryItemsRequest { public Map CustomTags; /** The entity to perform this action on. */ public EntityKey Entity; - /** Xbox Token used for delegated business partner authentication. */ + /** + * Xbox Token used for delegated business partner authentication. Token provided by the Xbox Live SDK method + * GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", ""). + */ public String XboxToken; } diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabErrors.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabErrors.java index 8c14cd92..5936a267 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabErrors.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabErrors.java @@ -561,6 +561,8 @@ public static enum PlayFabErrorCode { InvalidServiceConfiguration(1560), InvalidNamespaceMismatch(1561), LeaderboardColumnLengthMismatch(1562), + InvalidStatisticScore(1563), + LeaderboardColumnsNotSpecified(1564), MatchmakingEntityInvalid(2001), MatchmakingPlayerAttributesInvalid(2002), MatchmakingQueueNotFound(2016), @@ -705,6 +707,12 @@ public static 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), @@ -728,6 +736,7 @@ public static enum PlayFabErrorCode { EventSinkTenantNotFound(15009), EventSinkAadNotFound(15010), EventSinkDatabaseNotFound(15011), + EventSinkTitleUnauthorized(15012), OperationCanceled(16000), InvalidDisplayNameRandomSuffixLength(17000), AllowNonUniquePlayerDisplayNamesDisableNotAllowed(17001), @@ -747,7 +756,9 @@ public static enum PlayFabErrorCode { PlayerCustomPropertiesDuplicatePropertyName(19006), PlayerCustomPropertiesPropertyDoesNotExist(19007), AddonAlreadyExists(19008), - AddonDoesntExist(19009); + AddonDoesntExist(19009), + CopilotDisabled(19100), + CopilotInvalidRequest(19101); public int id; diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java index e1e6f397..c080f24b 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java @@ -3964,6 +3964,68 @@ private static PlayFabResult privateRequestMul return pfResult; } + /** + * Request a party session. + * @param request RequestPartyServiceRequest + * @return Async Task will return RequestPartyServiceResponse + */ + @SuppressWarnings("unchecked") + public static FutureTask> RequestPartyServiceAsync(final RequestPartyServiceRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRequestPartyServiceAsync(request); + } + }); + } + + /** + * Request a party session. + * @param request RequestPartyServiceRequest + * @return RequestPartyServiceResponse + */ + @SuppressWarnings("unchecked") + public static PlayFabResult RequestPartyService(final RequestPartyServiceRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRequestPartyServiceAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + PlayFabResult exceptionResult = new PlayFabResult(); + exceptionResult.Error = PlayFabHTTP.GeneratePfError(-1, PlayFabErrorCode.Unknown, e.getMessage(), null, null); + return exceptionResult; + } + } + + /** Request a party session. */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateRequestPartyServiceAsync(final RequestPartyServiceRequest request) throws Exception { + if (PlayFabSettings.EntityToken == null) throw new Exception ("Must call GetEntityToken before you can use the Entity API"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Party/RequestPartyService"), request, "X-EntityToken", PlayFabSettings.EntityToken); + task.run(); + Object httpResult = task.get(); + if (httpResult instanceof PlayFabError) { + PlayFabError error = (PlayFabError)httpResult; + if (PlayFabSettings.GlobalErrorHandler != null) + PlayFabSettings.GlobalErrorHandler.callback(error); + PlayFabResult result = new PlayFabResult(); + result.Error = error; + return result; + } + String resultRawJson = (String) httpResult; + + PlayFabJsonSuccess resultData = gson.fromJson(resultRawJson, new TypeToken>(){}.getType()); + RequestPartyServiceResponse result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Rolls over the credentials to the container registry. * @param request RolloverContainerRegistryCredentialsRequest diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java index 03456f52..4c5c3924 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java @@ -58,7 +58,8 @@ public static enum AzureRegion { WestUs2, CentralIndia, UaeNorth, - UkSouth + UkSouth, + SwedenCentral } public static enum AzureVmFamily { @@ -736,7 +737,7 @@ public static class CreateLobbyRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; /** - * The private key-value pairs which are only visible to members of the lobby. At most 30 key-value pairs may be stored + * The private key-value pairs which are visible to all entities in the lobby. At most 30 key-value pairs may be stored * here, keys are limited to 30 characters and values to 1000. The total size of all lobbyData values may not exceed 4096 * bytes. Keys are case sensitive. */ @@ -994,6 +995,17 @@ public static class DeleteRemoteUserRequest { } + public static enum DirectPeerConnectivityOptions { + None, + SamePlatformType, + DifferentPlatformType, + AnyPlatformType, + SameEntityLoginProvider, + DifferentEntityLoginProvider, + AnyEntityLoginProvider, + AnyPlatformTypeAndEntityLoginProvider + } + public static class DynamicStandbySettings { /** * List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, @@ -1665,7 +1677,7 @@ public static class JoinArrangedLobbyRequest { public Long MaxPlayers; /** * The private key-value pairs used by the member to communicate information to other members and the owner. Visible to all - * members of the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to + * entities in the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to * 1000. The total size of all memberData values may not exceed 4096 bytes. Keys are case sensitive. */ public Map MemberData; @@ -1699,7 +1711,7 @@ public static class JoinLobbyRequest { public Map CustomTags; /** * The private key-value pairs used by the member to communicate information to other members and the owner. Visible to all - * members of the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to + * entities in the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to * 1000. The total size of all memberData values may not exceed 4096 bytes.Keys are case sensitive. */ public Map MemberData; @@ -2198,6 +2210,46 @@ public static class PaginationResponse { } + public static 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 ArrayList 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 static enum PartyInvitationRevocability { + Creator, + Anyone + } + + public static 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 Long MaxDevices; + /** The maximum number of devices allowed per user. Must be greater than 0. */ + public Long MaxDevicesPerUser; + /** The maximum number of endpoints allowed per device. Must be between 0 and 32, inclusive. */ + public Long MaxEndpointsPerDevice; + /** The maximum number of unique users allowed in the network. Must be greater than 0. */ + public Long MaxUsers; + /** The maximum number of users allowed per device. Must be between 1 and 8, inclusive. */ + public Long 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 static class Port { /** The name for the port. */ public String Name; @@ -2321,6 +2373,38 @@ public static class RequestMultiplayerServerResponse { } + /** + * Requests a party session from a particular set of builds if build alias params is provided, in any of the given + * preferred regions. + */ + public static class RequestPartyServiceRequest { + /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ + public Map 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 ArrayList PreferredRegions; + + } + + public static class RequestPartyServiceResponse { + /** + * 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. @@ -2556,7 +2640,7 @@ public static class UpdateLobbyRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; /** - * The private key-value pairs which are only visible to members of the lobby. Optional. Sets or updates key-value pairs on + * The private key-value pairs which are visible to all entities in the lobby. Optional. Sets or updates key-value pairs on * the lobby. Only the current lobby owner can set lobby data. Keys may be an arbitrary string of at most 30 characters. * The total size of all lobbyData values may not exceed 4096 bytes. Values are not individually limited. There can be up * to 30 key-value pairs stored here. Keys are case sensitive. @@ -2575,9 +2659,9 @@ public static class UpdateLobbyRequest { /** * The private key-value pairs used by the member to communicate information to other members and the owner. Optional. Sets * or updates new key-value pairs on the caller's member data. New keys will be added with their values and existing keys - * will be updated with the new values. Visible to all members of the lobby. At most 30 key-value pairs may be stored here, - * keys are limited to 30 characters and values to 1000. The total size of all memberData values may not exceed 4096 bytes. - * Keys are case sensitive. Servers cannot specifiy this. + * will be updated with the new values. Visible to all entities in the lobby. At most 30 key-value pairs may be stored + * here, keys are limited to 30 characters and values to 1000. The total size of all memberData values may not exceed 4096 + * bytes. Keys are case sensitive. Servers cannot specifiy this. */ public Map MemberData; /** @@ -2627,6 +2711,8 @@ public static class UpdateLobbyRequest { public static class UploadCertificateRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; + /** Forces the certificate renewal if the certificate already exists. Default is false */ + public Boolean ForceUpdate; /** The game certificate to upload. */ public Certificate GameCertificate; diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabProfilesModels.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabProfilesModels.java index 5ac15b90..8b276b92 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabProfilesModels.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabProfilesModels.java @@ -120,7 +120,7 @@ public static class EntityStatisticAttributeValue { /** Attribute name. */ public String Name; /** Attribute Statistic scores. */ - public ArrayList Scores; + public ArrayList Scores; } @@ -132,7 +132,7 @@ public static class EntityStatisticValue { /** Statistic name */ public String Name; /** Statistic scores */ - public ArrayList Scores; + public ArrayList Scores; /** Statistic value */ public Integer Value; /** Statistic version */ diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabSettings.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabSettings.java index ab5f6827..09b26d99 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabSettings.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabSettings.java @@ -8,9 +8,9 @@ import com.playfab.PlayFabErrors.ErrorCallback; public class PlayFabSettings { - public static String SdkVersion = "0.199.230915"; - public static String BuildIdentifier = "adobuild_javasdk_116"; - public static String SdkVersionString = "JavaSDK-0.199.230915"; + public static String SdkVersion = "0.205.231110"; + public static String BuildIdentifier = "adobuild_javasdk_114"; + public static String SdkVersionString = "JavaSDK-0.205.231110"; public static Map RequestGetParams; static { diff --git a/PlayFabSDK/packageMe.ps1 b/PlayFabSDK/packageMe.ps1 index e5235925..a3c8ef04 100644 --- a/PlayFabSDK/packageMe.ps1 +++ b/PlayFabSDK/packageMe.ps1 @@ -5,4 +5,4 @@ New-Item -ItemType Directory -Force ./builds popd cd target -Copy-Item combo-sdk-0.199.230915.jar -Destination ../../builds/combo-sdk-0.199.230915.jar \ No newline at end of file +Copy-Item combo-sdk-0.205.231110.jar -Destination ../../builds/combo-sdk-0.205.231110.jar \ No newline at end of file diff --git a/PlayFabSDK/packageMe.sh b/PlayFabSDK/packageMe.sh index 7f4c0595..2603f306 100644 --- a/PlayFabSDK/packageMe.sh +++ b/PlayFabSDK/packageMe.sh @@ -7,4 +7,4 @@ mkdir -p ./builds popd cd target -cp combo-sdk-0.199.230915.jar ../../builds/combo-sdk-0.199.230915.jar +cp combo-sdk-0.205.231110.jar ../../builds/combo-sdk-0.205.231110.jar diff --git a/PlayFabSDK/pom.xml b/PlayFabSDK/pom.xml index 265dc757..079f3b2a 100644 --- a/PlayFabSDK/pom.xml +++ b/PlayFabSDK/pom.xml @@ -14,7 +14,7 @@ com.playfab combo-sdk - 0.199.230915 + 0.205.231110 PlayFab Combo API PlayFab is the unified backend platform for games — everything you need to build and operate your game, all in one place, so you can focus on creating and delivering a great player experience. https://docs.microsoft.com/gaming/playfab/ diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabAdminModels.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabAdminModels.java index dff4a7f6..35164e4c 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabAdminModels.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabAdminModels.java @@ -14,9 +14,38 @@ public static class AbortTaskInstanceRequest { } + /** The work to be performed on each entity which can only be of one type. */ + public static class Action { + /** Action content to Add Inventory item v2 */ + public AddInventoryItemV2Content AddInventoryItemV2Content; + /** Action content to ban player */ + public BanPlayerContent BanPlayerContent; + /** Action content to delete inventory item v2 */ + public DeleteInventoryItemV2Content DeleteInventoryItemV2Content; + /** 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; + /** Action content to Subtract Inventory item v2 */ + public SubtractInventoryItemV2Content SubtractInventoryItemV2Content; + + } + public static class ActionsOnPlayersInSegmentTaskParameter { - /** ID of the action to perform on each player in segment. */ - public String ActionId; + /** List of actions to perform on each player in a segment. Each action object can contain only one action type. */ + public ArrayList Actions; /** ID of the segment to perform actions on. */ public String SegmentId; @@ -80,6 +109,20 @@ public static class AdCampaignSegmentFilter { } + public static class AddInventoryItemV2Content { + /** Amount of the item to be granted to a player */ + public Integer Amount; + /** The collection id for where the item will be granted in the player inventory */ + public String CollectionId; + /** The duration in seconds of the subscription to be granted to a player */ + public Integer DurationInSeconds; + /** The id of item to be granted to the player */ + public String ItemId; + /** The stack id for where the item will be granted in the player inventory */ + public String StackId; + + } + public static class AddLocalizedNewsRequest { /** Localized body text of the news. */ public String Body; @@ -196,6 +239,14 @@ public static class BanInfo { } + public static class BanPlayerContent { + /** Duration(in hours) to ban a player. If not provided, the player will be banned permanently. */ + public Integer BanDurationHours; + /** Reason to ban a player */ + public String BanReason; + + } + public static class BanPlayerSegmentAction { /** Ban hours duration. */ public Long BanHours; @@ -822,6 +873,8 @@ public static class CreateOpenIdConnectionRequest { public String IssuerDiscoveryUrl; /** Manually specified information for an OpenID Connect issuer. */ public OpenIdIssuerInformation IssuerInformation; + /** Override the issuer name for user indexing and lookup. */ + public String IssuerOverride; } @@ -1065,6 +1118,16 @@ public static class DeleteContentRequest { } + public static class DeleteInventoryItemV2Content { + /** The collection id for where the item will be removed from the player inventory */ + public String CollectionId; + /** The id of item to be removed from the player */ + public String ItemId; + /** The stack id for where the item will be removed from the player inventory */ + public String StackId; + + } + /** * Deletes 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 @@ -1132,6 +1195,10 @@ public static class DeleteOpenIdConnectionRequest { } + public static 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. @@ -1284,6 +1351,16 @@ public static class ExecuteAzureFunctionSegmentAction { } + public static 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 Boolean PublishResultsToPlayStream; + + } + public static class ExecuteCloudScriptResult { /** Number of PlayFab API requests issued by the CloudScript function */ public Integer APIRequestsIssued; @@ -1334,6 +1411,16 @@ public static class ExecuteCloudScriptSegmentAction { } + public static 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 Boolean 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 @@ -1939,6 +2026,8 @@ public static enum GenericErrorCodes { InvalidServiceConfiguration, InvalidNamespaceMismatch, LeaderboardColumnLengthMismatch, + InvalidStatisticScore, + LeaderboardColumnsNotSpecified, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingQueueNotFound, @@ -2083,6 +2172,12 @@ public static enum GenericErrorCodes { LobbyNewOwnerMustBeConnected, LobbyCurrentOwnerStillConnected, LobbyMemberIsNotOwner, + LobbyAssociatedServerMismatch, + LobbyAssociatedServerNotFound, + LobbyAssociatedToDifferentServer, + LobbyServerAlreadyAssociated, + LobbyIsNotClientOwned, + LobbyDoesNotUseConnections, EventSamplingInvalidRatio, EventSamplingInvalidEventNamespace, EventSamplingInvalidEventName, @@ -2106,6 +2201,7 @@ public static enum GenericErrorCodes { EventSinkTenantNotFound, EventSinkAadNotFound, EventSinkDatabaseNotFound, + EventSinkTitleUnauthorized, OperationCanceled, InvalidDisplayNameRandomSuffixLength, AllowNonUniquePlayerDisplayNamesDisableNotAllowed, @@ -2125,7 +2221,9 @@ public static enum GenericErrorCodes { PlayerCustomPropertiesDuplicatePropertyName, PlayerCustomPropertiesPropertyDoesNotExist, AddonAlreadyExists, - AddonDoesntExist + AddonDoesntExist, + CopilotDisabled, + CopilotInvalidRequest } public static class GetActionsOnPlayersInSegmentTaskInstanceResult { @@ -2792,6 +2890,16 @@ public int compareTo(GrantedItemInstance other) { } } + public static class GrantItemContent { + /** The catalog version of the item to be granted to the player */ + public String CatalogVersion; + /** The id of item to be granted to the player */ + public String ItemId; + /** Quantity of the item to be granted to a player */ + public Integer ItemQuantity; + + } + public static class GrantItemSegmentAction { /** Item catalog id. */ public String CatelogId; @@ -2826,6 +2934,14 @@ public static class GrantItemsToUsersResult { } + public static class GrantVirtualCurrencyContent { + /** Amount of currency to be granted to a player */ + public Integer CurrencyAmount; + /** Code of the currency to be granted to a player */ + public String CurrencyCode; + + } + public static class GrantVirtualCurrencySegmentAction { /** Virtual currency amount. */ public Integer Amount; @@ -2854,6 +2970,14 @@ public static class IncrementLimitedEditionItemAvailabilityResult { } + public static class IncrementPlayerStatisticContent { + /** Amount(in whole number) to increase the player statistic by */ + public Integer StatisticChangeBy; + /** Name of the player statistic to be incremented */ + public String StatisticName; + + } + public static class IncrementPlayerStatisticSegmentAction { /** Increment value. */ public Integer IncrementValue; @@ -3162,8 +3286,12 @@ public static class OpenIdConnection { public String ConnectionId; /** Shows if data about the connection will be loaded from the issuer's discovery document */ public Boolean DiscoverConfiguration; + /** Ignore 'nonce' claim in identity tokens. */ + public Boolean IgnoreNonce; /** Information for an OpenID Connect provider. */ public OpenIdIssuerInformation IssuerInformation; + /** Override the issuer name for user indexing and lookup. */ + public String IssuerOverride; } @@ -3429,6 +3557,16 @@ public static class PlayerStatisticVersion { } + public static 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 static enum PushNotificationPlatform { ApplePushNotificationService, GoogleCloudMessaging @@ -4350,6 +4488,12 @@ public static class SendAccountRecoveryEmailResult { } + public static 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. */ public static class SetMembershipOverrideRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ @@ -4630,6 +4774,20 @@ public static enum SubscriptionProviderStatus { PaymentPending } + public static class SubtractInventoryItemV2Content { + /** Amount of the item to removed from the player */ + public Integer Amount; + /** The collection id for where the item will be removed from the player inventory */ + public String CollectionId; + /** The duration in seconds to be removed from the subscription in the players inventory */ + public Integer DurationInSeconds; + /** The id of item to be removed from the player */ + public String ItemId; + /** The stack id for where the item will be removed from the player inventory */ + public String StackId; + + } + public static class SubtractUserVirtualCurrencyRequest { /** Amount to be subtracted from the user balance of the specified virtual currency. */ public Integer Amount; @@ -4805,10 +4963,14 @@ public static class UpdateOpenIdConnectionRequest { public String ClientSecret; /** A name for the connection that identifies it within the title. */ public String ConnectionId; + /** Ignore 'nonce' claim in identity tokens. */ + public Boolean IgnoreNonce; /** The issuer URL or discovery document URL to read issuer information from */ public String IssuerDiscoveryUrl; /** Manually specified information for an OpenID Connect issuer. */ public OpenIdIssuerInformation IssuerInformation; + /** Override the issuer name for user indexing and lookup. */ + public String IssuerOverride; } diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java index 969ca312..5deb9aee 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java @@ -11,9 +11,9 @@ /** * The Authentication APIs provide a convenient way to convert classic authentication responses into entity authentication - * models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. Manage - * API keys for authenticating any entity. The game_server API is designed to create uniquely identifiable game_server - * entities. The game_server Entity token can be used to call Matchmaking Lobby and Pubsub for server scenarios. + * models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. The + * game_server API is designed to create uniquely identifiable game_server entities. The game_server Entity token can be + * used to call Matchmaking Lobby and Pubsub for server scenarios. */ public class PlayFabAuthenticationAPI { private static Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").create(); diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabClientAPI.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabClientAPI.java index 48f964d0..b930260d 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabClientAPI.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabClientAPI.java @@ -7574,6 +7574,7 @@ private static PlayFabResult privateRegisterPlayFabUs PlayFabJsonSuccess resultData = gson.fromJson(resultRawJson, new TypeToken>(){}.getType()); RegisterPlayFabUserResult result = resultData.data; PlayFabSettings.ClientSessionTicket = result.SessionTicket != null ? result.SessionTicket : PlayFabSettings.ClientSessionTicket; + if (result.EntityToken != null) PlayFabSettings.EntityToken = result.EntityToken.EntityToken != null ? result.EntityToken.EntityToken : PlayFabSettings.EntityToken; PlayFabResult pfResult = new PlayFabResult(); pfResult.Result = result; diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabEconomyModels.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabEconomyModels.java index b14035f4..a0cb86c4 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabEconomyModels.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabEconomyModels.java @@ -1472,7 +1472,10 @@ public static class RedeemMicrosoftStoreInventoryItemsRequest { public Map CustomTags; /** The entity to perform this action on. */ public EntityKey Entity; - /** Xbox Token used for delegated business partner authentication. */ + /** + * Xbox Token used for delegated business partner authentication. Token provided by the Xbox Live SDK method + * GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", ""). + */ public String XboxToken; } diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabErrors.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabErrors.java index 8c14cd92..5936a267 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabErrors.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabErrors.java @@ -561,6 +561,8 @@ public static enum PlayFabErrorCode { InvalidServiceConfiguration(1560), InvalidNamespaceMismatch(1561), LeaderboardColumnLengthMismatch(1562), + InvalidStatisticScore(1563), + LeaderboardColumnsNotSpecified(1564), MatchmakingEntityInvalid(2001), MatchmakingPlayerAttributesInvalid(2002), MatchmakingQueueNotFound(2016), @@ -705,6 +707,12 @@ public static 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), @@ -728,6 +736,7 @@ public static enum PlayFabErrorCode { EventSinkTenantNotFound(15009), EventSinkAadNotFound(15010), EventSinkDatabaseNotFound(15011), + EventSinkTitleUnauthorized(15012), OperationCanceled(16000), InvalidDisplayNameRandomSuffixLength(17000), AllowNonUniquePlayerDisplayNamesDisableNotAllowed(17001), @@ -747,7 +756,9 @@ public static enum PlayFabErrorCode { PlayerCustomPropertiesDuplicatePropertyName(19006), PlayerCustomPropertiesPropertyDoesNotExist(19007), AddonAlreadyExists(19008), - AddonDoesntExist(19009); + AddonDoesntExist(19009), + CopilotDisabled(19100), + CopilotInvalidRequest(19101); public int id; diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java index e1e6f397..c080f24b 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java @@ -3964,6 +3964,68 @@ private static PlayFabResult privateRequestMul return pfResult; } + /** + * Request a party session. + * @param request RequestPartyServiceRequest + * @return Async Task will return RequestPartyServiceResponse + */ + @SuppressWarnings("unchecked") + public static FutureTask> RequestPartyServiceAsync(final RequestPartyServiceRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRequestPartyServiceAsync(request); + } + }); + } + + /** + * Request a party session. + * @param request RequestPartyServiceRequest + * @return RequestPartyServiceResponse + */ + @SuppressWarnings("unchecked") + public static PlayFabResult RequestPartyService(final RequestPartyServiceRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRequestPartyServiceAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + PlayFabResult exceptionResult = new PlayFabResult(); + exceptionResult.Error = PlayFabHTTP.GeneratePfError(-1, PlayFabErrorCode.Unknown, e.getMessage(), null, null); + return exceptionResult; + } + } + + /** Request a party session. */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateRequestPartyServiceAsync(final RequestPartyServiceRequest request) throws Exception { + if (PlayFabSettings.EntityToken == null) throw new Exception ("Must call GetEntityToken before you can use the Entity API"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Party/RequestPartyService"), request, "X-EntityToken", PlayFabSettings.EntityToken); + task.run(); + Object httpResult = task.get(); + if (httpResult instanceof PlayFabError) { + PlayFabError error = (PlayFabError)httpResult; + if (PlayFabSettings.GlobalErrorHandler != null) + PlayFabSettings.GlobalErrorHandler.callback(error); + PlayFabResult result = new PlayFabResult(); + result.Error = error; + return result; + } + String resultRawJson = (String) httpResult; + + PlayFabJsonSuccess resultData = gson.fromJson(resultRawJson, new TypeToken>(){}.getType()); + RequestPartyServiceResponse result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Rolls over the credentials to the container registry. * @param request RolloverContainerRegistryCredentialsRequest diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java index 03456f52..4c5c3924 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java @@ -58,7 +58,8 @@ public static enum AzureRegion { WestUs2, CentralIndia, UaeNorth, - UkSouth + UkSouth, + SwedenCentral } public static enum AzureVmFamily { @@ -736,7 +737,7 @@ public static class CreateLobbyRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; /** - * The private key-value pairs which are only visible to members of the lobby. At most 30 key-value pairs may be stored + * The private key-value pairs which are visible to all entities in the lobby. At most 30 key-value pairs may be stored * here, keys are limited to 30 characters and values to 1000. The total size of all lobbyData values may not exceed 4096 * bytes. Keys are case sensitive. */ @@ -994,6 +995,17 @@ public static class DeleteRemoteUserRequest { } + public static enum DirectPeerConnectivityOptions { + None, + SamePlatformType, + DifferentPlatformType, + AnyPlatformType, + SameEntityLoginProvider, + DifferentEntityLoginProvider, + AnyEntityLoginProvider, + AnyPlatformTypeAndEntityLoginProvider + } + public static class DynamicStandbySettings { /** * List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, @@ -1665,7 +1677,7 @@ public static class JoinArrangedLobbyRequest { public Long MaxPlayers; /** * The private key-value pairs used by the member to communicate information to other members and the owner. Visible to all - * members of the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to + * entities in the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to * 1000. The total size of all memberData values may not exceed 4096 bytes. Keys are case sensitive. */ public Map MemberData; @@ -1699,7 +1711,7 @@ public static class JoinLobbyRequest { public Map CustomTags; /** * The private key-value pairs used by the member to communicate information to other members and the owner. Visible to all - * members of the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to + * entities in the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to * 1000. The total size of all memberData values may not exceed 4096 bytes.Keys are case sensitive. */ public Map MemberData; @@ -2198,6 +2210,46 @@ public static class PaginationResponse { } + public static 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 ArrayList 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 static enum PartyInvitationRevocability { + Creator, + Anyone + } + + public static 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 Long MaxDevices; + /** The maximum number of devices allowed per user. Must be greater than 0. */ + public Long MaxDevicesPerUser; + /** The maximum number of endpoints allowed per device. Must be between 0 and 32, inclusive. */ + public Long MaxEndpointsPerDevice; + /** The maximum number of unique users allowed in the network. Must be greater than 0. */ + public Long MaxUsers; + /** The maximum number of users allowed per device. Must be between 1 and 8, inclusive. */ + public Long 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 static class Port { /** The name for the port. */ public String Name; @@ -2321,6 +2373,38 @@ public static class RequestMultiplayerServerResponse { } + /** + * Requests a party session from a particular set of builds if build alias params is provided, in any of the given + * preferred regions. + */ + public static class RequestPartyServiceRequest { + /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ + public Map 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 ArrayList PreferredRegions; + + } + + public static class RequestPartyServiceResponse { + /** + * 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. @@ -2556,7 +2640,7 @@ public static class UpdateLobbyRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; /** - * The private key-value pairs which are only visible to members of the lobby. Optional. Sets or updates key-value pairs on + * The private key-value pairs which are visible to all entities in the lobby. Optional. Sets or updates key-value pairs on * the lobby. Only the current lobby owner can set lobby data. Keys may be an arbitrary string of at most 30 characters. * The total size of all lobbyData values may not exceed 4096 bytes. Values are not individually limited. There can be up * to 30 key-value pairs stored here. Keys are case sensitive. @@ -2575,9 +2659,9 @@ public static class UpdateLobbyRequest { /** * The private key-value pairs used by the member to communicate information to other members and the owner. Optional. Sets * or updates new key-value pairs on the caller's member data. New keys will be added with their values and existing keys - * will be updated with the new values. Visible to all members of the lobby. At most 30 key-value pairs may be stored here, - * keys are limited to 30 characters and values to 1000. The total size of all memberData values may not exceed 4096 bytes. - * Keys are case sensitive. Servers cannot specifiy this. + * will be updated with the new values. Visible to all entities in the lobby. At most 30 key-value pairs may be stored + * here, keys are limited to 30 characters and values to 1000. The total size of all memberData values may not exceed 4096 + * bytes. Keys are case sensitive. Servers cannot specifiy this. */ public Map MemberData; /** @@ -2627,6 +2711,8 @@ public static class UpdateLobbyRequest { public static class UploadCertificateRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; + /** Forces the certificate renewal if the certificate already exists. Default is false */ + public Boolean ForceUpdate; /** The game certificate to upload. */ public Certificate GameCertificate; diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabProfilesModels.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabProfilesModels.java index 5ac15b90..8b276b92 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabProfilesModels.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabProfilesModels.java @@ -120,7 +120,7 @@ public static class EntityStatisticAttributeValue { /** Attribute name. */ public String Name; /** Attribute Statistic scores. */ - public ArrayList Scores; + public ArrayList Scores; } @@ -132,7 +132,7 @@ public static class EntityStatisticValue { /** Statistic name */ public String Name; /** Statistic scores */ - public ArrayList Scores; + public ArrayList Scores; /** Statistic value */ public Integer Value; /** Statistic version */ diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabServerModels.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabServerModels.java index fbd8286d..ba2da420 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabServerModels.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabServerModels.java @@ -1655,6 +1655,8 @@ public static enum GenericErrorCodes { InvalidServiceConfiguration, InvalidNamespaceMismatch, LeaderboardColumnLengthMismatch, + InvalidStatisticScore, + LeaderboardColumnsNotSpecified, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingQueueNotFound, @@ -1799,6 +1801,12 @@ public static enum GenericErrorCodes { LobbyNewOwnerMustBeConnected, LobbyCurrentOwnerStillConnected, LobbyMemberIsNotOwner, + LobbyAssociatedServerMismatch, + LobbyAssociatedServerNotFound, + LobbyAssociatedToDifferentServer, + LobbyServerAlreadyAssociated, + LobbyIsNotClientOwned, + LobbyDoesNotUseConnections, EventSamplingInvalidRatio, EventSamplingInvalidEventNamespace, EventSamplingInvalidEventName, @@ -1822,6 +1830,7 @@ public static enum GenericErrorCodes { EventSinkTenantNotFound, EventSinkAadNotFound, EventSinkDatabaseNotFound, + EventSinkTitleUnauthorized, OperationCanceled, InvalidDisplayNameRandomSuffixLength, AllowNonUniquePlayerDisplayNamesDisableNotAllowed, @@ -1841,7 +1850,9 @@ public static enum GenericErrorCodes { PlayerCustomPropertiesDuplicatePropertyName, PlayerCustomPropertiesPropertyDoesNotExist, AddonAlreadyExists, - AddonDoesntExist + AddonDoesntExist, + CopilotDisabled, + CopilotInvalidRequest } public static class GenericPlayFabIdPair { diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabSettings.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabSettings.java index ab5f6827..09b26d99 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabSettings.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabSettings.java @@ -8,9 +8,9 @@ import com.playfab.PlayFabErrors.ErrorCallback; public class PlayFabSettings { - public static String SdkVersion = "0.199.230915"; - public static String BuildIdentifier = "adobuild_javasdk_116"; - public static String SdkVersionString = "JavaSDK-0.199.230915"; + public static String SdkVersion = "0.205.231110"; + public static String BuildIdentifier = "adobuild_javasdk_114"; + public static String SdkVersionString = "JavaSDK-0.205.231110"; public static Map RequestGetParams; static { diff --git a/PlayFabServerSDK/packageMe.ps1 b/PlayFabServerSDK/packageMe.ps1 index 5275e59d..f4009f01 100644 --- a/PlayFabServerSDK/packageMe.ps1 +++ b/PlayFabServerSDK/packageMe.ps1 @@ -5,4 +5,4 @@ New-Item -ItemType Directory -Force ./builds popd cd target -Copy-Item server-sdk-0.199.230915.jar -Destination ../../builds/server-sdk-0.199.230915.jar \ No newline at end of file +Copy-Item server-sdk-0.205.231110.jar -Destination ../../builds/server-sdk-0.205.231110.jar \ No newline at end of file diff --git a/PlayFabServerSDK/packageMe.sh b/PlayFabServerSDK/packageMe.sh index ba0623bd..2752099d 100644 --- a/PlayFabServerSDK/packageMe.sh +++ b/PlayFabServerSDK/packageMe.sh @@ -7,4 +7,4 @@ mkdir -p ./builds popd cd target -cp server-sdk-0.199.230915.jar ../../builds/server-sdk-0.199.230915.jar +cp server-sdk-0.205.231110.jar ../../builds/server-sdk-0.205.231110.jar diff --git a/PlayFabServerSDK/pom.xml b/PlayFabServerSDK/pom.xml index 1e24c11b..23e10cd7 100644 --- a/PlayFabServerSDK/pom.xml +++ b/PlayFabServerSDK/pom.xml @@ -14,7 +14,7 @@ com.playfab server-sdk - 0.199.230915 + 0.205.231110 PlayFab Server API PlayFab is the unified backend platform for games — everything you need to build and operate your game, all in one place, so you can focus on creating and delivering a great player experience. https://docs.microsoft.com/gaming/playfab/ diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAdminModels.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAdminModels.java index dff4a7f6..35164e4c 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAdminModels.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAdminModels.java @@ -14,9 +14,38 @@ public static class AbortTaskInstanceRequest { } + /** The work to be performed on each entity which can only be of one type. */ + public static class Action { + /** Action content to Add Inventory item v2 */ + public AddInventoryItemV2Content AddInventoryItemV2Content; + /** Action content to ban player */ + public BanPlayerContent BanPlayerContent; + /** Action content to delete inventory item v2 */ + public DeleteInventoryItemV2Content DeleteInventoryItemV2Content; + /** 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; + /** Action content to Subtract Inventory item v2 */ + public SubtractInventoryItemV2Content SubtractInventoryItemV2Content; + + } + public static class ActionsOnPlayersInSegmentTaskParameter { - /** ID of the action to perform on each player in segment. */ - public String ActionId; + /** List of actions to perform on each player in a segment. Each action object can contain only one action type. */ + public ArrayList Actions; /** ID of the segment to perform actions on. */ public String SegmentId; @@ -80,6 +109,20 @@ public static class AdCampaignSegmentFilter { } + public static class AddInventoryItemV2Content { + /** Amount of the item to be granted to a player */ + public Integer Amount; + /** The collection id for where the item will be granted in the player inventory */ + public String CollectionId; + /** The duration in seconds of the subscription to be granted to a player */ + public Integer DurationInSeconds; + /** The id of item to be granted to the player */ + public String ItemId; + /** The stack id for where the item will be granted in the player inventory */ + public String StackId; + + } + public static class AddLocalizedNewsRequest { /** Localized body text of the news. */ public String Body; @@ -196,6 +239,14 @@ public static class BanInfo { } + public static class BanPlayerContent { + /** Duration(in hours) to ban a player. If not provided, the player will be banned permanently. */ + public Integer BanDurationHours; + /** Reason to ban a player */ + public String BanReason; + + } + public static class BanPlayerSegmentAction { /** Ban hours duration. */ public Long BanHours; @@ -822,6 +873,8 @@ public static class CreateOpenIdConnectionRequest { public String IssuerDiscoveryUrl; /** Manually specified information for an OpenID Connect issuer. */ public OpenIdIssuerInformation IssuerInformation; + /** Override the issuer name for user indexing and lookup. */ + public String IssuerOverride; } @@ -1065,6 +1118,16 @@ public static class DeleteContentRequest { } + public static class DeleteInventoryItemV2Content { + /** The collection id for where the item will be removed from the player inventory */ + public String CollectionId; + /** The id of item to be removed from the player */ + public String ItemId; + /** The stack id for where the item will be removed from the player inventory */ + public String StackId; + + } + /** * Deletes 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 @@ -1132,6 +1195,10 @@ public static class DeleteOpenIdConnectionRequest { } + public static 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. @@ -1284,6 +1351,16 @@ public static class ExecuteAzureFunctionSegmentAction { } + public static 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 Boolean PublishResultsToPlayStream; + + } + public static class ExecuteCloudScriptResult { /** Number of PlayFab API requests issued by the CloudScript function */ public Integer APIRequestsIssued; @@ -1334,6 +1411,16 @@ public static class ExecuteCloudScriptSegmentAction { } + public static 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 Boolean 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 @@ -1939,6 +2026,8 @@ public static enum GenericErrorCodes { InvalidServiceConfiguration, InvalidNamespaceMismatch, LeaderboardColumnLengthMismatch, + InvalidStatisticScore, + LeaderboardColumnsNotSpecified, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingQueueNotFound, @@ -2083,6 +2172,12 @@ public static enum GenericErrorCodes { LobbyNewOwnerMustBeConnected, LobbyCurrentOwnerStillConnected, LobbyMemberIsNotOwner, + LobbyAssociatedServerMismatch, + LobbyAssociatedServerNotFound, + LobbyAssociatedToDifferentServer, + LobbyServerAlreadyAssociated, + LobbyIsNotClientOwned, + LobbyDoesNotUseConnections, EventSamplingInvalidRatio, EventSamplingInvalidEventNamespace, EventSamplingInvalidEventName, @@ -2106,6 +2201,7 @@ public static enum GenericErrorCodes { EventSinkTenantNotFound, EventSinkAadNotFound, EventSinkDatabaseNotFound, + EventSinkTitleUnauthorized, OperationCanceled, InvalidDisplayNameRandomSuffixLength, AllowNonUniquePlayerDisplayNamesDisableNotAllowed, @@ -2125,7 +2221,9 @@ public static enum GenericErrorCodes { PlayerCustomPropertiesDuplicatePropertyName, PlayerCustomPropertiesPropertyDoesNotExist, AddonAlreadyExists, - AddonDoesntExist + AddonDoesntExist, + CopilotDisabled, + CopilotInvalidRequest } public static class GetActionsOnPlayersInSegmentTaskInstanceResult { @@ -2792,6 +2890,16 @@ public int compareTo(GrantedItemInstance other) { } } + public static class GrantItemContent { + /** The catalog version of the item to be granted to the player */ + public String CatalogVersion; + /** The id of item to be granted to the player */ + public String ItemId; + /** Quantity of the item to be granted to a player */ + public Integer ItemQuantity; + + } + public static class GrantItemSegmentAction { /** Item catalog id. */ public String CatelogId; @@ -2826,6 +2934,14 @@ public static class GrantItemsToUsersResult { } + public static class GrantVirtualCurrencyContent { + /** Amount of currency to be granted to a player */ + public Integer CurrencyAmount; + /** Code of the currency to be granted to a player */ + public String CurrencyCode; + + } + public static class GrantVirtualCurrencySegmentAction { /** Virtual currency amount. */ public Integer Amount; @@ -2854,6 +2970,14 @@ public static class IncrementLimitedEditionItemAvailabilityResult { } + public static class IncrementPlayerStatisticContent { + /** Amount(in whole number) to increase the player statistic by */ + public Integer StatisticChangeBy; + /** Name of the player statistic to be incremented */ + public String StatisticName; + + } + public static class IncrementPlayerStatisticSegmentAction { /** Increment value. */ public Integer IncrementValue; @@ -3162,8 +3286,12 @@ public static class OpenIdConnection { public String ConnectionId; /** Shows if data about the connection will be loaded from the issuer's discovery document */ public Boolean DiscoverConfiguration; + /** Ignore 'nonce' claim in identity tokens. */ + public Boolean IgnoreNonce; /** Information for an OpenID Connect provider. */ public OpenIdIssuerInformation IssuerInformation; + /** Override the issuer name for user indexing and lookup. */ + public String IssuerOverride; } @@ -3429,6 +3557,16 @@ public static class PlayerStatisticVersion { } + public static 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 static enum PushNotificationPlatform { ApplePushNotificationService, GoogleCloudMessaging @@ -4350,6 +4488,12 @@ public static class SendAccountRecoveryEmailResult { } + public static 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. */ public static class SetMembershipOverrideRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ @@ -4630,6 +4774,20 @@ public static enum SubscriptionProviderStatus { PaymentPending } + public static class SubtractInventoryItemV2Content { + /** Amount of the item to removed from the player */ + public Integer Amount; + /** The collection id for where the item will be removed from the player inventory */ + public String CollectionId; + /** The duration in seconds to be removed from the subscription in the players inventory */ + public Integer DurationInSeconds; + /** The id of item to be removed from the player */ + public String ItemId; + /** The stack id for where the item will be removed from the player inventory */ + public String StackId; + + } + public static class SubtractUserVirtualCurrencyRequest { /** Amount to be subtracted from the user balance of the specified virtual currency. */ public Integer Amount; @@ -4805,10 +4963,14 @@ public static class UpdateOpenIdConnectionRequest { public String ClientSecret; /** A name for the connection that identifies it within the title. */ public String ConnectionId; + /** Ignore 'nonce' claim in identity tokens. */ + public Boolean IgnoreNonce; /** The issuer URL or discovery document URL to read issuer information from */ public String IssuerDiscoveryUrl; /** Manually specified information for an OpenID Connect issuer. */ public OpenIdIssuerInformation IssuerInformation; + /** Override the issuer name for user indexing and lookup. */ + public String IssuerOverride; } diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java index 969ca312..5deb9aee 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAuthenticationAPI.java @@ -11,9 +11,9 @@ /** * The Authentication APIs provide a convenient way to convert classic authentication responses into entity authentication - * models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. Manage - * API keys for authenticating any entity. The game_server API is designed to create uniquely identifiable game_server - * entities. The game_server Entity token can be used to call Matchmaking Lobby and Pubsub for server scenarios. + * models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. The + * game_server API is designed to create uniquely identifiable game_server entities. The game_server Entity token can be + * used to call Matchmaking Lobby and Pubsub for server scenarios. */ public class PlayFabAuthenticationAPI { private static Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").create(); diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabEconomyModels.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabEconomyModels.java index b14035f4..a0cb86c4 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabEconomyModels.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabEconomyModels.java @@ -1472,7 +1472,10 @@ public static class RedeemMicrosoftStoreInventoryItemsRequest { public Map CustomTags; /** The entity to perform this action on. */ public EntityKey Entity; - /** Xbox Token used for delegated business partner authentication. */ + /** + * Xbox Token used for delegated business partner authentication. Token provided by the Xbox Live SDK method + * GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", ""). + */ public String XboxToken; } diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabErrors.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabErrors.java index 8c14cd92..5936a267 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabErrors.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabErrors.java @@ -561,6 +561,8 @@ public static enum PlayFabErrorCode { InvalidServiceConfiguration(1560), InvalidNamespaceMismatch(1561), LeaderboardColumnLengthMismatch(1562), + InvalidStatisticScore(1563), + LeaderboardColumnsNotSpecified(1564), MatchmakingEntityInvalid(2001), MatchmakingPlayerAttributesInvalid(2002), MatchmakingQueueNotFound(2016), @@ -705,6 +707,12 @@ public static 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), @@ -728,6 +736,7 @@ public static enum PlayFabErrorCode { EventSinkTenantNotFound(15009), EventSinkAadNotFound(15010), EventSinkDatabaseNotFound(15011), + EventSinkTitleUnauthorized(15012), OperationCanceled(16000), InvalidDisplayNameRandomSuffixLength(17000), AllowNonUniquePlayerDisplayNamesDisableNotAllowed(17001), @@ -747,7 +756,9 @@ public static enum PlayFabErrorCode { PlayerCustomPropertiesDuplicatePropertyName(19006), PlayerCustomPropertiesPropertyDoesNotExist(19007), AddonAlreadyExists(19008), - AddonDoesntExist(19009); + AddonDoesntExist(19009), + CopilotDisabled(19100), + CopilotInvalidRequest(19101); public int id; diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java index e1e6f397..c080f24b 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerAPI.java @@ -3964,6 +3964,68 @@ private static PlayFabResult privateRequestMul return pfResult; } + /** + * Request a party session. + * @param request RequestPartyServiceRequest + * @return Async Task will return RequestPartyServiceResponse + */ + @SuppressWarnings("unchecked") + public static FutureTask> RequestPartyServiceAsync(final RequestPartyServiceRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRequestPartyServiceAsync(request); + } + }); + } + + /** + * Request a party session. + * @param request RequestPartyServiceRequest + * @return RequestPartyServiceResponse + */ + @SuppressWarnings("unchecked") + public static PlayFabResult RequestPartyService(final RequestPartyServiceRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRequestPartyServiceAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + PlayFabResult exceptionResult = new PlayFabResult(); + exceptionResult.Error = PlayFabHTTP.GeneratePfError(-1, PlayFabErrorCode.Unknown, e.getMessage(), null, null); + return exceptionResult; + } + } + + /** Request a party session. */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateRequestPartyServiceAsync(final RequestPartyServiceRequest request) throws Exception { + if (PlayFabSettings.EntityToken == null) throw new Exception ("Must call GetEntityToken before you can use the Entity API"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Party/RequestPartyService"), request, "X-EntityToken", PlayFabSettings.EntityToken); + task.run(); + Object httpResult = task.get(); + if (httpResult instanceof PlayFabError) { + PlayFabError error = (PlayFabError)httpResult; + if (PlayFabSettings.GlobalErrorHandler != null) + PlayFabSettings.GlobalErrorHandler.callback(error); + PlayFabResult result = new PlayFabResult(); + result.Error = error; + return result; + } + String resultRawJson = (String) httpResult; + + PlayFabJsonSuccess resultData = gson.fromJson(resultRawJson, new TypeToken>(){}.getType()); + RequestPartyServiceResponse result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Rolls over the credentials to the container registry. * @param request RolloverContainerRegistryCredentialsRequest diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java index 03456f52..4c5c3924 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java @@ -58,7 +58,8 @@ public static enum AzureRegion { WestUs2, CentralIndia, UaeNorth, - UkSouth + UkSouth, + SwedenCentral } public static enum AzureVmFamily { @@ -736,7 +737,7 @@ public static class CreateLobbyRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; /** - * The private key-value pairs which are only visible to members of the lobby. At most 30 key-value pairs may be stored + * The private key-value pairs which are visible to all entities in the lobby. At most 30 key-value pairs may be stored * here, keys are limited to 30 characters and values to 1000. The total size of all lobbyData values may not exceed 4096 * bytes. Keys are case sensitive. */ @@ -994,6 +995,17 @@ public static class DeleteRemoteUserRequest { } + public static enum DirectPeerConnectivityOptions { + None, + SamePlatformType, + DifferentPlatformType, + AnyPlatformType, + SameEntityLoginProvider, + DifferentEntityLoginProvider, + AnyEntityLoginProvider, + AnyPlatformTypeAndEntityLoginProvider + } + public static class DynamicStandbySettings { /** * List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, @@ -1665,7 +1677,7 @@ public static class JoinArrangedLobbyRequest { public Long MaxPlayers; /** * The private key-value pairs used by the member to communicate information to other members and the owner. Visible to all - * members of the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to + * entities in the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to * 1000. The total size of all memberData values may not exceed 4096 bytes. Keys are case sensitive. */ public Map MemberData; @@ -1699,7 +1711,7 @@ public static class JoinLobbyRequest { public Map CustomTags; /** * The private key-value pairs used by the member to communicate information to other members and the owner. Visible to all - * members of the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to + * entities in the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to * 1000. The total size of all memberData values may not exceed 4096 bytes.Keys are case sensitive. */ public Map MemberData; @@ -2198,6 +2210,46 @@ public static class PaginationResponse { } + public static 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 ArrayList 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 static enum PartyInvitationRevocability { + Creator, + Anyone + } + + public static 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 Long MaxDevices; + /** The maximum number of devices allowed per user. Must be greater than 0. */ + public Long MaxDevicesPerUser; + /** The maximum number of endpoints allowed per device. Must be between 0 and 32, inclusive. */ + public Long MaxEndpointsPerDevice; + /** The maximum number of unique users allowed in the network. Must be greater than 0. */ + public Long MaxUsers; + /** The maximum number of users allowed per device. Must be between 1 and 8, inclusive. */ + public Long 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 static class Port { /** The name for the port. */ public String Name; @@ -2321,6 +2373,38 @@ public static class RequestMultiplayerServerResponse { } + /** + * Requests a party session from a particular set of builds if build alias params is provided, in any of the given + * preferred regions. + */ + public static class RequestPartyServiceRequest { + /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ + public Map 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 ArrayList PreferredRegions; + + } + + public static class RequestPartyServiceResponse { + /** + * 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. @@ -2556,7 +2640,7 @@ public static class UpdateLobbyRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; /** - * The private key-value pairs which are only visible to members of the lobby. Optional. Sets or updates key-value pairs on + * The private key-value pairs which are visible to all entities in the lobby. Optional. Sets or updates key-value pairs on * the lobby. Only the current lobby owner can set lobby data. Keys may be an arbitrary string of at most 30 characters. * The total size of all lobbyData values may not exceed 4096 bytes. Values are not individually limited. There can be up * to 30 key-value pairs stored here. Keys are case sensitive. @@ -2575,9 +2659,9 @@ public static class UpdateLobbyRequest { /** * The private key-value pairs used by the member to communicate information to other members and the owner. Optional. Sets * or updates new key-value pairs on the caller's member data. New keys will be added with their values and existing keys - * will be updated with the new values. Visible to all members of the lobby. At most 30 key-value pairs may be stored here, - * keys are limited to 30 characters and values to 1000. The total size of all memberData values may not exceed 4096 bytes. - * Keys are case sensitive. Servers cannot specifiy this. + * will be updated with the new values. Visible to all entities in the lobby. At most 30 key-value pairs may be stored + * here, keys are limited to 30 characters and values to 1000. The total size of all memberData values may not exceed 4096 + * bytes. Keys are case sensitive. Servers cannot specifiy this. */ public Map MemberData; /** @@ -2627,6 +2711,8 @@ public static class UpdateLobbyRequest { public static class UploadCertificateRequest { /** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */ public Map CustomTags; + /** Forces the certificate renewal if the certificate already exists. Default is false */ + public Boolean ForceUpdate; /** The game certificate to upload. */ public Certificate GameCertificate; diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabProfilesModels.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabProfilesModels.java index 5ac15b90..8b276b92 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabProfilesModels.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabProfilesModels.java @@ -120,7 +120,7 @@ public static class EntityStatisticAttributeValue { /** Attribute name. */ public String Name; /** Attribute Statistic scores. */ - public ArrayList Scores; + public ArrayList Scores; } @@ -132,7 +132,7 @@ public static class EntityStatisticValue { /** Statistic name */ public String Name; /** Statistic scores */ - public ArrayList Scores; + public ArrayList Scores; /** Statistic value */ public Integer Value; /** Statistic version */ diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabServerModels.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabServerModels.java index fbd8286d..ba2da420 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabServerModels.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabServerModels.java @@ -1655,6 +1655,8 @@ public static enum GenericErrorCodes { InvalidServiceConfiguration, InvalidNamespaceMismatch, LeaderboardColumnLengthMismatch, + InvalidStatisticScore, + LeaderboardColumnsNotSpecified, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingQueueNotFound, @@ -1799,6 +1801,12 @@ public static enum GenericErrorCodes { LobbyNewOwnerMustBeConnected, LobbyCurrentOwnerStillConnected, LobbyMemberIsNotOwner, + LobbyAssociatedServerMismatch, + LobbyAssociatedServerNotFound, + LobbyAssociatedToDifferentServer, + LobbyServerAlreadyAssociated, + LobbyIsNotClientOwned, + LobbyDoesNotUseConnections, EventSamplingInvalidRatio, EventSamplingInvalidEventNamespace, EventSamplingInvalidEventName, @@ -1822,6 +1830,7 @@ public static enum GenericErrorCodes { EventSinkTenantNotFound, EventSinkAadNotFound, EventSinkDatabaseNotFound, + EventSinkTitleUnauthorized, OperationCanceled, InvalidDisplayNameRandomSuffixLength, AllowNonUniquePlayerDisplayNamesDisableNotAllowed, @@ -1841,7 +1850,9 @@ public static enum GenericErrorCodes { PlayerCustomPropertiesDuplicatePropertyName, PlayerCustomPropertiesPropertyDoesNotExist, AddonAlreadyExists, - AddonDoesntExist + AddonDoesntExist, + CopilotDisabled, + CopilotInvalidRequest } public static class GenericPlayFabIdPair { diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabSettings.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabSettings.java index a223b098..243f1626 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabSettings.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabSettings.java @@ -8,9 +8,9 @@ import com.playfab.PlayFabErrors.ErrorCallback; public class PlayFabSettings { - public static String SdkVersion = "0.199.230915"; - public static String BuildIdentifier = "adobuild_javasdk_116"; - public static String SdkVersionString = "JavaSDK-0.199.230915"; + public static String SdkVersion = "0.205.231110"; + public static String BuildIdentifier = "adobuild_javasdk_114"; + public static String SdkVersionString = "JavaSDK-0.205.231110"; public static Map RequestGetParams; static { diff --git a/builds/client-sdk-0.205.231110.jar b/builds/client-sdk-0.205.231110.jar new file mode 100644 index 00000000..e02ffb0c Binary files /dev/null and b/builds/client-sdk-0.205.231110.jar differ diff --git a/builds/combo-sdk-0.205.231110.jar b/builds/combo-sdk-0.205.231110.jar new file mode 100644 index 00000000..39eeea54 Binary files /dev/null and b/builds/combo-sdk-0.205.231110.jar differ diff --git a/builds/server-sdk-0.205.231110.jar b/builds/server-sdk-0.205.231110.jar new file mode 100644 index 00000000..8cfa245f Binary files /dev/null and b/builds/server-sdk-0.205.231110.jar differ