diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientAPI.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientAPI.java index 583b246c..57f77bfd 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientAPI.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientAPI.java @@ -785,6 +785,66 @@ private static PlayFabResult privateConsumeItemAsync(final Co return pfResult; } + /** + * Checks for any new consumable entitlements. If any are found, they are consumed and added as PlayFab items + * @param request ConsumePSNEntitlementsRequest + * @return Async Task will return ConsumePSNEntitlementsResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> ConsumePSNEntitlementsAsync(final ConsumePSNEntitlementsRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateConsumePSNEntitlementsAsync(request); + } + }); + } + + /** + * Checks for any new consumable entitlements. If any are found, they are consumed and added as PlayFab items + * @param request ConsumePSNEntitlementsRequest + * @return ConsumePSNEntitlementsResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult ConsumePSNEntitlements(final ConsumePSNEntitlementsRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateConsumePSNEntitlementsAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Checks for any new consumable entitlements. If any are found, they are consumed and added as PlayFab items */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateConsumePSNEntitlementsAsync(final ConsumePSNEntitlementsRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/ConsumePSNEntitlements"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + ConsumePSNEntitlementsResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Grants the player's current entitlements from Xbox Live, consuming all availble items in Xbox and granting them to the * player's PlayFab inventory. This call is idempotent and will not grant previously granted items to the player. @@ -3107,6 +3167,66 @@ private static PlayFabResult pri return pfResult; } + /** + * Retrieves the unique PlayFab identifiers for the given set of PlayStation Network identifiers. + * @param request GetPlayFabIDsFromPSNAccountIDsRequest + * @return Async Task will return GetPlayFabIDsFromPSNAccountIDsResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> GetPlayFabIDsFromPSNAccountIDsAsync(final GetPlayFabIDsFromPSNAccountIDsRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateGetPlayFabIDsFromPSNAccountIDsAsync(request); + } + }); + } + + /** + * Retrieves the unique PlayFab identifiers for the given set of PlayStation Network identifiers. + * @param request GetPlayFabIDsFromPSNAccountIDsRequest + * @return GetPlayFabIDsFromPSNAccountIDsResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult GetPlayFabIDsFromPSNAccountIDs(final GetPlayFabIDsFromPSNAccountIDsRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateGetPlayFabIDsFromPSNAccountIDsAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Retrieves the unique PlayFab identifiers for the given set of PlayStation Network identifiers. */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateGetPlayFabIDsFromPSNAccountIDsAsync(final GetPlayFabIDsFromPSNAccountIDsRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/GetPlayFabIDsFromPSNAccountIDs"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + GetPlayFabIDsFromPSNAccountIDsResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are the profile * IDs for the user accounts, available as SteamId in the Steamworks Community API calls. @@ -4884,6 +5004,66 @@ private static PlayFabResult privateLinkOpenIdConnectAsync(final Li return pfResult; } + /** + * Links the PlayStation Network account associated with the provided access code to the user's PlayFab account + * @param request LinkPSNAccountRequest + * @return Async Task will return LinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> LinkPSNAccountAsync(final LinkPSNAccountRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLinkPSNAccountAsync(request); + } + }); + } + + /** + * Links the PlayStation Network account associated with the provided access code to the user's PlayFab account + * @param request LinkPSNAccountRequest + * @return LinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult LinkPSNAccount(final LinkPSNAccountRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLinkPSNAccountAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Links the PlayStation Network account associated with the provided access code to the user's PlayFab account */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateLinkPSNAccountAsync(final LinkPSNAccountRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/LinkPSNAccount"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + LinkPSNAccountResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Links the Steam account associated with the provided Steam authentication ticket to the user's PlayFab account * @param request LinkSteamAccountRequest @@ -5954,6 +6134,75 @@ private static PlayFabResult privateLoginWithPlayFabAsync(final Log return pfResult; } + /** + * Signs the user in using a PlayStation Network authentication code, returning a session identifier that can subsequently + * be used for API calls which require an authenticated user + * @param request LoginWithPSNRequest + * @return Async Task will return LoginResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> LoginWithPSNAsync(final LoginWithPSNRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLoginWithPSNAsync(request); + } + }); + } + + /** + * Signs the user in using a PlayStation Network authentication code, returning a session identifier that can subsequently + * be used for API calls which require an authenticated user + * @param request LoginWithPSNRequest + * @return LoginResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult LoginWithPSN(final LoginWithPSNRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLoginWithPSNAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** + * Signs the user in using a PlayStation Network authentication code, returning a session identifier that can subsequently + * be used for API calls which require an authenticated user + */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateLoginWithPSNAsync(final LoginWithPSNRequest request) throws Exception { + request.TitleId = PlayFabSettings.TitleId != null ? PlayFabSettings.TitleId : request.TitleId; + if (request.TitleId == null) throw new Exception ("Must be have PlayFabSettings.TitleId set to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/LoginWithPSN"), request, null, null); + 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()); + LoginResult 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; + MultiStepClientLogin(resultData.data.SettingsForUser.NeedsAttribution); + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Signs the user in using a Steam authentication ticket, returning a session identifier that can subsequently be used for * API calls which require an authenticated user @@ -6558,6 +6807,66 @@ private static PlayFabResult privateRedeemCouponAsync(final return pfResult; } + /** + * Uses the supplied OAuth code to refresh the internally cached player PSN auth token + * @param request RefreshPSNAuthTokenRequest + * @return Async Task will return EmptyResponse + */ + @SuppressWarnings("unchecked") + public static FutureTask> RefreshPSNAuthTokenAsync(final RefreshPSNAuthTokenRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRefreshPSNAuthTokenAsync(request); + } + }); + } + + /** + * Uses the supplied OAuth code to refresh the internally cached player PSN auth token + * @param request RefreshPSNAuthTokenRequest + * @return EmptyResponse + */ + @SuppressWarnings("unchecked") + public static PlayFabResult RefreshPSNAuthToken(final RefreshPSNAuthTokenRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRefreshPSNAuthTokenAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Uses the supplied OAuth code to refresh the internally cached player PSN auth token */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateRefreshPSNAuthTokenAsync(final RefreshPSNAuthTokenRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/RefreshPSNAuthToken"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + EmptyResponse result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Registers the iOS device to receive push notifications * @param request RegisterForIOSPushNotificationRequest @@ -8183,6 +8492,66 @@ private static PlayFabResult privateUnlinkOpenIdConnectAsync(fina return pfResult; } + /** + * Unlinks the related PSN account from the user's PlayFab account + * @param request UnlinkPSNAccountRequest + * @return Async Task will return UnlinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> UnlinkPSNAccountAsync(final UnlinkPSNAccountRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateUnlinkPSNAccountAsync(request); + } + }); + } + + /** + * Unlinks the related PSN account from the user's PlayFab account + * @param request UnlinkPSNAccountRequest + * @return UnlinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult UnlinkPSNAccount(final UnlinkPSNAccountRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateUnlinkPSNAccountAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Unlinks the related PSN account from the user's PlayFab account */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateUnlinkPSNAccountAsync(final UnlinkPSNAccountRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/UnlinkPSNAccount"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + UnlinkPSNAccountResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Unlinks the related Steam account from the user's PlayFab account * @param request UnlinkSteamAccountRequest diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientModels.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientModels.java index f40e24a9..b99ca0d4 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientModels.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabClientModels.java @@ -423,6 +423,21 @@ public static class ConsumeItemResult { } + public static class ConsumePSNEntitlementsRequest { + /** Which catalog to match granted entitlements against. If null, defaults to title default catalog */ + public String CatalogVersion; + /** Id of the PSN service label to consume entitlements from */ + public Integer ServiceLabel; + + } + + public static class ConsumePSNEntitlementsResult { + /** Array of items granted to the player as a result of consuming entitlements. */ + @Unordered("ItemInstanceId") + public ArrayList ItemsGranted; + + } + public static class ConsumeXboxEntitlementsRequest { /** Catalog version to use */ public String CatalogVersion; @@ -1810,6 +1825,21 @@ public static class GetPlayFabIDsFromNintendoSwitchDeviceIdsResult { } + public static class GetPlayFabIDsFromPSNAccountIDsRequest { + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** Array of unique PlayStation Network identifiers for which the title needs to get PlayFab identifiers. */ + public ArrayList PSNAccountIDs; + + } + + /** For PlayStation Network identifiers which have not been linked to PlayFab accounts, null will be returned. */ + public static class GetPlayFabIDsFromPSNAccountIDsResult { + /** Mapping of PlayStation Network identifiers to PlayFab identifiers. */ + public ArrayList Data; + + } + public static class GetPlayFabIDsFromSteamIDsRequest { /** Array of unique Steam identifiers (Steam profile IDs) for which the title needs to get PlayFab identifiers. */ public ArrayList SteamStringIDs; @@ -2387,6 +2417,22 @@ public static class LinkOpenIdConnectRequest { } + public static class LinkPSNAccountRequest { + /** Authentication code provided by the PlayStation Network. */ + public String AuthCode; + /** If another user is already linked to the account, unlink the other user and re-link. */ + public Boolean ForceLink; + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** Redirect URI supplied to PSN when requesting an auth code */ + public String RedirectUri; + + } + + public static class LinkPSNAccountResult { + + } + /** * Steam authentication is accomplished with the Steam Session Ticket. More information on the Ticket can be * found in the Steamworks SDK, here: https://partner.steamgames.com/documentation/auth (requires sign-in). NOTE: For Steam @@ -2955,6 +3001,43 @@ public static class LoginWithPlayFabRequest { } + /** + * If this is the first time a user has signed in with the PlayStation Network account and CreateAccount + * is set to true, a new PlayFab account will be created and linked to the PSN account. In this case, no email or username + * will be + * associated with the PlayFab account. Otherwise, if no PlayFab account is linked to the PSN account, an error indicating + * this will + * be returned, so that the title can guide the user through creation of a PlayFab account. + */ + public static class LoginWithPSNRequest { + /** Auth code provided by the PSN OAuth provider. */ + public String AuthCode; + /** Automatically create a PlayFab account if one is not currently linked to this ID. */ + public Boolean CreateAccount; + /** Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only). */ + public String EncryptedRequest; + /** Flags for which pieces of info to return for the user. */ + public GetPlayerCombinedInfoRequestParams InfoRequestParameters; + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** + * Formerly triggered an Entity login with a normal client login. This is now automatic, and always-on. + * @deprecated Do not use + */ + @Deprecated + public Boolean LoginTitlePlayerAccountEntity; + /** Player secret that is used to verify API request signatures (Enterprise Only). */ + public String PlayerSecret; + /** Redirect URI supplied to PSN when requesting an auth code */ + public String RedirectUri; + /** + * Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a + * title has been selected. + */ + public String TitleId; + + } + /** * Steam sign-in is accomplished with the Steam Session Ticket. More information on the Ticket can be * found in the Steamworks SDK, here: https://partner.steamgames.com/documentation/auth (requires sign-in). NOTE: For Steam @@ -3375,6 +3458,14 @@ public static class PlayerStatisticVersion { } + public static class PSNAccountPlayFabIdPair { + /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the PlayStation Network identifier. */ + public String PlayFabId; + /** Unique PlayStation Network identifier for a user. */ + public String PSNAccountId; + + } + /** * Please note that the processing time for inventory grants and purchases increases fractionally * the more items are in the inventory, and the more items are in the grant/purchase operation (with each item in a bundle @@ -3438,6 +3529,16 @@ public static class RedeemCouponResult { } + public static class RefreshPSNAuthTokenRequest { + /** Auth code returned by PSN OAuth system. */ + public String AuthCode; + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** Redirect URI supplied to PSN when requesting an auth code */ + public String RedirectUri; + + } + public static enum Region { USCentral, USEast, @@ -4115,6 +4216,14 @@ public static class UnlinkNintendoSwitchDeviceIdResult { } + public static class UnlinkPSNAccountRequest { + + } + + public static class UnlinkPSNAccountResult { + + } + public static class UnlinkSteamAccountRequest { } diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabErrors.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabErrors.java index d1d6ed14..d0507606 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabErrors.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabErrors.java @@ -405,6 +405,23 @@ public static enum PlayFabErrorCode { StatisticTagRequired(1401), StatisticTagInvalid(1402), DataIntegrityError(1403), + VirtualCurrencyCannotBeSetToOlderVersion(1404), + VirtualCurrencyMustBeWithinIntegerRange(1405), + EmailTemplateInvalidSyntax(1406), + EmailTemplateMissingCallback(1407), + PushNotificationTemplateInvalidPayload(1408), + InvalidLocalizedPushNotificationLanguage(1409), + MissingLocalizedPushNotificationMessage(1410), + PushNotificationTemplateMissingPlatformPayload(1411), + PushNotificationTemplatePayloadContainsInvalidJson(1412), + PushNotificationTemplateContainsInvalidIosPayload(1413), + PushNotificationTemplateContainsInvalidAndroidPayload(1414), + PushNotificationTemplateIosPayloadMissingNotificationBody(1415), + PushNotificationTemplateAndroidPayloadMissingNotificationBody(1416), + PushNotificationTemplateNotFound(1417), + PushNotificationTemplateMissingDefaultVersion(1418), + PushNotificationTemplateInvalidSyntax(1419), + PushNotificationTemplateNoCustomPayloadForV1(1420), MatchmakingEntityInvalid(2001), MatchmakingPlayerAttributesInvalid(2002), MatchmakingCreateRequestMissing(2003), diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerModels.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerModels.java index 20ca7df0..b58cba4f 100644 --- a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerModels.java +++ b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabMultiplayerModels.java @@ -57,6 +57,15 @@ public static enum AzureVmSize { Standard_A2_v2, Standard_A4_v2, Standard_A8_v2, + Standard_F1, + Standard_F2, + Standard_F4, + Standard_F8, + Standard_F16, + Standard_F2s_v2, + Standard_F4s_v2, + Standard_F8s_v2, + Standard_F16s_v2, Standard_A1, Standard_A2, Standard_A3, @@ -70,7 +79,10 @@ public static class BuildRegion { public AzureRegion Region; /** The number of standby multiplayer servers for the region. */ public Integer StandbyServers; - /** The status of multiplayer servers in the build region. */ + /** + * The status of multiplayer servers in the build region. Valid values are - Unknown, Initialized, Deploying, Deployed, + * Unhealthy. + */ public String Status; } @@ -154,7 +166,10 @@ public static class CreateBuildWithCustomContainerRequest { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** Metadata to tag the build. */ + /** + * Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through + * Game Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to host on a single VM. */ public Integer MultiplayerServerCountPerVm; @@ -207,7 +222,10 @@ public static class CreateBuildWithManagedContainerRequest { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** Metadata to tag the build. */ + /** + * Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through + * Game Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to host on a single VM. */ public Integer MultiplayerServerCountPerVm; @@ -394,7 +412,7 @@ public static class GetBuildResponse { public String BuildId; /** The build name. */ public String BuildName; - /** The current build status. */ + /** The current build status. Valid values are - Deploying, Deployed, DeletingRegion, Unhealthy. */ public String BuildStatus; /** The flavor of container of he build. */ public ContainerFlavor ContainerFlavor; @@ -411,7 +429,10 @@ public static class GetBuildResponse { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** The metadata of the build. */ + /** + * Metadata of the build. The keys are case insensitive. The build metadata is made available to the server through Game + * Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to hosted on a single VM of the build. */ public Integer MultiplayerServerCountPerVm; @@ -714,16 +735,18 @@ public static class RequestMultiplayerServerRequest { /** The guid string build ID of the multiplayer server to request. */ public String BuildId; /** - * Initial list of players (potentially matchmade) allowed to connect to the game. The game server can use this list to - * validate players connecting to it. + * Initial list of players (potentially matchmade) allowed to connect to the game. This list is passed to the game server + * when requested (via GSDK) and can be used to validate players connecting to it. */ public ArrayList InitialPlayers; - /** The preferred regions to request a multiplayer server from. */ + /** + * The preferred regions to request a multiplayer server from. The Multiplayer Service will iterate through the regions in + * the specified order and allocate a server from the first one that has servers available. + */ public ArrayList PreferredRegions; /** - * Data encoded as a string that is passed to the game server when requested. This can be used to share a cryptographic - * secret for servers to authenticate clients or to communicate information such as game mode or map through the request - * flow. + * Data encoded as a string that is passed to the game server when requested. This can be used to to communicate + * information such as game mode or map through the request flow. */ public String SessionCookie; /** A guid string session ID created track the multiplayer server session over its life. */ diff --git a/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabSettings.java b/AndroidStudioExample/app/src/main/java/com/playfab/PlayFabSettings.java index 05dd25ed..fca00a4d 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.81.181204"; - public static String BuildIdentifier = "jbuild_javasdk__sdk-slave2016-2_2"; - public static String SdkVersionString = "JavaSDK-0.81.181204"; + public static String SdkVersion = "0.82.181218"; + public static String BuildIdentifier = "jbuild_javasdk__sdk-slave2016-1_0"; + public static String SdkVersionString = "JavaSDK-0.82.181218"; public static Map RequestGetParams; static { diff --git a/PlayFabClientSDK/pom.xml b/PlayFabClientSDK/pom.xml index b0dcf1b7..5ff9aa6a 100644 --- a/PlayFabClientSDK/pom.xml +++ b/PlayFabClientSDK/pom.xml @@ -14,7 +14,7 @@ com.playfab client-sdk - 0.81.181204 + 0.82.181218 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. http://api.playfab.com/ diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientAPI.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientAPI.java index 583b246c..57f77bfd 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientAPI.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientAPI.java @@ -785,6 +785,66 @@ private static PlayFabResult privateConsumeItemAsync(final Co return pfResult; } + /** + * Checks for any new consumable entitlements. If any are found, they are consumed and added as PlayFab items + * @param request ConsumePSNEntitlementsRequest + * @return Async Task will return ConsumePSNEntitlementsResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> ConsumePSNEntitlementsAsync(final ConsumePSNEntitlementsRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateConsumePSNEntitlementsAsync(request); + } + }); + } + + /** + * Checks for any new consumable entitlements. If any are found, they are consumed and added as PlayFab items + * @param request ConsumePSNEntitlementsRequest + * @return ConsumePSNEntitlementsResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult ConsumePSNEntitlements(final ConsumePSNEntitlementsRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateConsumePSNEntitlementsAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Checks for any new consumable entitlements. If any are found, they are consumed and added as PlayFab items */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateConsumePSNEntitlementsAsync(final ConsumePSNEntitlementsRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/ConsumePSNEntitlements"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + ConsumePSNEntitlementsResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Grants the player's current entitlements from Xbox Live, consuming all availble items in Xbox and granting them to the * player's PlayFab inventory. This call is idempotent and will not grant previously granted items to the player. @@ -3107,6 +3167,66 @@ private static PlayFabResult pri return pfResult; } + /** + * Retrieves the unique PlayFab identifiers for the given set of PlayStation Network identifiers. + * @param request GetPlayFabIDsFromPSNAccountIDsRequest + * @return Async Task will return GetPlayFabIDsFromPSNAccountIDsResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> GetPlayFabIDsFromPSNAccountIDsAsync(final GetPlayFabIDsFromPSNAccountIDsRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateGetPlayFabIDsFromPSNAccountIDsAsync(request); + } + }); + } + + /** + * Retrieves the unique PlayFab identifiers for the given set of PlayStation Network identifiers. + * @param request GetPlayFabIDsFromPSNAccountIDsRequest + * @return GetPlayFabIDsFromPSNAccountIDsResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult GetPlayFabIDsFromPSNAccountIDs(final GetPlayFabIDsFromPSNAccountIDsRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateGetPlayFabIDsFromPSNAccountIDsAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Retrieves the unique PlayFab identifiers for the given set of PlayStation Network identifiers. */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateGetPlayFabIDsFromPSNAccountIDsAsync(final GetPlayFabIDsFromPSNAccountIDsRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/GetPlayFabIDsFromPSNAccountIDs"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + GetPlayFabIDsFromPSNAccountIDsResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are the profile * IDs for the user accounts, available as SteamId in the Steamworks Community API calls. @@ -4884,6 +5004,66 @@ private static PlayFabResult privateLinkOpenIdConnectAsync(final Li return pfResult; } + /** + * Links the PlayStation Network account associated with the provided access code to the user's PlayFab account + * @param request LinkPSNAccountRequest + * @return Async Task will return LinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> LinkPSNAccountAsync(final LinkPSNAccountRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLinkPSNAccountAsync(request); + } + }); + } + + /** + * Links the PlayStation Network account associated with the provided access code to the user's PlayFab account + * @param request LinkPSNAccountRequest + * @return LinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult LinkPSNAccount(final LinkPSNAccountRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLinkPSNAccountAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Links the PlayStation Network account associated with the provided access code to the user's PlayFab account */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateLinkPSNAccountAsync(final LinkPSNAccountRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/LinkPSNAccount"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + LinkPSNAccountResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Links the Steam account associated with the provided Steam authentication ticket to the user's PlayFab account * @param request LinkSteamAccountRequest @@ -5954,6 +6134,75 @@ private static PlayFabResult privateLoginWithPlayFabAsync(final Log return pfResult; } + /** + * Signs the user in using a PlayStation Network authentication code, returning a session identifier that can subsequently + * be used for API calls which require an authenticated user + * @param request LoginWithPSNRequest + * @return Async Task will return LoginResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> LoginWithPSNAsync(final LoginWithPSNRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLoginWithPSNAsync(request); + } + }); + } + + /** + * Signs the user in using a PlayStation Network authentication code, returning a session identifier that can subsequently + * be used for API calls which require an authenticated user + * @param request LoginWithPSNRequest + * @return LoginResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult LoginWithPSN(final LoginWithPSNRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLoginWithPSNAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** + * Signs the user in using a PlayStation Network authentication code, returning a session identifier that can subsequently + * be used for API calls which require an authenticated user + */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateLoginWithPSNAsync(final LoginWithPSNRequest request) throws Exception { + request.TitleId = PlayFabSettings.TitleId != null ? PlayFabSettings.TitleId : request.TitleId; + if (request.TitleId == null) throw new Exception ("Must be have PlayFabSettings.TitleId set to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/LoginWithPSN"), request, null, null); + 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()); + LoginResult 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; + MultiStepClientLogin(resultData.data.SettingsForUser.NeedsAttribution); + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Signs the user in using a Steam authentication ticket, returning a session identifier that can subsequently be used for * API calls which require an authenticated user @@ -6558,6 +6807,66 @@ private static PlayFabResult privateRedeemCouponAsync(final return pfResult; } + /** + * Uses the supplied OAuth code to refresh the internally cached player PSN auth token + * @param request RefreshPSNAuthTokenRequest + * @return Async Task will return EmptyResponse + */ + @SuppressWarnings("unchecked") + public static FutureTask> RefreshPSNAuthTokenAsync(final RefreshPSNAuthTokenRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRefreshPSNAuthTokenAsync(request); + } + }); + } + + /** + * Uses the supplied OAuth code to refresh the internally cached player PSN auth token + * @param request RefreshPSNAuthTokenRequest + * @return EmptyResponse + */ + @SuppressWarnings("unchecked") + public static PlayFabResult RefreshPSNAuthToken(final RefreshPSNAuthTokenRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRefreshPSNAuthTokenAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Uses the supplied OAuth code to refresh the internally cached player PSN auth token */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateRefreshPSNAuthTokenAsync(final RefreshPSNAuthTokenRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/RefreshPSNAuthToken"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + EmptyResponse result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Registers the iOS device to receive push notifications * @param request RegisterForIOSPushNotificationRequest @@ -8183,6 +8492,66 @@ private static PlayFabResult privateUnlinkOpenIdConnectAsync(fina return pfResult; } + /** + * Unlinks the related PSN account from the user's PlayFab account + * @param request UnlinkPSNAccountRequest + * @return Async Task will return UnlinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> UnlinkPSNAccountAsync(final UnlinkPSNAccountRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateUnlinkPSNAccountAsync(request); + } + }); + } + + /** + * Unlinks the related PSN account from the user's PlayFab account + * @param request UnlinkPSNAccountRequest + * @return UnlinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult UnlinkPSNAccount(final UnlinkPSNAccountRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateUnlinkPSNAccountAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Unlinks the related PSN account from the user's PlayFab account */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateUnlinkPSNAccountAsync(final UnlinkPSNAccountRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/UnlinkPSNAccount"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + UnlinkPSNAccountResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Unlinks the related Steam account from the user's PlayFab account * @param request UnlinkSteamAccountRequest diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientModels.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientModels.java index f40e24a9..b99ca0d4 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientModels.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabClientModels.java @@ -423,6 +423,21 @@ public static class ConsumeItemResult { } + public static class ConsumePSNEntitlementsRequest { + /** Which catalog to match granted entitlements against. If null, defaults to title default catalog */ + public String CatalogVersion; + /** Id of the PSN service label to consume entitlements from */ + public Integer ServiceLabel; + + } + + public static class ConsumePSNEntitlementsResult { + /** Array of items granted to the player as a result of consuming entitlements. */ + @Unordered("ItemInstanceId") + public ArrayList ItemsGranted; + + } + public static class ConsumeXboxEntitlementsRequest { /** Catalog version to use */ public String CatalogVersion; @@ -1810,6 +1825,21 @@ public static class GetPlayFabIDsFromNintendoSwitchDeviceIdsResult { } + public static class GetPlayFabIDsFromPSNAccountIDsRequest { + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** Array of unique PlayStation Network identifiers for which the title needs to get PlayFab identifiers. */ + public ArrayList PSNAccountIDs; + + } + + /** For PlayStation Network identifiers which have not been linked to PlayFab accounts, null will be returned. */ + public static class GetPlayFabIDsFromPSNAccountIDsResult { + /** Mapping of PlayStation Network identifiers to PlayFab identifiers. */ + public ArrayList Data; + + } + public static class GetPlayFabIDsFromSteamIDsRequest { /** Array of unique Steam identifiers (Steam profile IDs) for which the title needs to get PlayFab identifiers. */ public ArrayList SteamStringIDs; @@ -2387,6 +2417,22 @@ public static class LinkOpenIdConnectRequest { } + public static class LinkPSNAccountRequest { + /** Authentication code provided by the PlayStation Network. */ + public String AuthCode; + /** If another user is already linked to the account, unlink the other user and re-link. */ + public Boolean ForceLink; + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** Redirect URI supplied to PSN when requesting an auth code */ + public String RedirectUri; + + } + + public static class LinkPSNAccountResult { + + } + /** * Steam authentication is accomplished with the Steam Session Ticket. More information on the Ticket can be * found in the Steamworks SDK, here: https://partner.steamgames.com/documentation/auth (requires sign-in). NOTE: For Steam @@ -2955,6 +3001,43 @@ public static class LoginWithPlayFabRequest { } + /** + * If this is the first time a user has signed in with the PlayStation Network account and CreateAccount + * is set to true, a new PlayFab account will be created and linked to the PSN account. In this case, no email or username + * will be + * associated with the PlayFab account. Otherwise, if no PlayFab account is linked to the PSN account, an error indicating + * this will + * be returned, so that the title can guide the user through creation of a PlayFab account. + */ + public static class LoginWithPSNRequest { + /** Auth code provided by the PSN OAuth provider. */ + public String AuthCode; + /** Automatically create a PlayFab account if one is not currently linked to this ID. */ + public Boolean CreateAccount; + /** Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only). */ + public String EncryptedRequest; + /** Flags for which pieces of info to return for the user. */ + public GetPlayerCombinedInfoRequestParams InfoRequestParameters; + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** + * Formerly triggered an Entity login with a normal client login. This is now automatic, and always-on. + * @deprecated Do not use + */ + @Deprecated + public Boolean LoginTitlePlayerAccountEntity; + /** Player secret that is used to verify API request signatures (Enterprise Only). */ + public String PlayerSecret; + /** Redirect URI supplied to PSN when requesting an auth code */ + public String RedirectUri; + /** + * Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a + * title has been selected. + */ + public String TitleId; + + } + /** * Steam sign-in is accomplished with the Steam Session Ticket. More information on the Ticket can be * found in the Steamworks SDK, here: https://partner.steamgames.com/documentation/auth (requires sign-in). NOTE: For Steam @@ -3375,6 +3458,14 @@ public static class PlayerStatisticVersion { } + public static class PSNAccountPlayFabIdPair { + /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the PlayStation Network identifier. */ + public String PlayFabId; + /** Unique PlayStation Network identifier for a user. */ + public String PSNAccountId; + + } + /** * Please note that the processing time for inventory grants and purchases increases fractionally * the more items are in the inventory, and the more items are in the grant/purchase operation (with each item in a bundle @@ -3438,6 +3529,16 @@ public static class RedeemCouponResult { } + public static class RefreshPSNAuthTokenRequest { + /** Auth code returned by PSN OAuth system. */ + public String AuthCode; + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** Redirect URI supplied to PSN when requesting an auth code */ + public String RedirectUri; + + } + public static enum Region { USCentral, USEast, @@ -4115,6 +4216,14 @@ public static class UnlinkNintendoSwitchDeviceIdResult { } + public static class UnlinkPSNAccountRequest { + + } + + public static class UnlinkPSNAccountResult { + + } + public static class UnlinkSteamAccountRequest { } diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabErrors.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabErrors.java index d1d6ed14..d0507606 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabErrors.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabErrors.java @@ -405,6 +405,23 @@ public static enum PlayFabErrorCode { StatisticTagRequired(1401), StatisticTagInvalid(1402), DataIntegrityError(1403), + VirtualCurrencyCannotBeSetToOlderVersion(1404), + VirtualCurrencyMustBeWithinIntegerRange(1405), + EmailTemplateInvalidSyntax(1406), + EmailTemplateMissingCallback(1407), + PushNotificationTemplateInvalidPayload(1408), + InvalidLocalizedPushNotificationLanguage(1409), + MissingLocalizedPushNotificationMessage(1410), + PushNotificationTemplateMissingPlatformPayload(1411), + PushNotificationTemplatePayloadContainsInvalidJson(1412), + PushNotificationTemplateContainsInvalidIosPayload(1413), + PushNotificationTemplateContainsInvalidAndroidPayload(1414), + PushNotificationTemplateIosPayloadMissingNotificationBody(1415), + PushNotificationTemplateAndroidPayloadMissingNotificationBody(1416), + PushNotificationTemplateNotFound(1417), + PushNotificationTemplateMissingDefaultVersion(1418), + PushNotificationTemplateInvalidSyntax(1419), + PushNotificationTemplateNoCustomPayloadForV1(1420), MatchmakingEntityInvalid(2001), MatchmakingPlayerAttributesInvalid(2002), MatchmakingCreateRequestMissing(2003), diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java index 20ca7df0..b58cba4f 100644 --- a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java +++ b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java @@ -57,6 +57,15 @@ public static enum AzureVmSize { Standard_A2_v2, Standard_A4_v2, Standard_A8_v2, + Standard_F1, + Standard_F2, + Standard_F4, + Standard_F8, + Standard_F16, + Standard_F2s_v2, + Standard_F4s_v2, + Standard_F8s_v2, + Standard_F16s_v2, Standard_A1, Standard_A2, Standard_A3, @@ -70,7 +79,10 @@ public static class BuildRegion { public AzureRegion Region; /** The number of standby multiplayer servers for the region. */ public Integer StandbyServers; - /** The status of multiplayer servers in the build region. */ + /** + * The status of multiplayer servers in the build region. Valid values are - Unknown, Initialized, Deploying, Deployed, + * Unhealthy. + */ public String Status; } @@ -154,7 +166,10 @@ public static class CreateBuildWithCustomContainerRequest { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** Metadata to tag the build. */ + /** + * Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through + * Game Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to host on a single VM. */ public Integer MultiplayerServerCountPerVm; @@ -207,7 +222,10 @@ public static class CreateBuildWithManagedContainerRequest { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** Metadata to tag the build. */ + /** + * Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through + * Game Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to host on a single VM. */ public Integer MultiplayerServerCountPerVm; @@ -394,7 +412,7 @@ public static class GetBuildResponse { public String BuildId; /** The build name. */ public String BuildName; - /** The current build status. */ + /** The current build status. Valid values are - Deploying, Deployed, DeletingRegion, Unhealthy. */ public String BuildStatus; /** The flavor of container of he build. */ public ContainerFlavor ContainerFlavor; @@ -411,7 +429,10 @@ public static class GetBuildResponse { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** The metadata of the build. */ + /** + * Metadata of the build. The keys are case insensitive. The build metadata is made available to the server through Game + * Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to hosted on a single VM of the build. */ public Integer MultiplayerServerCountPerVm; @@ -714,16 +735,18 @@ public static class RequestMultiplayerServerRequest { /** The guid string build ID of the multiplayer server to request. */ public String BuildId; /** - * Initial list of players (potentially matchmade) allowed to connect to the game. The game server can use this list to - * validate players connecting to it. + * Initial list of players (potentially matchmade) allowed to connect to the game. This list is passed to the game server + * when requested (via GSDK) and can be used to validate players connecting to it. */ public ArrayList InitialPlayers; - /** The preferred regions to request a multiplayer server from. */ + /** + * The preferred regions to request a multiplayer server from. The Multiplayer Service will iterate through the regions in + * the specified order and allocate a server from the first one that has servers available. + */ public ArrayList PreferredRegions; /** - * Data encoded as a string that is passed to the game server when requested. This can be used to share a cryptographic - * secret for servers to authenticate clients or to communicate information such as game mode or map through the request - * flow. + * Data encoded as a string that is passed to the game server when requested. This can be used to to communicate + * information such as game mode or map through the request flow. */ public String SessionCookie; /** A guid string session ID created track the multiplayer server session over its life. */ diff --git a/PlayFabClientSDK/src/main/java/com/playfab/PlayFabSettings.java b/PlayFabClientSDK/src/main/java/com/playfab/PlayFabSettings.java index 7e5ddbf3..73e1e14c 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.81.181204"; - public static String BuildIdentifier = "jbuild_javasdk__sdk-slave2016-2_2"; - public static String SdkVersionString = "JavaSDK-0.81.181204"; + public static String SdkVersion = "0.82.181218"; + public static String BuildIdentifier = "jbuild_javasdk__sdk-slave2016-1_0"; + public static String SdkVersionString = "JavaSDK-0.82.181218"; public static Map RequestGetParams; static { diff --git a/PlayFabSDK/pom.xml b/PlayFabSDK/pom.xml index a42127d7..c91e2049 100644 --- a/PlayFabSDK/pom.xml +++ b/PlayFabSDK/pom.xml @@ -14,7 +14,7 @@ com.playfab combo-sdk - 0.81.181204 + 0.82.181218 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. http://api.playfab.com/ diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabAdminModels.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabAdminModels.java index 7942570f..a491e709 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabAdminModels.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabAdminModels.java @@ -1615,6 +1615,23 @@ public static enum GenericErrorCodes { StatisticTagRequired, StatisticTagInvalid, DataIntegrityError, + VirtualCurrencyCannotBeSetToOlderVersion, + VirtualCurrencyMustBeWithinIntegerRange, + EmailTemplateInvalidSyntax, + EmailTemplateMissingCallback, + PushNotificationTemplateInvalidPayload, + InvalidLocalizedPushNotificationLanguage, + MissingLocalizedPushNotificationMessage, + PushNotificationTemplateMissingPlatformPayload, + PushNotificationTemplatePayloadContainsInvalidJson, + PushNotificationTemplateContainsInvalidIosPayload, + PushNotificationTemplateContainsInvalidAndroidPayload, + PushNotificationTemplateIosPayloadMissingNotificationBody, + PushNotificationTemplateAndroidPayloadMissingNotificationBody, + PushNotificationTemplateNotFound, + PushNotificationTemplateMissingDefaultVersion, + PushNotificationTemplateInvalidSyntax, + PushNotificationTemplateNoCustomPayloadForV1, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingCreateRequestMissing, diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabClientAPI.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabClientAPI.java index 583b246c..57f77bfd 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabClientAPI.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabClientAPI.java @@ -785,6 +785,66 @@ private static PlayFabResult privateConsumeItemAsync(final Co return pfResult; } + /** + * Checks for any new consumable entitlements. If any are found, they are consumed and added as PlayFab items + * @param request ConsumePSNEntitlementsRequest + * @return Async Task will return ConsumePSNEntitlementsResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> ConsumePSNEntitlementsAsync(final ConsumePSNEntitlementsRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateConsumePSNEntitlementsAsync(request); + } + }); + } + + /** + * Checks for any new consumable entitlements. If any are found, they are consumed and added as PlayFab items + * @param request ConsumePSNEntitlementsRequest + * @return ConsumePSNEntitlementsResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult ConsumePSNEntitlements(final ConsumePSNEntitlementsRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateConsumePSNEntitlementsAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Checks for any new consumable entitlements. If any are found, they are consumed and added as PlayFab items */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateConsumePSNEntitlementsAsync(final ConsumePSNEntitlementsRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/ConsumePSNEntitlements"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + ConsumePSNEntitlementsResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Grants the player's current entitlements from Xbox Live, consuming all availble items in Xbox and granting them to the * player's PlayFab inventory. This call is idempotent and will not grant previously granted items to the player. @@ -3107,6 +3167,66 @@ private static PlayFabResult pri return pfResult; } + /** + * Retrieves the unique PlayFab identifiers for the given set of PlayStation Network identifiers. + * @param request GetPlayFabIDsFromPSNAccountIDsRequest + * @return Async Task will return GetPlayFabIDsFromPSNAccountIDsResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> GetPlayFabIDsFromPSNAccountIDsAsync(final GetPlayFabIDsFromPSNAccountIDsRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateGetPlayFabIDsFromPSNAccountIDsAsync(request); + } + }); + } + + /** + * Retrieves the unique PlayFab identifiers for the given set of PlayStation Network identifiers. + * @param request GetPlayFabIDsFromPSNAccountIDsRequest + * @return GetPlayFabIDsFromPSNAccountIDsResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult GetPlayFabIDsFromPSNAccountIDs(final GetPlayFabIDsFromPSNAccountIDsRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateGetPlayFabIDsFromPSNAccountIDsAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Retrieves the unique PlayFab identifiers for the given set of PlayStation Network identifiers. */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateGetPlayFabIDsFromPSNAccountIDsAsync(final GetPlayFabIDsFromPSNAccountIDsRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/GetPlayFabIDsFromPSNAccountIDs"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + GetPlayFabIDsFromPSNAccountIDsResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are the profile * IDs for the user accounts, available as SteamId in the Steamworks Community API calls. @@ -4884,6 +5004,66 @@ private static PlayFabResult privateLinkOpenIdConnectAsync(final Li return pfResult; } + /** + * Links the PlayStation Network account associated with the provided access code to the user's PlayFab account + * @param request LinkPSNAccountRequest + * @return Async Task will return LinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> LinkPSNAccountAsync(final LinkPSNAccountRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLinkPSNAccountAsync(request); + } + }); + } + + /** + * Links the PlayStation Network account associated with the provided access code to the user's PlayFab account + * @param request LinkPSNAccountRequest + * @return LinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult LinkPSNAccount(final LinkPSNAccountRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLinkPSNAccountAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Links the PlayStation Network account associated with the provided access code to the user's PlayFab account */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateLinkPSNAccountAsync(final LinkPSNAccountRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/LinkPSNAccount"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + LinkPSNAccountResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Links the Steam account associated with the provided Steam authentication ticket to the user's PlayFab account * @param request LinkSteamAccountRequest @@ -5954,6 +6134,75 @@ private static PlayFabResult privateLoginWithPlayFabAsync(final Log return pfResult; } + /** + * Signs the user in using a PlayStation Network authentication code, returning a session identifier that can subsequently + * be used for API calls which require an authenticated user + * @param request LoginWithPSNRequest + * @return Async Task will return LoginResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> LoginWithPSNAsync(final LoginWithPSNRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLoginWithPSNAsync(request); + } + }); + } + + /** + * Signs the user in using a PlayStation Network authentication code, returning a session identifier that can subsequently + * be used for API calls which require an authenticated user + * @param request LoginWithPSNRequest + * @return LoginResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult LoginWithPSN(final LoginWithPSNRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateLoginWithPSNAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** + * Signs the user in using a PlayStation Network authentication code, returning a session identifier that can subsequently + * be used for API calls which require an authenticated user + */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateLoginWithPSNAsync(final LoginWithPSNRequest request) throws Exception { + request.TitleId = PlayFabSettings.TitleId != null ? PlayFabSettings.TitleId : request.TitleId; + if (request.TitleId == null) throw new Exception ("Must be have PlayFabSettings.TitleId set to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/LoginWithPSN"), request, null, null); + 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()); + LoginResult 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; + MultiStepClientLogin(resultData.data.SettingsForUser.NeedsAttribution); + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Signs the user in using a Steam authentication ticket, returning a session identifier that can subsequently be used for * API calls which require an authenticated user @@ -6558,6 +6807,66 @@ private static PlayFabResult privateRedeemCouponAsync(final return pfResult; } + /** + * Uses the supplied OAuth code to refresh the internally cached player PSN auth token + * @param request RefreshPSNAuthTokenRequest + * @return Async Task will return EmptyResponse + */ + @SuppressWarnings("unchecked") + public static FutureTask> RefreshPSNAuthTokenAsync(final RefreshPSNAuthTokenRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRefreshPSNAuthTokenAsync(request); + } + }); + } + + /** + * Uses the supplied OAuth code to refresh the internally cached player PSN auth token + * @param request RefreshPSNAuthTokenRequest + * @return EmptyResponse + */ + @SuppressWarnings("unchecked") + public static PlayFabResult RefreshPSNAuthToken(final RefreshPSNAuthTokenRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateRefreshPSNAuthTokenAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Uses the supplied OAuth code to refresh the internally cached player PSN auth token */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateRefreshPSNAuthTokenAsync(final RefreshPSNAuthTokenRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/RefreshPSNAuthToken"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + EmptyResponse result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Registers the iOS device to receive push notifications * @param request RegisterForIOSPushNotificationRequest @@ -8183,6 +8492,66 @@ private static PlayFabResult privateUnlinkOpenIdConnectAsync(fina return pfResult; } + /** + * Unlinks the related PSN account from the user's PlayFab account + * @param request UnlinkPSNAccountRequest + * @return Async Task will return UnlinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static FutureTask> UnlinkPSNAccountAsync(final UnlinkPSNAccountRequest request) { + return new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateUnlinkPSNAccountAsync(request); + } + }); + } + + /** + * Unlinks the related PSN account from the user's PlayFab account + * @param request UnlinkPSNAccountRequest + * @return UnlinkPSNAccountResult + */ + @SuppressWarnings("unchecked") + public static PlayFabResult UnlinkPSNAccount(final UnlinkPSNAccountRequest request) { + FutureTask> task = new FutureTask(new Callable>() { + public PlayFabResult call() throws Exception { + return privateUnlinkPSNAccountAsync(request); + } + }); + try { + task.run(); + return task.get(); + } catch(Exception e) { + return null; + } + } + + /** Unlinks the related PSN account from the user's PlayFab account */ + @SuppressWarnings("unchecked") + private static PlayFabResult privateUnlinkPSNAccountAsync(final UnlinkPSNAccountRequest request) throws Exception { + if (PlayFabSettings.ClientSessionTicket == null) throw new Exception ("Must be logged in to call this method"); + + FutureTask task = PlayFabHTTP.doPost(PlayFabSettings.GetURL("/Client/UnlinkPSNAccount"), request, "X-Authorization", PlayFabSettings.ClientSessionTicket); + 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()); + UnlinkPSNAccountResult result = resultData.data; + + PlayFabResult pfResult = new PlayFabResult(); + pfResult.Result = result; + return pfResult; + } + /** * Unlinks the related Steam account from the user's PlayFab account * @param request UnlinkSteamAccountRequest diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabClientModels.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabClientModels.java index f40e24a9..b99ca0d4 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabClientModels.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabClientModels.java @@ -423,6 +423,21 @@ public static class ConsumeItemResult { } + public static class ConsumePSNEntitlementsRequest { + /** Which catalog to match granted entitlements against. If null, defaults to title default catalog */ + public String CatalogVersion; + /** Id of the PSN service label to consume entitlements from */ + public Integer ServiceLabel; + + } + + public static class ConsumePSNEntitlementsResult { + /** Array of items granted to the player as a result of consuming entitlements. */ + @Unordered("ItemInstanceId") + public ArrayList ItemsGranted; + + } + public static class ConsumeXboxEntitlementsRequest { /** Catalog version to use */ public String CatalogVersion; @@ -1810,6 +1825,21 @@ public static class GetPlayFabIDsFromNintendoSwitchDeviceIdsResult { } + public static class GetPlayFabIDsFromPSNAccountIDsRequest { + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** Array of unique PlayStation Network identifiers for which the title needs to get PlayFab identifiers. */ + public ArrayList PSNAccountIDs; + + } + + /** For PlayStation Network identifiers which have not been linked to PlayFab accounts, null will be returned. */ + public static class GetPlayFabIDsFromPSNAccountIDsResult { + /** Mapping of PlayStation Network identifiers to PlayFab identifiers. */ + public ArrayList Data; + + } + public static class GetPlayFabIDsFromSteamIDsRequest { /** Array of unique Steam identifiers (Steam profile IDs) for which the title needs to get PlayFab identifiers. */ public ArrayList SteamStringIDs; @@ -2387,6 +2417,22 @@ public static class LinkOpenIdConnectRequest { } + public static class LinkPSNAccountRequest { + /** Authentication code provided by the PlayStation Network. */ + public String AuthCode; + /** If another user is already linked to the account, unlink the other user and re-link. */ + public Boolean ForceLink; + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** Redirect URI supplied to PSN when requesting an auth code */ + public String RedirectUri; + + } + + public static class LinkPSNAccountResult { + + } + /** * Steam authentication is accomplished with the Steam Session Ticket. More information on the Ticket can be * found in the Steamworks SDK, here: https://partner.steamgames.com/documentation/auth (requires sign-in). NOTE: For Steam @@ -2955,6 +3001,43 @@ public static class LoginWithPlayFabRequest { } + /** + * If this is the first time a user has signed in with the PlayStation Network account and CreateAccount + * is set to true, a new PlayFab account will be created and linked to the PSN account. In this case, no email or username + * will be + * associated with the PlayFab account. Otherwise, if no PlayFab account is linked to the PSN account, an error indicating + * this will + * be returned, so that the title can guide the user through creation of a PlayFab account. + */ + public static class LoginWithPSNRequest { + /** Auth code provided by the PSN OAuth provider. */ + public String AuthCode; + /** Automatically create a PlayFab account if one is not currently linked to this ID. */ + public Boolean CreateAccount; + /** Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only). */ + public String EncryptedRequest; + /** Flags for which pieces of info to return for the user. */ + public GetPlayerCombinedInfoRequestParams InfoRequestParameters; + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** + * Formerly triggered an Entity login with a normal client login. This is now automatic, and always-on. + * @deprecated Do not use + */ + @Deprecated + public Boolean LoginTitlePlayerAccountEntity; + /** Player secret that is used to verify API request signatures (Enterprise Only). */ + public String PlayerSecret; + /** Redirect URI supplied to PSN when requesting an auth code */ + public String RedirectUri; + /** + * Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a + * title has been selected. + */ + public String TitleId; + + } + /** * Steam sign-in is accomplished with the Steam Session Ticket. More information on the Ticket can be * found in the Steamworks SDK, here: https://partner.steamgames.com/documentation/auth (requires sign-in). NOTE: For Steam @@ -3375,6 +3458,14 @@ public static class PlayerStatisticVersion { } + public static class PSNAccountPlayFabIdPair { + /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the PlayStation Network identifier. */ + public String PlayFabId; + /** Unique PlayStation Network identifier for a user. */ + public String PSNAccountId; + + } + /** * Please note that the processing time for inventory grants and purchases increases fractionally * the more items are in the inventory, and the more items are in the grant/purchase operation (with each item in a bundle @@ -3438,6 +3529,16 @@ public static class RedeemCouponResult { } + public static class RefreshPSNAuthTokenRequest { + /** Auth code returned by PSN OAuth system. */ + public String AuthCode; + /** Id of the PSN issuer environment. If null, defaults to 256 (production) */ + public Integer IssuerId; + /** Redirect URI supplied to PSN when requesting an auth code */ + public String RedirectUri; + + } + public static enum Region { USCentral, USEast, @@ -4115,6 +4216,14 @@ public static class UnlinkNintendoSwitchDeviceIdResult { } + public static class UnlinkPSNAccountRequest { + + } + + public static class UnlinkPSNAccountResult { + + } + public static class UnlinkSteamAccountRequest { } diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabErrors.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabErrors.java index d1d6ed14..d0507606 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabErrors.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabErrors.java @@ -405,6 +405,23 @@ public static enum PlayFabErrorCode { StatisticTagRequired(1401), StatisticTagInvalid(1402), DataIntegrityError(1403), + VirtualCurrencyCannotBeSetToOlderVersion(1404), + VirtualCurrencyMustBeWithinIntegerRange(1405), + EmailTemplateInvalidSyntax(1406), + EmailTemplateMissingCallback(1407), + PushNotificationTemplateInvalidPayload(1408), + InvalidLocalizedPushNotificationLanguage(1409), + MissingLocalizedPushNotificationMessage(1410), + PushNotificationTemplateMissingPlatformPayload(1411), + PushNotificationTemplatePayloadContainsInvalidJson(1412), + PushNotificationTemplateContainsInvalidIosPayload(1413), + PushNotificationTemplateContainsInvalidAndroidPayload(1414), + PushNotificationTemplateIosPayloadMissingNotificationBody(1415), + PushNotificationTemplateAndroidPayloadMissingNotificationBody(1416), + PushNotificationTemplateNotFound(1417), + PushNotificationTemplateMissingDefaultVersion(1418), + PushNotificationTemplateInvalidSyntax(1419), + PushNotificationTemplateNoCustomPayloadForV1(1420), MatchmakingEntityInvalid(2001), MatchmakingPlayerAttributesInvalid(2002), MatchmakingCreateRequestMissing(2003), diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java index 20ca7df0..b58cba4f 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java @@ -57,6 +57,15 @@ public static enum AzureVmSize { Standard_A2_v2, Standard_A4_v2, Standard_A8_v2, + Standard_F1, + Standard_F2, + Standard_F4, + Standard_F8, + Standard_F16, + Standard_F2s_v2, + Standard_F4s_v2, + Standard_F8s_v2, + Standard_F16s_v2, Standard_A1, Standard_A2, Standard_A3, @@ -70,7 +79,10 @@ public static class BuildRegion { public AzureRegion Region; /** The number of standby multiplayer servers for the region. */ public Integer StandbyServers; - /** The status of multiplayer servers in the build region. */ + /** + * The status of multiplayer servers in the build region. Valid values are - Unknown, Initialized, Deploying, Deployed, + * Unhealthy. + */ public String Status; } @@ -154,7 +166,10 @@ public static class CreateBuildWithCustomContainerRequest { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** Metadata to tag the build. */ + /** + * Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through + * Game Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to host on a single VM. */ public Integer MultiplayerServerCountPerVm; @@ -207,7 +222,10 @@ public static class CreateBuildWithManagedContainerRequest { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** Metadata to tag the build. */ + /** + * Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through + * Game Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to host on a single VM. */ public Integer MultiplayerServerCountPerVm; @@ -394,7 +412,7 @@ public static class GetBuildResponse { public String BuildId; /** The build name. */ public String BuildName; - /** The current build status. */ + /** The current build status. Valid values are - Deploying, Deployed, DeletingRegion, Unhealthy. */ public String BuildStatus; /** The flavor of container of he build. */ public ContainerFlavor ContainerFlavor; @@ -411,7 +429,10 @@ public static class GetBuildResponse { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** The metadata of the build. */ + /** + * Metadata of the build. The keys are case insensitive. The build metadata is made available to the server through Game + * Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to hosted on a single VM of the build. */ public Integer MultiplayerServerCountPerVm; @@ -714,16 +735,18 @@ public static class RequestMultiplayerServerRequest { /** The guid string build ID of the multiplayer server to request. */ public String BuildId; /** - * Initial list of players (potentially matchmade) allowed to connect to the game. The game server can use this list to - * validate players connecting to it. + * Initial list of players (potentially matchmade) allowed to connect to the game. This list is passed to the game server + * when requested (via GSDK) and can be used to validate players connecting to it. */ public ArrayList InitialPlayers; - /** The preferred regions to request a multiplayer server from. */ + /** + * The preferred regions to request a multiplayer server from. The Multiplayer Service will iterate through the regions in + * the specified order and allocate a server from the first one that has servers available. + */ public ArrayList PreferredRegions; /** - * Data encoded as a string that is passed to the game server when requested. This can be used to share a cryptographic - * secret for servers to authenticate clients or to communicate information such as game mode or map through the request - * flow. + * Data encoded as a string that is passed to the game server when requested. This can be used to to communicate + * information such as game mode or map through the request flow. */ public String SessionCookie; /** A guid string session ID created track the multiplayer server session over its life. */ diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabServerModels.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabServerModels.java index 5984d5d1..7923828b 100644 --- a/PlayFabSDK/src/main/java/com/playfab/PlayFabServerModels.java +++ b/PlayFabSDK/src/main/java/com/playfab/PlayFabServerModels.java @@ -1461,6 +1461,23 @@ public static enum GenericErrorCodes { StatisticTagRequired, StatisticTagInvalid, DataIntegrityError, + VirtualCurrencyCannotBeSetToOlderVersion, + VirtualCurrencyMustBeWithinIntegerRange, + EmailTemplateInvalidSyntax, + EmailTemplateMissingCallback, + PushNotificationTemplateInvalidPayload, + InvalidLocalizedPushNotificationLanguage, + MissingLocalizedPushNotificationMessage, + PushNotificationTemplateMissingPlatformPayload, + PushNotificationTemplatePayloadContainsInvalidJson, + PushNotificationTemplateContainsInvalidIosPayload, + PushNotificationTemplateContainsInvalidAndroidPayload, + PushNotificationTemplateIosPayloadMissingNotificationBody, + PushNotificationTemplateAndroidPayloadMissingNotificationBody, + PushNotificationTemplateNotFound, + PushNotificationTemplateMissingDefaultVersion, + PushNotificationTemplateInvalidSyntax, + PushNotificationTemplateNoCustomPayloadForV1, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingCreateRequestMissing, diff --git a/PlayFabSDK/src/main/java/com/playfab/PlayFabSettings.java b/PlayFabSDK/src/main/java/com/playfab/PlayFabSettings.java index 7e5ddbf3..73e1e14c 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.81.181204"; - public static String BuildIdentifier = "jbuild_javasdk__sdk-slave2016-2_2"; - public static String SdkVersionString = "JavaSDK-0.81.181204"; + public static String SdkVersion = "0.82.181218"; + public static String BuildIdentifier = "jbuild_javasdk__sdk-slave2016-1_0"; + public static String SdkVersionString = "JavaSDK-0.82.181218"; public static Map RequestGetParams; static { diff --git a/PlayFabServerSDK/pom.xml b/PlayFabServerSDK/pom.xml index cfd1bbd9..65402f51 100644 --- a/PlayFabServerSDK/pom.xml +++ b/PlayFabServerSDK/pom.xml @@ -14,7 +14,7 @@ com.playfab server-sdk - 0.81.181204 + 0.82.181218 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. http://api.playfab.com/ diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAdminModels.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAdminModels.java index 7942570f..a491e709 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAdminModels.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabAdminModels.java @@ -1615,6 +1615,23 @@ public static enum GenericErrorCodes { StatisticTagRequired, StatisticTagInvalid, DataIntegrityError, + VirtualCurrencyCannotBeSetToOlderVersion, + VirtualCurrencyMustBeWithinIntegerRange, + EmailTemplateInvalidSyntax, + EmailTemplateMissingCallback, + PushNotificationTemplateInvalidPayload, + InvalidLocalizedPushNotificationLanguage, + MissingLocalizedPushNotificationMessage, + PushNotificationTemplateMissingPlatformPayload, + PushNotificationTemplatePayloadContainsInvalidJson, + PushNotificationTemplateContainsInvalidIosPayload, + PushNotificationTemplateContainsInvalidAndroidPayload, + PushNotificationTemplateIosPayloadMissingNotificationBody, + PushNotificationTemplateAndroidPayloadMissingNotificationBody, + PushNotificationTemplateNotFound, + PushNotificationTemplateMissingDefaultVersion, + PushNotificationTemplateInvalidSyntax, + PushNotificationTemplateNoCustomPayloadForV1, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingCreateRequestMissing, diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabErrors.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabErrors.java index d1d6ed14..d0507606 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabErrors.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabErrors.java @@ -405,6 +405,23 @@ public static enum PlayFabErrorCode { StatisticTagRequired(1401), StatisticTagInvalid(1402), DataIntegrityError(1403), + VirtualCurrencyCannotBeSetToOlderVersion(1404), + VirtualCurrencyMustBeWithinIntegerRange(1405), + EmailTemplateInvalidSyntax(1406), + EmailTemplateMissingCallback(1407), + PushNotificationTemplateInvalidPayload(1408), + InvalidLocalizedPushNotificationLanguage(1409), + MissingLocalizedPushNotificationMessage(1410), + PushNotificationTemplateMissingPlatformPayload(1411), + PushNotificationTemplatePayloadContainsInvalidJson(1412), + PushNotificationTemplateContainsInvalidIosPayload(1413), + PushNotificationTemplateContainsInvalidAndroidPayload(1414), + PushNotificationTemplateIosPayloadMissingNotificationBody(1415), + PushNotificationTemplateAndroidPayloadMissingNotificationBody(1416), + PushNotificationTemplateNotFound(1417), + PushNotificationTemplateMissingDefaultVersion(1418), + PushNotificationTemplateInvalidSyntax(1419), + PushNotificationTemplateNoCustomPayloadForV1(1420), MatchmakingEntityInvalid(2001), MatchmakingPlayerAttributesInvalid(2002), MatchmakingCreateRequestMissing(2003), diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java index 20ca7df0..b58cba4f 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabMultiplayerModels.java @@ -57,6 +57,15 @@ public static enum AzureVmSize { Standard_A2_v2, Standard_A4_v2, Standard_A8_v2, + Standard_F1, + Standard_F2, + Standard_F4, + Standard_F8, + Standard_F16, + Standard_F2s_v2, + Standard_F4s_v2, + Standard_F8s_v2, + Standard_F16s_v2, Standard_A1, Standard_A2, Standard_A3, @@ -70,7 +79,10 @@ public static class BuildRegion { public AzureRegion Region; /** The number of standby multiplayer servers for the region. */ public Integer StandbyServers; - /** The status of multiplayer servers in the build region. */ + /** + * The status of multiplayer servers in the build region. Valid values are - Unknown, Initialized, Deploying, Deployed, + * Unhealthy. + */ public String Status; } @@ -154,7 +166,10 @@ public static class CreateBuildWithCustomContainerRequest { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** Metadata to tag the build. */ + /** + * Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through + * Game Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to host on a single VM. */ public Integer MultiplayerServerCountPerVm; @@ -207,7 +222,10 @@ public static class CreateBuildWithManagedContainerRequest { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** Metadata to tag the build. */ + /** + * Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through + * Game Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to host on a single VM. */ public Integer MultiplayerServerCountPerVm; @@ -394,7 +412,7 @@ public static class GetBuildResponse { public String BuildId; /** The build name. */ public String BuildName; - /** The current build status. */ + /** The current build status. Valid values are - Deploying, Deployed, DeletingRegion, Unhealthy. */ public String BuildStatus; /** The flavor of container of he build. */ public ContainerFlavor ContainerFlavor; @@ -411,7 +429,10 @@ public static class GetBuildResponse { public ArrayList GameAssetReferences; /** The game certificates for the build. */ public ArrayList GameCertificateReferences; - /** The metadata of the build. */ + /** + * Metadata of the build. The keys are case insensitive. The build metadata is made available to the server through Game + * Server SDK (GSDK). + */ public Map Metadata; /** The number of multiplayer servers to hosted on a single VM of the build. */ public Integer MultiplayerServerCountPerVm; @@ -714,16 +735,18 @@ public static class RequestMultiplayerServerRequest { /** The guid string build ID of the multiplayer server to request. */ public String BuildId; /** - * Initial list of players (potentially matchmade) allowed to connect to the game. The game server can use this list to - * validate players connecting to it. + * Initial list of players (potentially matchmade) allowed to connect to the game. This list is passed to the game server + * when requested (via GSDK) and can be used to validate players connecting to it. */ public ArrayList InitialPlayers; - /** The preferred regions to request a multiplayer server from. */ + /** + * The preferred regions to request a multiplayer server from. The Multiplayer Service will iterate through the regions in + * the specified order and allocate a server from the first one that has servers available. + */ public ArrayList PreferredRegions; /** - * Data encoded as a string that is passed to the game server when requested. This can be used to share a cryptographic - * secret for servers to authenticate clients or to communicate information such as game mode or map through the request - * flow. + * Data encoded as a string that is passed to the game server when requested. This can be used to to communicate + * information such as game mode or map through the request flow. */ public String SessionCookie; /** A guid string session ID created track the multiplayer server session over its life. */ diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabServerModels.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabServerModels.java index 5984d5d1..7923828b 100644 --- a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabServerModels.java +++ b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabServerModels.java @@ -1461,6 +1461,23 @@ public static enum GenericErrorCodes { StatisticTagRequired, StatisticTagInvalid, DataIntegrityError, + VirtualCurrencyCannotBeSetToOlderVersion, + VirtualCurrencyMustBeWithinIntegerRange, + EmailTemplateInvalidSyntax, + EmailTemplateMissingCallback, + PushNotificationTemplateInvalidPayload, + InvalidLocalizedPushNotificationLanguage, + MissingLocalizedPushNotificationMessage, + PushNotificationTemplateMissingPlatformPayload, + PushNotificationTemplatePayloadContainsInvalidJson, + PushNotificationTemplateContainsInvalidIosPayload, + PushNotificationTemplateContainsInvalidAndroidPayload, + PushNotificationTemplateIosPayloadMissingNotificationBody, + PushNotificationTemplateAndroidPayloadMissingNotificationBody, + PushNotificationTemplateNotFound, + PushNotificationTemplateMissingDefaultVersion, + PushNotificationTemplateInvalidSyntax, + PushNotificationTemplateNoCustomPayloadForV1, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingCreateRequestMissing, diff --git a/PlayFabServerSDK/src/main/java/com/playfab/PlayFabSettings.java b/PlayFabServerSDK/src/main/java/com/playfab/PlayFabSettings.java index fc535e64..36e765db 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.81.181204"; - public static String BuildIdentifier = "jbuild_javasdk__sdk-slave2016-2_2"; - public static String SdkVersionString = "JavaSDK-0.81.181204"; + public static String SdkVersion = "0.82.181218"; + public static String BuildIdentifier = "jbuild_javasdk__sdk-slave2016-1_0"; + public static String SdkVersionString = "JavaSDK-0.82.181218"; public static Map RequestGetParams; static { diff --git a/builds/client-sdk-0.81.181204-javadoc.jar b/builds/client-sdk-0.81.181204-javadoc.jar deleted file mode 100644 index cec09af9..00000000 Binary files a/builds/client-sdk-0.81.181204-javadoc.jar and /dev/null differ diff --git a/builds/client-sdk-0.81.181204.jar b/builds/client-sdk-0.81.181204.jar deleted file mode 100644 index c26d9b76..00000000 Binary files a/builds/client-sdk-0.81.181204.jar and /dev/null differ diff --git a/builds/client-sdk-0.82.181218-javadoc.jar b/builds/client-sdk-0.82.181218-javadoc.jar new file mode 100644 index 00000000..b25221b3 Binary files /dev/null and b/builds/client-sdk-0.82.181218-javadoc.jar differ diff --git a/builds/client-sdk-0.82.181218.jar b/builds/client-sdk-0.82.181218.jar new file mode 100644 index 00000000..fe6332a4 Binary files /dev/null and b/builds/client-sdk-0.82.181218.jar differ diff --git a/builds/combo-sdk-0.81.181204-javadoc.jar b/builds/combo-sdk-0.81.181204-javadoc.jar deleted file mode 100644 index 24c9759b..00000000 Binary files a/builds/combo-sdk-0.81.181204-javadoc.jar and /dev/null differ diff --git a/builds/combo-sdk-0.82.181218-javadoc.jar b/builds/combo-sdk-0.82.181218-javadoc.jar new file mode 100644 index 00000000..0f813a2d Binary files /dev/null and b/builds/combo-sdk-0.82.181218-javadoc.jar differ diff --git a/builds/combo-sdk-0.81.181204.jar b/builds/combo-sdk-0.82.181218.jar similarity index 54% rename from builds/combo-sdk-0.81.181204.jar rename to builds/combo-sdk-0.82.181218.jar index f2c76060..1d0422a9 100644 Binary files a/builds/combo-sdk-0.81.181204.jar and b/builds/combo-sdk-0.82.181218.jar differ diff --git a/builds/server-sdk-0.81.181204-javadoc.jar b/builds/server-sdk-0.81.181204-javadoc.jar deleted file mode 100644 index a96eeb20..00000000 Binary files a/builds/server-sdk-0.81.181204-javadoc.jar and /dev/null differ diff --git a/builds/server-sdk-0.82.181218-javadoc.jar b/builds/server-sdk-0.82.181218-javadoc.jar new file mode 100644 index 00000000..71393998 Binary files /dev/null and b/builds/server-sdk-0.82.181218-javadoc.jar differ diff --git a/builds/server-sdk-0.81.181204.jar b/builds/server-sdk-0.82.181218.jar similarity index 67% rename from builds/server-sdk-0.81.181204.jar rename to builds/server-sdk-0.82.181218.jar index 548abe07..74696c13 100644 Binary files a/builds/server-sdk-0.81.181204.jar and b/builds/server-sdk-0.82.181218.jar differ