All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.playfab.PlayFabClientModels Maven / Gradle / Ivy

Go to download

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.

There is a newer version: 0.118.200901
Show newest version
package com.playfab;

import java.util.*;
import com.playfab.PlayFabUtil.*;

public class PlayFabClientModels {

    public static class AcceptTradeRequest {
        /**
         * Items from the accepting player's inventory in exchange for the offered items in the trade. In the case of a gift, this
         * will be null.
         */
        public ArrayList AcceptedInventoryInstanceIds;
        /** Player who opened the trade. */
        public String OfferingPlayerId;
        /** Trade identifier. */
        public String TradeId;
        
    }

    public static class AcceptTradeResponse {
        /** Details about trade which was just accepted. */
        public TradeInfo Trade;
        
    }

    public static class AdCampaignAttributionModel {
        /** UTC time stamp of attribution */
        public Date AttributedAt;
        /** Attribution campaign identifier */
        public String CampaignId;
        /** Attribution network name */
        public String Platform;
        
    }

    public static class AddFriendRequest {
        /** Email address of the user to attempt to add to the local user's friend list. */
        public String FriendEmail;
        /** PlayFab identifier of the user to attempt to add to the local user's friend list. */
        public String FriendPlayFabId;
        /** Title-specific display name of the user to attempt to add to the local user's friend list. */
        public String FriendTitleDisplayName;
        /** PlayFab username of the user to attempt to add to the local user's friend list. */
        public String FriendUsername;
        
    }

    public static class AddFriendResult {
        /** True if the friend request was processed successfully. */
        public Boolean Created;
        
    }

    public static class AddGenericIDRequest {
        /** Generic service identifier to add to the player account. */
        public GenericServiceId GenericId;
        
    }

    public static class AddGenericIDResult {
        
    }

    /**
     * This API adds a contact email to the player's profile. If the player's profile already contains a contact email, it will
     * update the contact email to the email address specified.
     */
    public static class AddOrUpdateContactEmailRequest {
        /** The new contact email to associate with the player. */
        public String EmailAddress;
        
    }

    public static class AddOrUpdateContactEmailResult {
        
    }

    public static class AddSharedGroupMembersRequest {
        /** An array of unique PlayFab assigned ID of the user on whom the operation will be performed. */
        public ArrayList PlayFabIds;
        /** Unique identifier for the shared group. */
        public String SharedGroupId;
        
    }

    public static class AddSharedGroupMembersResult {
        
    }

    public static class AddUsernamePasswordRequest {
        /** User email address attached to their account */
        public String Email;
        /** Password for the PlayFab account (6-100 characters) */
        public String Password;
        /** PlayFab username for the account (3-20 characters) */
        public String Username;
        
    }

    /**
     * Each account must have a unique username and email address in the PlayFab service. Once created, the account may be
     * associated with additional accounts (Steam, Facebook, Game Center, etc.), allowing for added social network lists and
     * achievements systems. This can also be used to provide a recovery method if the user loses their original means of
     * access.
     */
    public static class AddUsernamePasswordResult {
        /** PlayFab unique user name. */
        public String Username;
        
    }

    /** This API must be enabled for use as an option in the game manager website. It is disabled by default. */
    public static class AddUserVirtualCurrencyRequest {
        /** Amount to be added to the user balance of the specified virtual currency. */
        public Integer Amount;
        /** Name of the virtual currency which is to be incremented. */
        public String VirtualCurrency;
        
    }

    /**
     * More information can be found on configuring your game for the Google Cloud Messaging service in the Google developer
     * documentation, here: http://developer.android.com/google/gcm/client.html. The steps to configure and send Push
     * Notifications is described in the PlayFab tutorials, here:
     * https://docs.microsoft.com/gaming/playfab/features/engagement/push-notifications/quickstart.
     */
    public static class AndroidDevicePushNotificationRegistrationRequest {
        /** Message to display when confirming push notification. */
        public String ConfirmationMessage;
        /**
         * Registration ID provided by the Google Cloud Messaging service when the title registered to receive push notifications
         * (see the GCM documentation, here: http://developer.android.com/google/gcm/client.html).
         */
        public String DeviceToken;
        /** If true, send a test push message immediately after sucessful registration. Defaults to false. */
        public Boolean SendPushNotificationConfirmation;
        
    }

    public static class AndroidDevicePushNotificationRegistrationResult {
        
    }

    /**
     * If you have an ad attribution partner enabled, this will post an install to their service to track the device. It uses
     * the given device id to match based on clicks on ads.
     */
    public static class AttributeInstallRequest {
        /** The adid for this device. */
        public String Adid;
        /** The IdentifierForAdvertisers for iOS Devices. */
        public String Idfa;
        
    }

    public static class AttributeInstallResult {
        
    }

    public static class CancelTradeRequest {
        /** Trade identifier. */
        public String TradeId;
        
    }

    public static class CancelTradeResponse {
        /** Details about trade which was just canceled. */
        public TradeInfo Trade;
        
    }

    public static class CartItem {
        /** Description of the catalog item. */
        public String Description;
        /** Display name for the catalog item. */
        public String DisplayName;
        /** Class name to which catalog item belongs. */
        public String ItemClass;
        /** Unique identifier for the catalog item. */
        public String ItemId;
        /** Unique instance identifier for this catalog item. */
        public String ItemInstanceId;
        /** Cost of the catalog item for each applicable real world currency. */
        public Map RealCurrencyPrices;
        /** Amount of each applicable virtual currency which will be received as a result of purchasing this catalog item. */
        public Map VCAmount;
        /** Cost of the catalog item for each applicable virtual currency. */
        public Map VirtualCurrencyPrices;
        
    }

    /** A purchasable item from the item catalog */
    public static class CatalogItem implements Comparable {
        /**
         * defines the bundle properties for the item - bundles are items which contain other items, including random drop tables
         * and virtual currencies
         */
        public CatalogItemBundleInfo Bundle;
        /** if true, then an item instance of this type can be used to grant a character to a user. */
        public Boolean CanBecomeCharacter;
        /** catalog version for this item */
        public String CatalogVersion;
        /** defines the consumable properties (number of uses, timeout) for the item */
        public CatalogItemConsumableInfo Consumable;
        /**
         * defines the container properties for the item - what items it contains, including random drop tables and virtual
         * currencies, and what item (if any) is required to open it via the UnlockContainerItem API
         */
        public CatalogItemContainerInfo Container;
        /** game specific custom data */
        public String CustomData;
        /** text description of item, to show in-game */
        public String Description;
        /** text name for the item, to show in-game */
        public String DisplayName;
        /**
         * If the item has IsLImitedEdition set to true, and this is the first time this ItemId has been defined as a limited
         * edition item, this value determines the total number of instances to allocate for the title. Once this limit has been
         * reached, no more instances of this ItemId can be created, and attempts to purchase or grant it will return a Result of
         * false for that ItemId. If the item has already been defined to have a limited edition count, or if this value is less
         * than zero, it will be ignored.
         */
        public Integer InitialLimitedEditionCount;
        /** BETA: If true, then only a fixed number can ever be granted. */
        public Boolean IsLimitedEdition;
        /**
         * if true, then only one item instance of this type will exist and its remaininguses will be incremented instead.
         * RemainingUses will cap out at Int32.Max (2,147,483,647). All subsequent increases will be discarded
         */
        public Boolean IsStackable;
        /** if true, then an item instance of this type can be traded between players using the trading APIs */
        public Boolean IsTradable;
        /** class to which the item belongs */
        public String ItemClass;
        /** unique identifier for this item */
        public String ItemId;
        /**
         * URL to the item image. For Facebook purchase to display the image on the item purchase page, this must be set to an HTTP
         * URL.
         */
        public String ItemImageUrl;
        /** override prices for this item for specific currencies */
        public Map RealCurrencyPrices;
        /** list of item tags */
        @Unordered
        public ArrayList Tags;
        /** price of this item in virtual currencies and "RM" (the base Real Money purchase price, in USD pennies) */
        public Map VirtualCurrencyPrices;
        
        public int compareTo(CatalogItem other) {
            if (other == null || other.ItemId == null) return 1;
            if (ItemId == null) return -1;
            return ItemId.compareTo(other.ItemId);
        }
    }

    public static class CatalogItemBundleInfo {
        /** unique ItemId values for all items which will be added to the player inventory when the bundle is added */
        @Unordered
        public ArrayList BundledItems;
        /**
         * unique TableId values for all RandomResultTable objects which are part of the bundle (random tables will be resolved and
         * add the relevant items to the player inventory when the bundle is added)
         */
        @Unordered
        public ArrayList BundledResultTables;
        /** virtual currency types and balances which will be added to the player inventory when the bundle is added */
        public Map BundledVirtualCurrencies;
        
    }

    public static class CatalogItemConsumableInfo {
        /** number of times this object can be used, after which it will be removed from the player inventory */
        public Long UsageCount;
        /**
         * duration in seconds for how long the item will remain in the player inventory - once elapsed, the item will be removed
         * (recommended minimum value is 5 seconds, as lower values can cause the item to expire before operations depending on
         * this item's details have completed)
         */
        public Long UsagePeriod;
        /**
         * all inventory item instances in the player inventory sharing a non-null UsagePeriodGroup have their UsagePeriod values
         * added together, and share the result - when that period has elapsed, all the items in the group will be removed
         */
        public String UsagePeriodGroup;
        
    }

    /**
     * Containers are inventory items that can hold other items defined in the catalog, as well as virtual currency, which is
     * added to the player inventory when the container is unlocked, using the UnlockContainerItem API. The items can be
     * anything defined in the catalog, as well as RandomResultTable objects which will be resolved when the container is
     * unlocked. Containers and their keys should be defined as Consumable (having a limited number of uses) in their catalog
     * defintiions, unless the intent is for the player to be able to re-use them infinitely.
     */
    public static class CatalogItemContainerInfo {
        /** unique ItemId values for all items which will be added to the player inventory, once the container has been unlocked */
        @Unordered
        public ArrayList ItemContents;
        /**
         * ItemId for the catalog item used to unlock the container, if any (if not specified, a call to UnlockContainerItem will
         * open the container, adding the contents to the player inventory and currency balances)
         */
        public String KeyItemId;
        /**
         * unique TableId values for all RandomResultTable objects which are part of the container (once unlocked, random tables
         * will be resolved and add the relevant items to the player inventory)
         */
        @Unordered
        public ArrayList ResultTableContents;
        /** virtual currency types and balances which will be added to the player inventory when the container is unlocked */
        public Map VirtualCurrencyContents;
        
    }

    public static class CharacterInventory {
        /** The id of this character. */
        public String CharacterId;
        /** The inventory of this character. */
        public ArrayList Inventory;
        
    }

    public static class CharacterLeaderboardEntry {
        /** PlayFab unique identifier of the character that belongs to the user for this leaderboard entry. */
        public String CharacterId;
        /** Title-specific display name of the character for this leaderboard entry. */
        public String CharacterName;
        /** Name of the character class for this entry. */
        public String CharacterType;
        /** Title-specific display name of the user for this leaderboard entry. */
        public String DisplayName;
        /** PlayFab unique identifier of the user for this leaderboard entry. */
        public String PlayFabId;
        /** User's overall position in the leaderboard. */
        public Integer Position;
        /** Specific value of the user's statistic. */
        public Integer StatValue;
        
    }

    public static class CharacterResult {
        /** The id for this character on this player. */
        public String CharacterId;
        /** The name of this character. */
        public String CharacterName;
        /** The type-string that was given to this character on creation. */
        public String CharacterType;
        
    }

    public static enum CloudScriptRevisionOption {
        Live,
        Latest,
        Specific
    }

    /**
     * Collection filter to include and/or exclude collections with certain key-value pairs. The filter generates a collection
     * set defined by Includes rules and then remove collections that matches the Excludes rules. A collection is considered
     * matching a rule if the rule describes a subset of the collection.
     */
    public static class CollectionFilter {
        /** List of Exclude rules, with any of which if a collection matches, it is excluded by the filter. */
        public ArrayList Excludes;
        /**
         * List of Include rules, with any of which if a collection matches, it is included by the filter, unless it is excluded by
         * one of the Exclude rule
         */
        public ArrayList Includes;
        
    }

    /**
     * The final step in the purchasing process, this API finalizes the purchase with the payment provider, where applicable,
     * adding virtual goods to the player inventory (including random drop table resolution and recursive addition of bundled
     * items) and adjusting virtual currency balances for funds used or added. Note that this is a pull operation, and should
     * be polled regularly when a purchase is in progress. 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.
     */
    public static class ConfirmPurchaseRequest {
        /** Purchase order identifier returned from StartPurchase. */
        public String OrderId;
        
    }

    /**
     * When the FailedByPaymentProvider error is returned, it's important to check the ProviderErrorCode, ProviderErrorMessage,
     * and ProviderErrorDetails to understand the specific reason the payment was rejected, as in some rare cases, this may
     * mean that the provider hasn't completed some operation required to finalize the purchase.
     */
    public static class ConfirmPurchaseResult {
        /** Array of items purchased. */
        public ArrayList Items;
        /** Purchase order identifier. */
        public String OrderId;
        /** Date and time of the purchase. */
        public Date PurchaseDate;
        
    }

    public static class ConsumeItemRequest {
        /** Unique PlayFab assigned ID for a specific character owned by a user */
        public String CharacterId;
        /** Number of uses to consume from the item. */
        public Integer ConsumeCount;
        /** Unique instance identifier of the item to be consumed. */
        public String ItemInstanceId;
        
    }

    public static class ConsumeItemResult {
        /** Unique instance identifier of the item with uses consumed. */
        public String ItemInstanceId;
        /** Number of uses remaining on the item. */
        public Integer RemainingUses;
        
    }

    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;
        /** Token provided by the Xbox Live SDK/XDK method GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", ""). */
        public String XboxToken;
        
    }

    public static class ConsumeXboxEntitlementsResult {
        /** Details for the items purchased. */
        public ArrayList Items;
        
    }

    public static class ContactEmailInfoModel {
        /** The email address */
        public String EmailAddress;
        /** The name of the email info data */
        public String Name;
        /** The verification status of the email */
        public EmailVerificationStatus VerificationStatus;
        
    }

    /** A data container */
    public static class Container_Dictionary_String_String {
        /** Content of data */
        public Map Data;
        
    }

    public static enum ContinentCode {
        AF,
        AN,
        AS,
        EU,
        NA,
        OC,
        SA
    }

    public static enum CountryCode {
        AF,
        AX,
        AL,
        DZ,
        AS,
        AD,
        AO,
        AI,
        AQ,
        AG,
        AR,
        AM,
        AW,
        AU,
        AT,
        AZ,
        BS,
        BH,
        BD,
        BB,
        BY,
        BE,
        BZ,
        BJ,
        BM,
        BT,
        BO,
        BQ,
        BA,
        BW,
        BV,
        BR,
        IO,
        BN,
        BG,
        BF,
        BI,
        KH,
        CM,
        CA,
        CV,
        KY,
        CF,
        TD,
        CL,
        CN,
        CX,
        CC,
        CO,
        KM,
        CG,
        CD,
        CK,
        CR,
        CI,
        HR,
        CU,
        CW,
        CY,
        CZ,
        DK,
        DJ,
        DM,
        DO,
        EC,
        EG,
        SV,
        GQ,
        ER,
        EE,
        ET,
        FK,
        FO,
        FJ,
        FI,
        FR,
        GF,
        PF,
        TF,
        GA,
        GM,
        GE,
        DE,
        GH,
        GI,
        GR,
        GL,
        GD,
        GP,
        GU,
        GT,
        GG,
        GN,
        GW,
        GY,
        HT,
        HM,
        VA,
        HN,
        HK,
        HU,
        IS,
        IN,
        ID,
        IR,
        IQ,
        IE,
        IM,
        IL,
        IT,
        JM,
        JP,
        JE,
        JO,
        KZ,
        KE,
        KI,
        KP,
        KR,
        KW,
        KG,
        LA,
        LV,
        LB,
        LS,
        LR,
        LY,
        LI,
        LT,
        LU,
        MO,
        MK,
        MG,
        MW,
        MY,
        MV,
        ML,
        MT,
        MH,
        MQ,
        MR,
        MU,
        YT,
        MX,
        FM,
        MD,
        MC,
        MN,
        ME,
        MS,
        MA,
        MZ,
        MM,
        NA,
        NR,
        NP,
        NL,
        NC,
        NZ,
        NI,
        NE,
        NG,
        NU,
        NF,
        MP,
        NO,
        OM,
        PK,
        PW,
        PS,
        PA,
        PG,
        PY,
        PE,
        PH,
        PN,
        PL,
        PT,
        PR,
        QA,
        RE,
        RO,
        RU,
        RW,
        BL,
        SH,
        KN,
        LC,
        MF,
        PM,
        VC,
        WS,
        SM,
        ST,
        SA,
        SN,
        RS,
        SC,
        SL,
        SG,
        SX,
        SK,
        SI,
        SB,
        SO,
        ZA,
        GS,
        SS,
        ES,
        LK,
        SD,
        SR,
        SJ,
        SZ,
        SE,
        CH,
        SY,
        TW,
        TJ,
        TZ,
        TH,
        TL,
        TG,
        TK,
        TO,
        TT,
        TN,
        TR,
        TM,
        TC,
        TV,
        UG,
        UA,
        AE,
        GB,
        US,
        UM,
        UY,
        UZ,
        VU,
        VE,
        VN,
        VG,
        VI,
        WF,
        EH,
        YE,
        ZM,
        ZW
    }

    /**
     * If SharedGroupId is specified, the service will attempt to create a group with that identifier, and will return an error
     * if it is already in use. If no SharedGroupId is specified, a random identifier will be assigned.
     */
    public static class CreateSharedGroupRequest {
        /** Unique identifier for the shared group (a random identifier will be assigned, if one is not specified). */
        public String SharedGroupId;
        
    }

    public static class CreateSharedGroupResult {
        /** Unique identifier for the shared group. */
        public String SharedGroupId;
        
    }

    public static enum Currency {
        AED,
        AFN,
        ALL,
        AMD,
        ANG,
        AOA,
        ARS,
        AUD,
        AWG,
        AZN,
        BAM,
        BBD,
        BDT,
        BGN,
        BHD,
        BIF,
        BMD,
        BND,
        BOB,
        BRL,
        BSD,
        BTN,
        BWP,
        BYR,
        BZD,
        CAD,
        CDF,
        CHF,
        CLP,
        CNY,
        COP,
        CRC,
        CUC,
        CUP,
        CVE,
        CZK,
        DJF,
        DKK,
        DOP,
        DZD,
        EGP,
        ERN,
        ETB,
        EUR,
        FJD,
        FKP,
        GBP,
        GEL,
        GGP,
        GHS,
        GIP,
        GMD,
        GNF,
        GTQ,
        GYD,
        HKD,
        HNL,
        HRK,
        HTG,
        HUF,
        IDR,
        ILS,
        IMP,
        INR,
        IQD,
        IRR,
        ISK,
        JEP,
        JMD,
        JOD,
        JPY,
        KES,
        KGS,
        KHR,
        KMF,
        KPW,
        KRW,
        KWD,
        KYD,
        KZT,
        LAK,
        LBP,
        LKR,
        LRD,
        LSL,
        LYD,
        MAD,
        MDL,
        MGA,
        MKD,
        MMK,
        MNT,
        MOP,
        MRO,
        MUR,
        MVR,
        MWK,
        MXN,
        MYR,
        MZN,
        NAD,
        NGN,
        NIO,
        NOK,
        NPR,
        NZD,
        OMR,
        PAB,
        PEN,
        PGK,
        PHP,
        PKR,
        PLN,
        PYG,
        QAR,
        RON,
        RSD,
        RUB,
        RWF,
        SAR,
        SBD,
        SCR,
        SDG,
        SEK,
        SGD,
        SHP,
        SLL,
        SOS,
        SPL,
        SRD,
        STD,
        SVC,
        SYP,
        SZL,
        THB,
        TJS,
        TMT,
        TND,
        TOP,
        TRY,
        TTD,
        TVD,
        TWD,
        TZS,
        UAH,
        UGX,
        USD,
        UYU,
        UZS,
        VEF,
        VND,
        VUV,
        WST,
        XAF,
        XCD,
        XDR,
        XOF,
        XPF,
        YER,
        ZAR,
        ZMW,
        ZWD
    }

    public static class CurrentGamesRequest {
        /** Build to match against. */
        public String BuildVersion;
        /** Game mode to look for. */
        public String GameMode;
        /** Region to check for Game Server Instances. */
        public Region Region;
        /** Statistic name to find statistic-based matches. */
        public String StatisticName;
        /** Filter to include and/or exclude Game Server Instances associated with certain tags. */
        public CollectionFilter TagFilter;
        
    }

    public static class CurrentGamesResult {
        /** number of games running */
        public Integer GameCount;
        /** array of games found */
        public ArrayList Games;
        /** total number of players across all servers */
        public Integer PlayerCount;
        
    }

    /** Any arbitrary information collected by the device */
    public static class DeviceInfoRequest {
        /** Information posted to the PlayStream Event. Currently arbitrary, and specific to the environment sending it. */
        public Map Info;
        
    }

    public static enum EmailVerificationStatus {
        Unverified,
        Pending,
        Confirmed
    }

    public static class EmptyResponse {
        
    }

    public static class EmptyResult {
        
    }

    /** Combined entity type and ID structure which uniquely identifies a single entity. */
    public static class EntityKey {
        /** Unique ID of the entity. */
        public String Id;
        /** Entity type. See https://docs.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types */
        public String Type;
        
    }

    public static class EntityTokenResponse {
        /** The entity id and type. */
        public EntityKey Entity;
        /** The token used to set X-EntityToken for all entity based API calls. */
        public String EntityToken;
        /** The time the token will expire, if it is an expiring token, in UTC. */
        public Date TokenExpiration;
        
    }

    public static class ExecuteCloudScriptRequest {
        /** The name of the CloudScript function to execute */
        public String FunctionName;
        /** Object that is passed in to the function as the first argument */
        public Object FunctionParameter;
        /**
         * Generate a 'player_executed_cloudscript' PlayStream event containing the results of the function execution and other
         * contextual information. This event will show up in the PlayStream debugger console for the player in Game Manager.
         */
        public Boolean GeneratePlayStreamEvent;
        /**
         * Option for which revision of the CloudScript to execute. 'Latest' executes the most recently created revision, 'Live'
         * executes the current live, published revision, and 'Specific' executes the specified revision. The default value is
         * 'Specific', if the SpeificRevision parameter is specified, otherwise it is 'Live'.
         */
        public CloudScriptRevisionOption RevisionSelection;
        /** The specivic revision to execute, when RevisionSelection is set to 'Specific' */
        public Integer SpecificRevision;
        
    }

    public static class ExecuteCloudScriptResult {
        /** Number of PlayFab API requests issued by the CloudScript function */
        public Integer APIRequestsIssued;
        /** Information about the error, if any, that occurred during execution */
        public ScriptExecutionError Error;
        public Double ExecutionTimeSeconds;
        /** The name of the function that executed */
        public String FunctionName;
        /** The object returned from the CloudScript function, if any */
        public Object FunctionResult;
        /**
         * Flag indicating if the FunctionResult was too large and was subsequently dropped from this event. This only occurs if
         * the total event size is larger than 350KB.
         */
        public Boolean FunctionResultTooLarge;
        /** Number of external HTTP requests issued by the CloudScript function */
        public Integer HttpRequestsIssued;
        /**
         * Entries logged during the function execution. These include both entries logged in the function code using log.info()
         * and log.error() and error entries for API and HTTP request failures.
         */
        public ArrayList Logs;
        /**
         * Flag indicating if the logs were too large and were subsequently dropped from this event. This only occurs if the total
         * event size is larger than 350KB after the FunctionResult was removed.
         */
        public Boolean LogsTooLarge;
        public Long MemoryConsumedBytes;
        /**
         * Processor time consumed while executing the function. This does not include time spent waiting on API calls or HTTP
         * requests.
         */
        public Double ProcessorTimeSeconds;
        /** The revision of the CloudScript that executed */
        public Integer Revision;
        
    }

    public static class FacebookInstantGamesPlayFabIdPair {
        /** Unique Facebook Instant Games identifier for a user. */
        public String FacebookInstantGamesId;
        /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Facebook Instant Games identifier. */
        public String PlayFabId;
        
    }

    public static class FacebookPlayFabIdPair {
        /** Unique Facebook identifier for a user. */
        public String FacebookId;
        /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Facebook identifier. */
        public String PlayFabId;
        
    }

    public static class FriendInfo {
        /** Available Facebook information (if the user and PlayFab friend are also connected in Facebook). */
        public UserFacebookInfo FacebookInfo;
        /** PlayFab unique identifier for this friend. */
        public String FriendPlayFabId;
        /** Available Game Center information (if the user and PlayFab friend are also connected in Game Center). */
        public UserGameCenterInfo GameCenterInfo;
        /** The profile of the user, if requested. */
        public PlayerProfileModel Profile;
        /** Available PSN information, if the user and PlayFab friend are both connected to PSN. */
        public UserPsnInfo PSNInfo;
        /** Available Steam information (if the user and PlayFab friend are also connected in Steam). */
        public UserSteamInfo SteamInfo;
        /** Tags which have been associated with this friend. */
        public ArrayList Tags;
        /** Title-specific display name for this friend. */
        public String TitleDisplayName;
        /** PlayFab unique username for this friend. */
        public String Username;
        /** Available Xbox information, if the user and PlayFab friend are both connected to Xbox Live. */
        public UserXboxInfo XboxInfo;
        
    }

    public static class GameCenterPlayFabIdPair {
        /** Unique Game Center identifier for a user. */
        public String GameCenterId;
        /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Game Center identifier. */
        public String PlayFabId;
        
    }

    public static class GameInfo {
        /** build version this server is running */
        public String BuildVersion;
        /** game mode this server is running */
        public String GameMode;
        /** game session custom data */
        public String GameServerData;
        /** game specific string denoting server configuration */
        public GameInstanceState GameServerStateEnum;
        /** last heartbeat of the game server instance, used in external game server provider mode */
        public Date LastHeartbeat;
        /** unique lobby identifier for this game server */
        public String LobbyID;
        /** maximum players this server can support */
        public Integer MaxPlayers;
        /** array of current player IDs on this server */
        public ArrayList PlayerUserIds;
        /** region to which this server is associated */
        public Region Region;
        /** duration in seconds this server has been running */
        public Long RunTime;
        /** IPV4 address of the server */
        public String ServerIPV4Address;
        /** IPV6 address of the server */
        public String ServerIPV6Address;
        /** port number to use for non-http communications with the server */
        public Integer ServerPort;
        /** Public DNS name (if any) of the server */
        public String ServerPublicDNSName;
        /** stastic used to match this game in player statistic matchmaking */
        public String StatisticName;
        /** game session tags */
        public Map Tags;
        
    }

    public static enum GameInstanceState {
        Open,
        Closed
    }

    public static class GameServerRegionsRequest {
        /** version of game server for which stats are being requested */
        public String BuildVersion;
        /**
         * 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;
        
    }

    public static class GameServerRegionsResult {
        /** array of regions found matching the request parameters */
        public ArrayList Regions;
        
    }

    public static class GenericPlayFabIdPair {
        /** Unique generic service identifier for a user. */
        public GenericServiceId GenericId;
        /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the given generic identifier. */
        public String PlayFabId;
        
    }

    public static class GenericServiceId {
        /** Name of the service for which the player has a unique identifier. */
        public String ServiceName;
        /** Unique identifier of the player in that service. */
        public String UserId;
        
    }

    public static class GetAccountInfoRequest {
        /** User email address for the account to find (if no Username is specified). */
        public String Email;
        /**
         * Unique PlayFab identifier of the user whose info is being requested. Optional, defaults to the authenticated user if no
         * other lookup identifier set.
         */
        public String PlayFabId;
        /**
         * Title-specific username for the account to find (if no Email is set). Note that if the non-unique Title Display Names
         * option is enabled for the title, attempts to look up users by Title Display Name will always return AccountNotFound.
         */
        public String TitleDisplayName;
        /** PlayFab Username for the account to find (if no PlayFabId is specified). */
        public String Username;
        
    }

    /**
     * This API retrieves details regarding the player in the PlayFab service. Note that when this call is used to retrieve
     * data about another player (not the one signed into the local client), some data, such as Personally Identifying
     * Information (PII), will be omitted for privacy reasons or to comply with the requirements of the platform belongs to.
     * The user account returned will be based on the identifier provided in priority order: PlayFabId, Username, Email, then
     * TitleDisplayName. If no identifier is specified, the currently signed in user's information will be returned.
     */
    public static class GetAccountInfoResult {
        /** Account information for the local user. */
        public UserAccountInfo AccountInfo;
        
    }

    public static class GetCatalogItemsRequest {
        /** Which catalog is being requested. If null, uses the default catalog. */
        public String CatalogVersion;
        
    }

    /**
     * If CatalogVersion is not specified, only inventory items associated with the most recent version of the catalog will be
     * returned.
     */
    public static class GetCatalogItemsResult {
        /** Array of items which can be purchased. */
        @Unordered("ItemId")
        public ArrayList Catalog;
        
    }

    /**
     * Data is stored as JSON key-value pairs. If the Keys parameter is provided, the data object returned will only contain
     * the data specific to the indicated Keys. Otherwise, the full set of custom character data will be returned.
     */
    public static class GetCharacterDataRequest {
        /** Unique PlayFab assigned ID for a specific character owned by a user */
        public String CharacterId;
        /**
         * The version that currently exists according to the caller. The call will return the data for all of the keys if the
         * version in the system is greater than this.
         */
        public Long IfChangedFromDataVersion;
        /** Specific keys to search for in the custom user data. */
        public ArrayList Keys;
        /** Unique PlayFab identifier of the user to load data for. Optional, defaults to yourself if not set. */
        public String PlayFabId;
        
    }

    public static class GetCharacterDataResult {
        /** Unique PlayFab assigned ID for a specific character owned by a user */
        public String CharacterId;
        /** User specific data for this title. */
        public Map Data;
        /**
         * Indicates the current version of the data that has been set. This is incremented with every set call for that type of
         * data (read-only, internal, etc). This version can be provided in Get calls to find updated data.
         */
        public Long DataVersion;
        
    }

    /**
     * All items currently in the character inventory will be returned, irrespective of how they were acquired (via purchasing,
     * grants, coupons, etc.). Items that are expired, fully consumed, or are no longer valid are not considered to be in the
     * user's current inventory, and so will not be not included. Also returns their virtual currency balances.
     */
    public static class GetCharacterInventoryRequest {
        /** Used to limit results to only those from a specific catalog version. */
        public String CatalogVersion;
        /** Unique PlayFab assigned ID for a specific character owned by a user */
        public String CharacterId;
        
    }

    public static class GetCharacterInventoryResult {
        /** Unique identifier of the character for this inventory. */
        public String CharacterId;
        /** Array of inventory items belonging to the character. */
        @Unordered("ItemInstanceId")
        public ArrayList Inventory;
        /** Array of virtual currency balance(s) belonging to the character. */
        public Map VirtualCurrency;
        /** Array of remaining times and timestamps for virtual currencies. */
        public Map VirtualCurrencyRechargeTimes;
        
    }

    public static class GetCharacterLeaderboardRequest {
        /** Optional character type on which to filter the leaderboard entries. */
        public String CharacterType;
        /** Maximum number of entries to retrieve. Default 10, maximum 100. */
        public Integer MaxResultsCount;
        /** First entry in the leaderboard to be retrieved. */
        public Integer StartPosition;
        /** Unique identifier for the title-specific statistic for the leaderboard. */
        public String StatisticName;
        
    }

    /** Note that the Position of the character in the results is for the overall leaderboard. */
    public static class GetCharacterLeaderboardResult {
        /** Ordered list of leaderboard entries. */
        public ArrayList Leaderboard;
        
    }

    public static class GetCharacterStatisticsRequest {
        /** Unique PlayFab assigned ID for a specific character owned by a user */
        public String CharacterId;
        
    }

    /** In addition to being available for use by the title, the statistics are used for all leaderboard operations in PlayFab. */
    public static class GetCharacterStatisticsResult {
        /** The requested character statistics. */
        public Map CharacterStatistics;
        
    }

    public static class GetContentDownloadUrlRequest {
        /** HTTP method to fetch item - GET or HEAD. Use HEAD when only fetching metadata. Default is GET. */
        public String HttpMethod;
        /** Key of the content item to fetch, usually formatted as a path, e.g. images/a.png */
        public String Key;
        /**
         * True to download through CDN. CDN provides higher download bandwidth and lower latency. However, if you want the latest,
         * non-cached version of the content during development, set this to false. Default is true.
         */
        public Boolean ThruCDN;
        
    }

    public static class GetContentDownloadUrlResult {
        /** URL for downloading content via HTTP GET or HEAD method. The URL will expire in approximately one hour. */
        public String URL;
        
    }

    public static class GetFriendLeaderboardAroundPlayerRequest {
        /** Indicates whether Facebook friends should be included in the response. Default is true. */
        public Boolean IncludeFacebookFriends;
        /** Indicates whether Steam service friends should be included in the response. Default is true. */
        public Boolean IncludeSteamFriends;
        /** Maximum number of entries to retrieve. Default 10, maximum 100. */
        public Integer MaxResultsCount;
        /** PlayFab unique identifier of the user to center the leaderboard around. If null will center on the logged in user. */
        public String PlayFabId;
        /**
         * If non-null, this determines which properties of the resulting player profiles to return. For API calls from the client,
         * only the allowed client profile properties for the title may be requested. These allowed properties are configured in
         * the Game Manager "Client Profile Options" tab in the "Settings" section.
         */
        public PlayerProfileViewConstraints ProfileConstraints;
        /** Statistic used to rank players for this leaderboard. */
        public String StatisticName;
        /** The version of the leaderboard to get. */
        public Integer Version;
        /** Xbox token if Xbox friends should be included. Requires Xbox be configured on PlayFab. */
        public String XboxToken;
        
    }

    /**
     * Note: When calling 'GetLeaderboardAround...' APIs, the position of the user defaults to 0 when the user does not have
     * the corresponding statistic.If Facebook friends are included, make sure the access token from previous LoginWithFacebook
     * call is still valid and not expired. If Xbox Live friends are included, make sure the access token from the previous
     * LoginWithXbox call is still valid and not expired.
     */
    public static class GetFriendLeaderboardAroundPlayerResult {
        /** Ordered listing of users and their positions in the requested leaderboard. */
        public ArrayList Leaderboard;
        /** The time the next scheduled reset will occur. Null if the leaderboard does not reset on a schedule. */
        public Date NextReset;
        /** The version of the leaderboard returned. */
        public Integer Version;
        
    }

    public static class GetFriendLeaderboardRequest {
        /** Indicates whether Facebook friends should be included in the response. Default is true. */
        public Boolean IncludeFacebookFriends;
        /** Indicates whether Steam service friends should be included in the response. Default is true. */
        public Boolean IncludeSteamFriends;
        /** Maximum number of entries to retrieve. Default 10, maximum 100. */
        public Integer MaxResultsCount;
        /**
         * If non-null, this determines which properties of the resulting player profiles to return. For API calls from the client,
         * only the allowed client profile properties for the title may be requested. These allowed properties are configured in
         * the Game Manager "Client Profile Options" tab in the "Settings" section.
         */
        public PlayerProfileViewConstraints ProfileConstraints;
        /** Position in the leaderboard to start this listing (defaults to the first entry). */
        public Integer StartPosition;
        /** Statistic used to rank friends for this leaderboard. */
        public String StatisticName;
        /** The version of the leaderboard to get. */
        public Integer Version;
        /** Xbox token if Xbox friends should be included. Requires Xbox be configured on PlayFab. */
        public String XboxToken;
        
    }

    public static class GetFriendsListRequest {
        /** Indicates whether Facebook friends should be included in the response. Default is true. */
        public Boolean IncludeFacebookFriends;
        /** Indicates whether Steam service friends should be included in the response. Default is true. */
        public Boolean IncludeSteamFriends;
        /**
         * If non-null, this determines which properties of the resulting player profiles to return. For API calls from the client,
         * only the allowed client profile properties for the title may be requested. These allowed properties are configured in
         * the Game Manager "Client Profile Options" tab in the "Settings" section.
         */
        public PlayerProfileViewConstraints ProfileConstraints;
        /** Xbox token if Xbox friends should be included. Requires Xbox be configured on PlayFab. */
        public String XboxToken;
        
    }

    /**
     * If any additional services are queried for the user's friends, those friends who also have a PlayFab account registered
     * for the title will be returned in the results. For Facebook, user has to have logged into the title's Facebook app
     * recently, and only friends who also plays this game will be included. For Xbox Live, user has to have logged into the
     * Xbox Live recently, and only friends who also play this game will be included.
     */
    public static class GetFriendsListResult {
        /** Array of friends found. */
        public ArrayList Friends;
        
    }

    public static class GetLeaderboardAroundCharacterRequest {
        /** Unique PlayFab assigned ID for a specific character on which to center the leaderboard. */
        public String CharacterId;
        /** Optional character type on which to filter the leaderboard entries. */
        public String CharacterType;
        /** Maximum number of entries to retrieve. Default 10, maximum 100. */
        public Integer MaxResultsCount;
        /** Unique identifier for the title-specific statistic for the leaderboard. */
        public String StatisticName;
        
    }

    /**
     * Note: When calling 'GetLeaderboardAround...' APIs, the position of the character defaults to 0 when the character does
     * not have the corresponding statistic.
     */
    public static class GetLeaderboardAroundCharacterResult {
        /** Ordered list of leaderboard entries. */
        public ArrayList Leaderboard;
        
    }

    public static class GetLeaderboardAroundPlayerRequest {
        /** Maximum number of entries to retrieve. Default 10, maximum 100. */
        public Integer MaxResultsCount;
        /** PlayFab unique identifier of the user to center the leaderboard around. If null will center on the logged in user. */
        public String PlayFabId;
        /**
         * If non-null, this determines which properties of the resulting player profiles to return. For API calls from the client,
         * only the allowed client profile properties for the title may be requested. These allowed properties are configured in
         * the Game Manager "Client Profile Options" tab in the "Settings" section.
         */
        public PlayerProfileViewConstraints ProfileConstraints;
        /** Statistic used to rank players for this leaderboard. */
        public String StatisticName;
        /** The version of the leaderboard to get. */
        public Integer Version;
        
    }

    /**
     * Note: When calling 'GetLeaderboardAround...' APIs, the position of the user defaults to 0 when the user does not have
     * the corresponding statistic.
     */
    public static class GetLeaderboardAroundPlayerResult {
        /** Ordered listing of users and their positions in the requested leaderboard. */
        public ArrayList Leaderboard;
        /** The time the next scheduled reset will occur. Null if the leaderboard does not reset on a schedule. */
        public Date NextReset;
        /** The version of the leaderboard returned. */
        public Integer Version;
        
    }

    public static class GetLeaderboardForUsersCharactersRequest {
        /** Maximum number of entries to retrieve. */
        public Integer MaxResultsCount;
        /** Unique identifier for the title-specific statistic for the leaderboard. */
        public String StatisticName;
        
    }

    /**
     * NOTE: The position of the character in the results is relative to the other characters for that specific user. This mean
     * the values will always be between 0 and one less than the number of characters returned regardless of the size of the
     * actual leaderboard.
     */
    public static class GetLeaderboardForUsersCharactersResult {
        /** Ordered list of leaderboard entries. */
        public ArrayList Leaderboard;
        
    }

    public static class GetLeaderboardRequest {
        /** Maximum number of entries to retrieve. Default 10, maximum 100. */
        public Integer MaxResultsCount;
        /**
         * If non-null, this determines which properties of the resulting player profiles to return. For API calls from the client,
         * only the allowed client profile properties for the title may be requested. These allowed properties are configured in
         * the Game Manager "Client Profile Options" tab in the "Settings" section.
         */
        public PlayerProfileViewConstraints ProfileConstraints;
        /** Position in the leaderboard to start this listing (defaults to the first entry). */
        public Integer StartPosition;
        /** Statistic used to rank players for this leaderboard. */
        public String StatisticName;
        /** The version of the leaderboard to get. */
        public Integer Version;
        
    }

    /** Note: the user's Position is relative to the overall leaderboard. */
    public static class GetLeaderboardResult {
        /** Ordered listing of users and their positions in the requested leaderboard. */
        public ArrayList Leaderboard;
        /** The time the next scheduled reset will occur. Null if the leaderboard does not reset on a schedule. */
        public Date NextReset;
        /** The version of the leaderboard returned. */
        public Integer Version;
        
    }

    public static class GetPaymentTokenRequest {
        /** The name of service to provide the payment token. Allowed Values are: xsolla */
        public String TokenProvider;
        
    }

    public static class GetPaymentTokenResult {
        /** PlayFab's purchase order identifier. */
        public String OrderId;
        /** The token from provider. */
        public String ProviderToken;
        
    }

    public static class GetPhotonAuthenticationTokenRequest {
        /** The Photon applicationId for the game you wish to log into. */
        public String PhotonApplicationId;
        
    }

    public static class GetPhotonAuthenticationTokenResult {
        /** The Photon authentication token for this game-session. */
        public String PhotonCustomAuthenticationToken;
        
    }

    public static class GetPlayerCombinedInfoRequest {
        /** Flags for which pieces of info to return for the user. */
        public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
        /** PlayFabId of the user whose data will be returned. If not filled included, we return the data for the calling player. */
        public String PlayFabId;
        
    }

    public static class GetPlayerCombinedInfoRequestParams {
        /** Whether to get character inventories. Defaults to false. */
        public Boolean GetCharacterInventories;
        /** Whether to get the list of characters. Defaults to false. */
        public Boolean GetCharacterList;
        /** Whether to get player profile. Defaults to false. Has no effect for a new player. */
        public Boolean GetPlayerProfile;
        /** Whether to get player statistics. Defaults to false. */
        public Boolean GetPlayerStatistics;
        /** Whether to get title data. Defaults to false. */
        public Boolean GetTitleData;
        /** Whether to get the player's account Info. Defaults to false */
        public Boolean GetUserAccountInfo;
        /** Whether to get the player's custom data. Defaults to false */
        public Boolean GetUserData;
        /** Whether to get the player's inventory. Defaults to false */
        public Boolean GetUserInventory;
        /** Whether to get the player's read only data. Defaults to false */
        public Boolean GetUserReadOnlyData;
        /** Whether to get the player's virtual currency balances. Defaults to false */
        public Boolean GetUserVirtualCurrency;
        /** Specific statistics to retrieve. Leave null to get all keys. Has no effect if GetPlayerStatistics is false */
        public ArrayList PlayerStatisticNames;
        /** Specifies the properties to return from the player profile. Defaults to returning the player's display name. */
        public PlayerProfileViewConstraints ProfileConstraints;
        /** Specific keys to search for in the custom data. Leave null to get all keys. Has no effect if GetTitleData is false */
        public ArrayList TitleDataKeys;
        /** Specific keys to search for in the custom data. Leave null to get all keys. Has no effect if GetUserData is false */
        public ArrayList UserDataKeys;
        /**
         * Specific keys to search for in the custom data. Leave null to get all keys. Has no effect if GetUserReadOnlyData is
         * false
         */
        public ArrayList UserReadOnlyDataKeys;
        
    }

    /**
     * Returns whatever info is requested in the response for the user. If no user is explicitly requested this defaults to the
     * authenticated user. If the user is the same as the requester, PII (like email address, facebook id) is returned if
     * available. Otherwise, only public information is returned. All parameters default to false.
     */
    public static class GetPlayerCombinedInfoResult {
        /** Results for requested info. */
        public GetPlayerCombinedInfoResultPayload InfoResultPayload;
        /** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
        public String PlayFabId;
        
    }

    public static class GetPlayerCombinedInfoResultPayload {
        /** Account information for the user. This is always retrieved. */
        public UserAccountInfo AccountInfo;
        /** Inventories for each character for the user. */
        public ArrayList CharacterInventories;
        /** List of characters for the user. */
        public ArrayList CharacterList;
        /**
         * The profile of the players. This profile is not guaranteed to be up-to-date. For a new player, this profile will not
         * exist.
         */
        public PlayerProfileModel PlayerProfile;
        /** List of statistics for this player. */
        public ArrayList PlayerStatistics;
        /** Title data for this title. */
        public Map TitleData;
        /** User specific custom data. */
        public Map UserData;
        /** The version of the UserData that was returned. */
        public Long UserDataVersion;
        /** Array of inventory items in the user's current inventory. */
        @Unordered("ItemInstanceId")
        public ArrayList UserInventory;
        /** User specific read-only data. */
        public Map UserReadOnlyData;
        /** The version of the Read-Only UserData that was returned. */
        public Long UserReadOnlyDataVersion;
        /** Dictionary of virtual currency balance(s) belonging to the user. */
        public Map UserVirtualCurrency;
        /** Dictionary of remaining times and timestamps for virtual currencies. */
        public Map UserVirtualCurrencyRechargeTimes;
        
    }

    /**
     * This API allows for access to details regarding a user in the PlayFab service, usually for purposes of customer support.
     * Note that data returned may be Personally Identifying Information (PII), such as email address, and so care should be
     * taken in how this data is stored and managed. Since this call will always return the relevant information for users who
     * have accessed the title, the recommendation is to not store this data locally.
     */
    public static class GetPlayerProfileRequest {
        /** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
        public String PlayFabId;
        /**
         * If non-null, this determines which properties of the resulting player profiles to return. For API calls from the client,
         * only the allowed client profile properties for the title may be requested. These allowed properties are configured in
         * the Game Manager "Client Profile Options" tab in the "Settings" section.
         */
        public PlayerProfileViewConstraints ProfileConstraints;
        
    }

    public static class GetPlayerProfileResult {
        /**
         * The profile of the player. This profile is not guaranteed to be up-to-date. For a new player, this profile will not
         * exist.
         */
        public PlayerProfileModel PlayerProfile;
        
    }

    public static class GetPlayerSegmentsRequest {
        
    }

    public static class GetPlayerSegmentsResult {
        /** Array of segments the requested player currently belongs to. */
        public ArrayList Segments;
        
    }

    public static class GetPlayerStatisticsRequest {
        /** statistics to return (current version will be returned for each) */
        public ArrayList StatisticNames;
        /**
         * statistics to return, if StatisticNames is not set (only statistics which have a version matching that provided will be
         * returned)
         */
        public ArrayList StatisticNameVersions;
        
    }

    /** In addition to being available for use by the title, the statistics are used for all leaderboard operations in PlayFab. */
    public static class GetPlayerStatisticsResult {
        /** User statistics for the requested user. */
        public ArrayList Statistics;
        
    }

    public static class GetPlayerStatisticVersionsRequest {
        /** unique name of the statistic */
        public String StatisticName;
        
    }

    public static class GetPlayerStatisticVersionsResult {
        /** version change history of the statistic */
        public ArrayList StatisticVersions;
        
    }

    /**
     * This API will return a list of canonical tags which includes both namespace and tag's name. If namespace is not
     * provided, the result is a list of all canonical tags. TagName can be used for segmentation and Namespace is limited to
     * 128 characters.
     */
    public static class GetPlayerTagsRequest {
        /** Optional namespace to filter results by */
        public String Namespace;
        /** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
        public String PlayFabId;
        
    }

    public static class GetPlayerTagsResult {
        /** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
        public String PlayFabId;
        /** Canonical tags (including namespace and tag's name) for the requested user */
        public ArrayList Tags;
        
    }

    public static class GetPlayerTradesRequest {
        /** Returns only trades with the given status. If null, returns all trades. */
        public TradeStatus StatusFilter;
        
    }

    public static class GetPlayerTradesResponse {
        /** History of trades which this player has accepted. */
        public ArrayList AcceptedTrades;
        /** The trades for this player which are currently available to be accepted. */
        public ArrayList OpenedTrades;
        
    }

    public static class GetPlayFabIDsFromFacebookIDsRequest {
        /** Array of unique Facebook identifiers for which the title needs to get PlayFab identifiers. */
        public ArrayList FacebookIDs;
        
    }

    /** For Facebook identifiers which have not been linked to PlayFab accounts, null will be returned. */
    public static class GetPlayFabIDsFromFacebookIDsResult {
        /** Mapping of Facebook identifiers to PlayFab identifiers. */
        public ArrayList Data;
        
    }

    public static class GetPlayFabIDsFromFacebookInstantGamesIdsRequest {
        /** Array of unique Facebook Instant Games identifiers for which the title needs to get PlayFab identifiers. */
        public ArrayList FacebookInstantGamesIds;
        
    }

    /** For Facebook Instant Game identifiers which have not been linked to PlayFab accounts, null will be returned. */
    public static class GetPlayFabIDsFromFacebookInstantGamesIdsResult {
        /** Mapping of Facebook Instant Games identifiers to PlayFab identifiers. */
        public ArrayList Data;
        
    }

    public static class GetPlayFabIDsFromGameCenterIDsRequest {
        /** Array of unique Game Center identifiers (the Player Identifier) for which the title needs to get PlayFab identifiers. */
        public ArrayList GameCenterIDs;
        
    }

    /** For Game Center identifiers which have not been linked to PlayFab accounts, null will be returned. */
    public static class GetPlayFabIDsFromGameCenterIDsResult {
        /** Mapping of Game Center identifiers to PlayFab identifiers. */
        public ArrayList Data;
        
    }

    public static class GetPlayFabIDsFromGenericIDsRequest {
        /**
         * Array of unique generic service identifiers for which the title needs to get PlayFab identifiers. Currently limited to a
         * maximum of 10 in a single request.
         */
        public ArrayList GenericIDs;
        
    }

    /** For generic service identifiers which have not been linked to PlayFab accounts, null will be returned. */
    public static class GetPlayFabIDsFromGenericIDsResult {
        /** Mapping of generic service identifiers to PlayFab identifiers. */
        public ArrayList Data;
        
    }

    public static class GetPlayFabIDsFromGoogleIDsRequest {
        /** Array of unique Google identifiers (Google+ user IDs) for which the title needs to get PlayFab identifiers. */
        public ArrayList GoogleIDs;
        
    }

    /** For Google identifiers which have not been linked to PlayFab accounts, null will be returned. */
    public static class GetPlayFabIDsFromGoogleIDsResult {
        /** Mapping of Google identifiers to PlayFab identifiers. */
        public ArrayList Data;
        
    }

    public static class GetPlayFabIDsFromKongregateIDsRequest {
        /** Array of unique Kongregate identifiers (Kongregate's user_id) for which the title needs to get PlayFab identifiers. */
        public ArrayList KongregateIDs;
        
    }

    /** For Kongregate identifiers which have not been linked to PlayFab accounts, null will be returned. */
    public static class GetPlayFabIDsFromKongregateIDsResult {
        /** Mapping of Kongregate identifiers to PlayFab identifiers. */
        public ArrayList Data;
        
    }

    public static class GetPlayFabIDsFromNintendoSwitchDeviceIdsRequest {
        /** Array of unique Nintendo Switch Device identifiers for which the title needs to get PlayFab identifiers. */
        public ArrayList NintendoSwitchDeviceIds;
        
    }

    /** For Nintendo Switch identifiers which have not been linked to PlayFab accounts, null will be returned. */
    public static class GetPlayFabIDsFromNintendoSwitchDeviceIdsResult {
        /** Mapping of Nintendo Switch Device identifiers to PlayFab identifiers. */
        public ArrayList Data;
        
    }

    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;
        
    }

    /** For Steam identifiers which have not been linked to PlayFab accounts, null will be returned. */
    public static class GetPlayFabIDsFromSteamIDsResult {
        /** Mapping of Steam identifiers to PlayFab identifiers. */
        public ArrayList Data;
        
    }

    public static class GetPlayFabIDsFromTwitchIDsRequest {
        /** Array of unique Twitch identifiers (Twitch's _id) for which the title needs to get PlayFab identifiers. */
        public ArrayList TwitchIds;
        
    }

    /** For Twitch identifiers which have not been linked to PlayFab accounts, null will be returned. */
    public static class GetPlayFabIDsFromTwitchIDsResult {
        /** Mapping of Twitch identifiers to PlayFab identifiers. */
        public ArrayList Data;
        
    }

    public static class GetPlayFabIDsFromXboxLiveIDsRequest {
        /** The ID of Xbox Live sandbox. */
        public String Sandbox;
        /** Array of unique Xbox Live account identifiers for which the title needs to get PlayFab identifiers. */
        public ArrayList XboxLiveAccountIDs;
        
    }

    /** For XboxLive identifiers which have not been linked to PlayFab accounts, null will be returned. */
    public static class GetPlayFabIDsFromXboxLiveIDsResult {
        /** Mapping of PlayStation Network identifiers to PlayFab identifiers. */
        public ArrayList Data;
        
    }

    /**
     * This API is designed to return publisher-specific values which can be read, but not written to, by the client. This data
     * is shared across all titles assigned to a particular publisher, and can be used for cross-game coordination. Only titles
     * assigned to a publisher can use this API. For more information email [email protected]. Note that there may up to a
     * minute delay in between updating title data and this API call returning the newest value.
     */
    public static class GetPublisherDataRequest {
        /** array of keys to get back data from the Publisher data blob, set by the admin tools */
        public ArrayList Keys;
        
    }

    public static class GetPublisherDataResult {
        /** a dictionary object of key / value pairs */
        public Map Data;
        
    }

    public static class GetPurchaseRequest {
        /** Purchase order identifier. */
        public String OrderId;
        
    }

    public static class GetPurchaseResult {
        /** Purchase order identifier. */
        public String OrderId;
        /** Payment provider used for transaction (If not VC) */
        public String PaymentProvider;
        /** Date and time of the purchase. */
        public Date PurchaseDate;
        /** Provider transaction ID (If not VC) */
        public String TransactionId;
        /** PlayFab transaction status */
        public String TransactionStatus;
        
    }

    public static class GetSegmentResult {
        /** Identifier of the segments AB Test, if it is attached to one. */
        public String ABTestParent;
        /** Unique identifier for this segment. */
        public String Id;
        /** Segment name. */
        public String Name;
        
    }

    public static class GetSharedGroupDataRequest {
        /** If true, return the list of all members of the shared group. */
        public Boolean GetMembers;
        /**
         * Specific keys to retrieve from the shared group (if not specified, all keys will be returned, while an empty array
         * indicates that no keys should be returned).
         */
        public ArrayList Keys;
        /** Unique identifier for the shared group. */
        public String SharedGroupId;
        
    }

    public static class GetSharedGroupDataResult {
        /** Data for the requested keys. */
        public Map Data;
        /** List of PlayFabId identifiers for the members of this group, if requested. */
        public ArrayList Members;
        
    }

    /**
     * A store contains an array of references to items defined in one or more catalog versions of the game, along with the
     * prices for the item, in both real world and virtual currencies. These prices act as an override to any prices defined in
     * the catalog. In this way, the base definitions of the items may be defined in the catalog, with all associated
     * properties, while the pricing can be set for each store, as needed. This allows for subsets of goods to be defined for
     * different purposes (in order to simplify showing some, but not all catalog items to users, based upon different
     * characteristics), along with unique prices. Note that all prices defined in the catalog and store definitions for the
     * item are considered valid, and that a compromised client can be made to send a request for an item based upon any of
     * these definitions. If no price is specified in the store for an item, the price set in the catalog should be displayed
     * to the user.
     */
    public static class GetStoreItemsRequest {
        /** Catalog version to store items from. Use default catalog version if null */
        public String CatalogVersion;
        /** Unqiue identifier for the store which is being requested. */
        public String StoreId;
        
    }

    public static class GetStoreItemsResult {
        /** The base catalog that this store is a part of. */
        public String CatalogVersion;
        /** Additional data about the store. */
        public StoreMarketingModel MarketingData;
        /** How the store was last updated (Admin or a third party). */
        public SourceType Source;
        /** Array of items which can be purchased from this store. */
        @Unordered("ItemId")
        public ArrayList Store;
        /** The ID of this store. */
        public String StoreId;
        
    }

    /**
     * This query retrieves the current time from one of the servers in PlayFab. Please note that due to clock drift between
     * servers, there is a potential variance of up to 5 seconds.
     */
    public static class GetTimeRequest {
        
    }

    /** Time is always returned as Coordinated Universal Time (UTC). */
    public static class GetTimeResult {
        /** Current server time when the request was received, in UTC */
        public Date Time;
        
    }

    /**
     * This API is designed to return title specific values which can be read, but not written to, by the client. For example,
     * a developer could choose to store values which modify the user experience, such as enemy spawn rates, weapon strengths,
     * movement speeds, etc. This allows a developer to update the title without the need to create, test, and ship a new
     * build. Note that there may up to a minute delay in between updating title data and this API call returning the newest
     * value.
     */
    public static class GetTitleDataRequest {
        /** Specific keys to search for in the title data (leave null to get all keys) */
        public ArrayList Keys;
        
    }

    public static class GetTitleDataResult {
        /** a dictionary object of key / value pairs */
        public Map Data;
        
    }

    public static class GetTitleNewsRequest {
        /** Limits the results to the last n entries. Defaults to 10 if not set. */
        public Integer Count;
        
    }

    public static class GetTitleNewsResult {
        /** Array of news items. */
        public ArrayList News;
        
    }

    /**
     * An RSA CSP blob to be used to encrypt the payload of account creation requests when that API requires a signature
     * header. For example if Client/LoginWithCustomId requires signature headers but the player does not have an account yet
     * follow these steps: 1) Call Client/GetTitlePublicKey with one of the title's shared secrets. 2) Convert the Base64
     * encoded CSP blob to a byte array and create an RSA signing object. 3) Encrypt the UTF8 encoded JSON body of the
     * registration request and place the Base64 encoded result into the EncryptedRequest and with the TitleId field, all other
     * fields can be left empty when performing the API request. 4) Client receives authentication token as normal. Future
     * requests to LoginWithCustomId will require the X-PlayFab-Signature header.
     */
    public static class GetTitlePublicKeyRequest {
        /**
         * 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;
        /** The shared secret key for this title */
        public String TitleSharedSecret;
        
    }

    public static class GetTitlePublicKeyResult {
        /** Base64 encoded RSA CSP byte array blob containing the title's public RSA key */
        public String RSAPublicKey;
        
    }

    public static class GetTradeStatusRequest {
        /** Player who opened trade. */
        public String OfferingPlayerId;
        /** Trade identifier as returned by OpenTradeOffer. */
        public String TradeId;
        
    }

    public static class GetTradeStatusResponse {
        /** Information about the requested trade. */
        public TradeInfo Trade;
        
    }

    /**
     * Data is stored as JSON key-value pairs. Every time the data is updated via any source, the version counter is
     * incremented. If the Version parameter is provided, then this call will only return data if the current version on the
     * system is greater than the value provided. If the Keys parameter is provided, the data object returned will only contain
     * the data specific to the indicated Keys. Otherwise, the full set of custom user data will be returned.
     */
    public static class GetUserDataRequest {
        /**
         * The version that currently exists according to the caller. The call will return the data for all of the keys if the
         * version in the system is greater than this.
         */
        public Long IfChangedFromDataVersion;
        /** List of unique keys to load from. */
        public ArrayList Keys;
        /**
         * Unique PlayFab identifier of the user to load data for. Optional, defaults to yourself if not set. When specified to a
         * PlayFab id of another player, then this will only return public keys for that account.
         */
        public String PlayFabId;
        
    }

    public static class GetUserDataResult {
        /** User specific data for this title. */
        public Map Data;
        /**
         * Indicates the current version of the data that has been set. This is incremented with every set call for that type of
         * data (read-only, internal, etc). This version can be provided in Get calls to find updated data.
         */
        public Long DataVersion;
        
    }

    public static class GetUserInventoryRequest {
        
    }

    /**
     * All items currently in the user inventory will be returned, irrespective of how they were acquired (via purchasing,
     * grants, coupons, etc.). Items that are expired, fully consumed, or are no longer valid are not considered to be in the
     * user's current inventory, and so will not be not included.
     */
    public static class GetUserInventoryResult {
        /** Array of inventory items belonging to the user. */
        @Unordered("ItemInstanceId")
        public ArrayList Inventory;
        /** Array of virtual currency balance(s) belonging to the user. */
        public Map VirtualCurrency;
        /** Array of remaining times and timestamps for virtual currencies. */
        public Map VirtualCurrencyRechargeTimes;
        
    }

    /** Requires the SHA256 hash of the user's public key. */
    public static class GetWindowsHelloChallengeRequest {
        /** SHA256 hash of the PublicKey generated by Windows Hello. */
        public String PublicKeyHint;
        /**
         * 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;
        
    }

    public static class GetWindowsHelloChallengeResponse {
        /** Server generated challenge to be signed by the user. */
        public String Challenge;
        
    }

    public static class GooglePlayFabIdPair {
        /** Unique Google identifier for a user. */
        public String GoogleId;
        /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Google identifier. */
        public String PlayFabId;
        
    }

    /**
     * Grants a character to the user of the type specified by the item ID. The user must already have an instance of this item
     * in their inventory in order to allow character creation. This item can come from a purchase or grant, which must be done
     * before calling to create the character.
     */
    public static class GrantCharacterToUserRequest {
        /** Catalog version from which items are to be granted. */
        public String CatalogVersion;
        /** Non-unique display name of the character being granted (1-40 characters in length). */
        public String CharacterName;
        /**
         * Catalog item identifier of the item in the user's inventory that corresponds to the character in the catalog to be
         * created.
         */
        public String ItemId;
        
    }

    public static class GrantCharacterToUserResult {
        /** Unique identifier tagged to this character. */
        public String CharacterId;
        /** Type of character that was created. */
        public String CharacterType;
        /** Indicates whether this character was created successfully. */
        public Boolean Result;
        
    }

    /**
     * A unique instance of an item in a user's inventory. Note, to retrieve additional information for an item such as Tags,
     * Description that are the same across all instances of the item, a call to GetCatalogItems is required. The ItemID of can
     * be matched to a catalog entry, which contains the additional information. Also note that Custom Data is only set when
     * the User's specific instance has updated the CustomData via a call to UpdateUserInventoryItemCustomData. Other fields
     * such as UnitPrice and UnitCurrency are only set when the item was granted via a purchase.
     */
    public static class ItemInstance implements Comparable {
        /** Game specific comment associated with this instance when it was added to the user inventory. */
        public String Annotation;
        /** Array of unique items that were awarded when this catalog item was purchased. */
        public ArrayList BundleContents;
        /**
         * Unique identifier for the parent inventory item, as defined in the catalog, for object which were added from a bundle or
         * container.
         */
        public String BundleParent;
        /** Catalog version for the inventory item, when this instance was created. */
        public String CatalogVersion;
        /**
         * A set of custom key-value pairs on the instance of the inventory item, which is not to be confused with the catalog
         * item's custom data.
         */
        public Map CustomData;
        /** CatalogItem.DisplayName at the time this item was purchased. */
        public String DisplayName;
        /** Timestamp for when this instance will expire. */
        public Date Expiration;
        /** Class name for the inventory item, as defined in the catalog. */
        public String ItemClass;
        /** Unique identifier for the inventory item, as defined in the catalog. */
        public String ItemId;
        /** Unique item identifier for this specific instance of the item. */
        public String ItemInstanceId;
        /** Timestamp for when this instance was purchased. */
        public Date PurchaseDate;
        /** Total number of remaining uses, if this is a consumable item. */
        public Integer RemainingUses;
        /** Currency type for the cost of the catalog item. Not available when granting items. */
        public String UnitCurrency;
        /** Cost of the catalog item in the given currency. Not available when granting items. */
        public Long UnitPrice;
        /** The number of uses that were added or removed to this item in this call. */
        public Integer UsesIncrementedBy;
        
        public int compareTo(ItemInstance other) {
            if (other == null || other.ItemInstanceId == null) return 1;
            if (ItemInstanceId == null) return -1;
            return ItemInstanceId.compareTo(other.ItemInstanceId);
        }
    }

    public static class ItemPurchaseRequest {
        /** Title-specific text concerning this purchase. */
        public String Annotation;
        /** Unique ItemId of the item to purchase. */
        public String ItemId;
        /** How many of this item to purchase. Min 1, maximum 25. */
        public Long Quantity;
        /** Items to be upgraded as a result of this purchase (upgraded items are hidden, as they are "replaced" by the new items). */
        public ArrayList UpgradeFromItems;
        
    }

    public static class KongregatePlayFabIdPair {
        /** Unique Kongregate identifier for a user. */
        public String KongregateId;
        /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Kongregate identifier. */
        public String PlayFabId;
        
    }

    public static class LinkAndroidDeviceIDRequest {
        /** Specific model of the user's device. */
        public String AndroidDevice;
        /** Android device identifier for the user's device. */
        public String AndroidDeviceId;
        /** If another user is already linked to the device, unlink the other user and re-link. */
        public Boolean ForceLink;
        /** Specific Operating System version for the user's device. */
        public String OS;
        
    }

    public static class LinkAndroidDeviceIDResult {
        
    }

    public static class LinkAppleRequest {
        /** If another user is already linked to a specific Apple account, unlink the other user and re-link. */
        public Boolean ForceLink;
        /**
         * The JSON Web token (JWT) returned by Apple after login. Represented as the identityToken field in the authorization
         * credential payload. Used to validate the request and find the user ID (Apple subject) to link with.
         */
        public String IdentityToken;
        
    }

    public static class LinkCustomIDRequest {
        /** Custom unique identifier for the user, generated by the title. */
        public String CustomId;
        /** If another user is already linked to the custom ID, unlink the other user and re-link. */
        public Boolean ForceLink;
        
    }

    public static class LinkCustomIDResult {
        
    }

    public static class LinkedPlatformAccountModel {
        /** Linked account email of the user on the platform, if available */
        public String Email;
        /** Authentication platform */
        public LoginIdentityProvider Platform;
        /** Unique account identifier of the user on the platform */
        public String PlatformUserId;
        /** Linked account username of the user on the platform, if available */
        public String Username;
        
    }

    /**
     * Facebook sign-in is accomplished using the Facebook User Access Token. More information on the Token can be found in the
     * Facebook developer documentation (https://developers.facebook.com/docs/facebook-login/access-tokens/). In Unity, for
     * example, the Token is available as AccessToken in the Facebook SDK ScriptableObject FB. Note that titles should never
     * re-use the same Facebook applications between PlayFab Title IDs, as Facebook provides unique user IDs per application
     * and doing so can result in issues with the Facebook ID for the user in their PlayFab account information. If you must
     * re-use an application in a new PlayFab Title ID, please be sure to first unlink all accounts from Facebook, or delete
     * all users in the first Title ID.
     */
    public static class LinkFacebookAccountRequest {
        /** Unique identifier from Facebook for the user. */
        public String AccessToken;
        /** If another user is already linked to the account, unlink the other user and re-link. */
        public Boolean ForceLink;
        
    }

    public static class LinkFacebookAccountResult {
        
    }

    public static class LinkFacebookInstantGamesIdRequest {
        /** Facebook Instant Games signature for the user. */
        public String FacebookInstantGamesSignature;
        /** If another user is already linked to the Facebook Instant Games ID, unlink the other user and re-link. */
        public Boolean ForceLink;
        
    }

    public static class LinkFacebookInstantGamesIdResult {
        
    }

    public static class LinkGameCenterAccountRequest {
        /** If another user is already linked to the account, unlink the other user and re-link. */
        public Boolean ForceLink;
        /** Game Center identifier for the player account to be linked. */
        public String GameCenterId;
        /** The URL for the public encryption key that will be used to verify the signature. */
        public String PublicKeyUrl;
        /** A random value used to compute the hash and keep it randomized. */
        public String Salt;
        /** The verification signature of the authentication payload. */
        public String Signature;
        /**
         * The integer representation of date and time that the signature was created on. PlayFab will reject authentication
         * signatures not within 10 minutes of the server's current time.
         */
        public String Timestamp;
        
    }

    public static class LinkGameCenterAccountResult {
        
    }

    /**
     * Google sign-in is accomplished by obtaining a Google OAuth 2.0 credential using the Google sign-in for Android APIs on
     * the device and passing it to this API.
     */
    public static class LinkGoogleAccountRequest {
        /** If another user is already linked to the account, unlink the other user and re-link. */
        public Boolean ForceLink;
        /**
         * Server authentication code obtained on the client by calling getServerAuthCode()
         * (https://developers.google.com/identity/sign-in/android/offline-access) from Google Play for the user.
         */
        public String ServerAuthCode;
        
    }

    public static class LinkGoogleAccountResult {
        
    }

    public static class LinkIOSDeviceIDRequest {
        /** Vendor-specific iOS identifier for the user's device. */
        public String DeviceId;
        /** Specific model of the user's device. */
        public String DeviceModel;
        /** If another user is already linked to the device, unlink the other user and re-link. */
        public Boolean ForceLink;
        /** Specific Operating System version for the user's device. */
        public String OS;
        
    }

    public static class LinkIOSDeviceIDResult {
        
    }

    public static class LinkKongregateAccountRequest {
        /** Valid session auth ticket issued by Kongregate */
        public String AuthTicket;
        /** If another user is already linked to the account, unlink the other user and re-link. */
        public Boolean ForceLink;
        /** Numeric user ID assigned by Kongregate */
        public String KongregateId;
        
    }

    public static class LinkKongregateAccountResult {
        
    }

    public static class LinkNintendoSwitchDeviceIdRequest {
        /** If another user is already linked to the Nintendo Switch Device ID, unlink the other user and re-link. */
        public Boolean ForceLink;
        /** Nintendo Switch unique identifier for the user's device. */
        public String NintendoSwitchDeviceId;
        
    }

    public static class LinkNintendoSwitchDeviceIdResult {
        
    }

    public static class LinkOpenIdConnectRequest {
        /** A name that identifies which configured OpenID Connect provider relationship to use. Maximum 100 characters. */
        public String ConnectionId;
        /** If another user is already linked to a specific OpenId Connect user, unlink the other user and re-link. */
        public Boolean ForceLink;
        /**
         * The JSON Web token (JWT) returned by the identity provider after login. Represented as the id_token field in the
         * identity provider's response. Used to validate the request and find the user ID (OpenID Connect subject) to link with.
         */
        public String IdToken;
        
    }

    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
     * authentication to work, the title must be configured with the Steam Application ID and Publisher Key in the PlayFab Game
     * Manager (under Properties). Information on creating a Publisher Key (referred to as the Secret Key in PlayFab) for your
     * title can be found here: https://partner.steamgames.com/documentation/webapi#publisherkey.
     */
    public static class LinkSteamAccountRequest {
        /** If another user is already linked to the account, unlink the other user and re-link. */
        public Boolean ForceLink;
        /**
         * Authentication token for the user, returned as a byte array from Steam, and converted to a string (for example, the byte
         * 0x08 should become "08").
         */
        public String SteamTicket;
        
    }

    public static class LinkSteamAccountResult {
        
    }

    public static class LinkTwitchAccountRequest {
        /** Valid token issued by Twitch */
        public String AccessToken;
        /** If another user is already linked to the account, unlink the other user and re-link. */
        public Boolean ForceLink;
        
    }

    public static class LinkTwitchAccountResult {
        
    }

    /** PublicKey must be generated using the Windows Hello Passport service. */
    public static class LinkWindowsHelloAccountRequest {
        /** Device name. */
        public String DeviceName;
        /** If another user is already linked to the account, unlink the other user and re-link. */
        public Boolean ForceLink;
        /** PublicKey generated by Windows Hello. */
        public String PublicKey;
        /** Player's user named used by Windows Hello. */
        public String UserName;
        
    }

    public static class LinkWindowsHelloAccountResponse {
        
    }

    public static class LinkXboxAccountRequest {
        /** If another user is already linked to the account, unlink the other user and re-link. */
        public Boolean ForceLink;
        /** Token provided by the Xbox Live SDK/XDK method GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", ""). */
        public String XboxToken;
        
    }

    public static class LinkXboxAccountResult {
        
    }

    /** Returns a list of every character that currently belongs to a user. */
    public static class ListUsersCharactersRequest {
        /** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
        public String PlayFabId;
        
    }

    public static class ListUsersCharactersResult {
        /** The requested list of characters. */
        public ArrayList Characters;
        
    }

    public static class LocationModel {
        /** City name. */
        public String City;
        /** The two-character continent code for this location */
        public ContinentCode ContinentCode;
        /** The two-character ISO 3166-1 country code for the country associated with the location */
        public CountryCode CountryCode;
        /** Latitude coordinate of the geographic location. */
        public Double Latitude;
        /** Longitude coordinate of the geographic location. */
        public Double Longitude;
        
    }

    public static enum LoginIdentityProvider {
        Unknown,
        PlayFab,
        Custom,
        GameCenter,
        GooglePlay,
        Steam,
        XBoxLive,
        PSN,
        Kongregate,
        Facebook,
        IOSDevice,
        AndroidDevice,
        Twitch,
        WindowsHello,
        GameServer,
        CustomServer,
        NintendoSwitch,
        FacebookInstantGames,
        OpenIdConnect,
        Apple,
        NintendoSwitchAccount
    }

    public static class LoginResult {
        /**
         * If LoginTitlePlayerAccountEntity flag is set on the login request the title_player_account will also be logged in and
         * returned.
         */
        public EntityTokenResponse EntityToken;
        /** Results for requested info. */
        public GetPlayerCombinedInfoResultPayload InfoResultPayload;
        /** The time of this user's previous login. If there was no previous login, then it's DateTime.MinValue */
        public Date LastLoginTime;
        /** True if the account was newly created on this login. */
        public Boolean NewlyCreated;
        /** Player's unique PlayFabId. */
        public String PlayFabId;
        /** Unique token authorizing the user and game at the server level, for the current session. */
        public String SessionTicket;
        /** Settings specific to this user. */
        public UserSettings SettingsForUser;
        /** The experimentation treatments for this user at the time of login. */
        public TreatmentAssignment TreatmentAssignment;
        
    }

    /**
     * On Android devices, the recommendation is to use the Settings.Secure.ANDROID_ID as the AndroidDeviceId, as described in
     * this blog post (http://android-developers.blogspot.com/2011/03/identifying-app-installations.html). More information on
     * this identifier can be found in the Android documentation
     * (http://developer.android.com/reference/android/provider/Settings.Secure.html). If this is the first time a user has
     * signed in with the Android device and CreateAccount is set to true, a new PlayFab account will be created and linked to
     * the Android device ID. In this case, no email or username will be associated with the PlayFab account. Otherwise, if no
     * PlayFab account is linked to the Android device, an error indicating this will be returned, so that the title can guide
     * the user through creation of a PlayFab account. Please note that while multiple devices of this type can be linked to a
     * single user account, only the one most recently used to login (or most recently linked) will be reflected in the user's
     * account information. We will be updating to show all linked devices in a future release.
     */
    public static class LoginWithAndroidDeviceIDRequest {
        /** Specific model of the user's device. */
        public String AndroidDevice;
        /** Android device identifier for the user's device. */
        public String AndroidDeviceId;
        /** 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;
        /** Specific Operating System version for the user's device. */
        public String OS;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * 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;
        
    }

    public static class LoginWithAppleRequest {
        /** 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;
        /**
         * The JSON Web token (JWT) returned by Apple after login. Represented as the identityToken field in the authorization
         * credential payload.
         */
        public String IdentityToken;
        /** Flags for which pieces of info to return for the user. */
        public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * 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;
        
    }

    /**
     * It is highly recommended that developers ensure that it is extremely unlikely that a customer could generate an ID which
     * is already in use by another customer. If this is the first time a user has signed in with the Custom ID and
     * CreateAccount is set to true, a new PlayFab account will be created and linked to the Custom ID. In this case, no email
     * or username will be associated with the PlayFab account. Otherwise, if no PlayFab account is linked to the Custom ID, an
     * error indicating this will be returned, so that the title can guide the user through creation of a PlayFab account.
     */
    public static class LoginWithCustomIDRequest {
        /** Automatically create a PlayFab account if one is not currently linked to this ID. */
        public Boolean CreateAccount;
        /** Custom unique identifier for the user, generated by the title. */
        public String CustomId;
        /** 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;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * 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;
        
    }

    /**
     * Email address and password lengths are provided for information purposes. The server will validate that data passed in
     * conforms to the field definition and report errors appropriately. It is recommended that developers not perform this
     * validation locally, so that future updates do not require client updates.
     */
    public static class LoginWithEmailAddressRequest {
        /** Email address for the account. */
        public String Email;
        /** Flags for which pieces of info to return for the user. */
        public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
        /** Password for the PlayFab account (6-100 characters) */
        public String Password;
        /**
         * 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;
        
    }

    public static class LoginWithFacebookInstantGamesIdRequest {
        /** 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;
        /** Facebook Instant Games signature for the user. */
        public String FacebookInstantGamesSignature;
        /** Flags for which pieces of info to return for the user. */
        public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * 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;
        
    }

    /**
     * Facebook sign-in is accomplished using the Facebook User Access Token. More information on the Token can be found in the
     * Facebook developer documentation (https://developers.facebook.com/docs/facebook-login/access-tokens/). In Unity, for
     * example, the Token is available as AccessToken in the Facebook SDK ScriptableObject FB. If this is the first time a user
     * has signed in with the Facebook account and CreateAccount is set to true, a new PlayFab account will be created and
     * linked to the provided account's Facebook ID. In this case, no email or username will be associated with the PlayFab
     * account. Otherwise, if no PlayFab account is linked to the Facebook account, an error indicating this will be returned,
     * so that the title can guide the user through creation of a PlayFab account. Note that titles should never re-use the
     * same Facebook applications between PlayFab Title IDs, as Facebook provides unique user IDs per application and doing so
     * can result in issues with the Facebook ID for the user in their PlayFab account information. If you must re-use an
     * application in a new PlayFab Title ID, please be sure to first unlink all accounts from Facebook, or delete all users in
     * the first Title ID.
     */
    public static class LoginWithFacebookRequest {
        /** Unique identifier from Facebook for the user. */
        public String AccessToken;
        /** 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;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * 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;
        
    }

    /**
     * The Game Center player identifier
     * (https://developer.apple.com/library/ios/documentation/Accounts/Reference/ACAccountClassRef/index.html#//apple_ref/occ/instp/ACAccount/identifier)
     * is a generated string which is stored on the local device. As with device identifiers, care must be taken to never
     * expose a player's Game Center identifier to end users, as that could result in a user's account being compromised. If
     * this is the first time a user has signed in with Game Center and CreateAccount is set to true, a new PlayFab account
     * will be created and linked to the Game Center identifier. In this case, no email or username will be associated with the
     * PlayFab account. Otherwise, if no PlayFab account is linked to the Game Center 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 LoginWithGameCenterRequest {
        /** 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;
        /** Unique Game Center player id. */
        public String PlayerId;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /** The URL for the public encryption key that will be used to verify the signature. */
        public String PublicKeyUrl;
        /** A random value used to compute the hash and keep it randomized. */
        public String Salt;
        /** The verification signature of the authentication payload. */
        public String Signature;
        /**
         * The integer representation of date and time that the signature was created on. PlayFab will reject authentication
         * signatures not within 10 minutes of the server's current time.
         */
        public String Timestamp;
        /**
         * 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;
        
    }

    /**
     * Google sign-in is accomplished by obtaining a Google OAuth 2.0 credential using the Google sign-in for Android APIs on
     * the device and passing it to this API. If this is the first time a user has signed in with the Google account and
     * CreateAccount is set to true, a new PlayFab account will be created and linked to the Google account. Otherwise, if no
     * PlayFab account is linked to the Google account, an error indicating this will be returned, so that the title can guide
     * the user through creation of a PlayFab account. The current (recommended) method for obtaining a Google account
     * credential in an Android application is to call GoogleSignInAccount.getServerAuthCode() and send the auth code as the
     * ServerAuthCode parameter of this API. Before doing this, you must create an OAuth 2.0 web application client ID in the
     * Google API Console and configure its client ID and secret in the PlayFab Game Manager Google Add-on for your title. This
     * method does not require prompting of the user for additional Google account permissions, resulting in a user experience
     * with the least possible friction. For more information about obtaining the server auth code, see
     * https://developers.google.com/identity/sign-in/android/offline-access. The previous (deprecated) method was to obtain an
     * OAuth access token by calling GetAccessToken() on the client and passing it as the AccessToken parameter to this API.
     * for the with the Google OAuth 2.0 Access Token. More information on this change can be found in the Google developer
     * documentation (https://android-developers.googleblog.com/2016/01/play-games-permissions-are-changing-in.html).
     */
    public static class LoginWithGoogleAccountRequest {
        /** 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;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * OAuth 2.0 server authentication code obtained on the client by calling the getServerAuthCode()
         * (https://developers.google.com/identity/sign-in/android/offline-access) Google client API.
         */
        public String ServerAuthCode;
        /**
         * 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;
        
    }

    /**
     * On iOS devices, the identifierForVendor
     * (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDevice_Class/index.html#//apple_ref/occ/instp/UIDevice/identifierForVendor)
     * must be used as the DeviceId, as the UIDevice uniqueIdentifier has been deprecated as of iOS 5, and use of the
     * advertisingIdentifier for this purpose will result in failure of Apple's certification process. If this is the first
     * time a user has signed in with the iOS device and CreateAccount is set to true, a new PlayFab account will be created
     * and linked to the vendor-specific iOS device ID. In this case, no email or username will be associated with the PlayFab
     * account. Otherwise, if no PlayFab account is linked to the iOS device, an error indicating this will be returned, so
     * that the title can guide the user through creation of a PlayFab account. Please note that while multiple devices of this
     * type can be linked to a single user account, only the one most recently used to login (or most recently linked) will be
     * reflected in the user's account information. We will be updating to show all linked devices in a future release.
     */
    public static class LoginWithIOSDeviceIDRequest {
        /** Automatically create a PlayFab account if one is not currently linked to this ID. */
        public Boolean CreateAccount;
        /** Vendor-specific iOS identifier for the user's device. */
        public String DeviceId;
        /** Specific model of the user's device. */
        public String DeviceModel;
        /** 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;
        /** Specific Operating System version for the user's device. */
        public String OS;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * 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;
        
    }

    /**
     * More details regarding Kongregate and their game authentication system can be found at
     * http://developers.kongregate.com/docs/virtual-goods/authentication. Developers must provide the Kongregate user ID and
     * auth token that are generated using the Kongregate client library. PlayFab will combine these identifiers with the
     * title's unique Kongregate app ID to log the player into the Kongregate system. If CreateAccount is set to true and there
     * is not already a user matched to this Kongregate ID, then PlayFab will create a new account for this user and link the
     * ID. In this case, no email or username will be associated with the PlayFab account. If there is already a different
     * PlayFab user linked with this account, then an error will be returned.
     */
    public static class LoginWithKongregateRequest {
        /** Token issued by Kongregate's client API for the user. */
        public String AuthTicket;
        /** 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;
        /** Numeric user ID assigned by Kongregate */
        public String KongregateId;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * 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;
        
    }

    public static class LoginWithNintendoSwitchDeviceIdRequest {
        /** 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;
        /** Nintendo Switch unique identifier for the user's device. */
        public String NintendoSwitchDeviceId;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * 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;
        
    }

    public static class LoginWithOpenIdConnectRequest {
        /** A name that identifies which configured OpenID Connect provider relationship to use. Maximum 100 characters. */
        public String ConnectionId;
        /** 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;
        /**
         * The JSON Web token (JWT) returned by the identity provider after login. Represented as the id_token field in the
         * identity provider's response.
         */
        public String IdToken;
        /** Flags for which pieces of info to return for the user. */
        public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * 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;
        
    }

    /**
     * Username and password lengths are provided for information purposes. The server will validate that data passed in
     * conforms to the field definition and report errors appropriately. It is recommended that developers not perform this
     * validation locally, so that future updates to the username or password do not require client updates.
     */
    public static class LoginWithPlayFabRequest {
        /** Flags for which pieces of info to return for the user. */
        public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
        /** Password for the PlayFab account (6-100 characters) */
        public String Password;
        /**
         * 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;
        /** PlayFab username for the account. */
        public String Username;
        
    }

    /**
     * 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;
        /** 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
     * authentication to work, the title must be configured with the Steam Application ID and Web API Key in the PlayFab Game
     * Manager (under Steam in the Add-ons Marketplace). You can obtain a Web API Key from the Permissions page of any Group
     * associated with your App ID in the Steamworks site. If this is the first time a user has signed in with the Steam
     * account and CreateAccount is set to true, a new PlayFab account will be created and linked to the provided account's
     * Steam ID. In this case, no email or username will be associated with the PlayFab account. Otherwise, if no PlayFab
     * account is linked to the Steam 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 LoginWithSteamRequest {
        /** 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;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * Authentication token for the user, returned as a byte array from Steam, and converted to a string (for example, the byte
         * 0x08 should become "08").
         */
        public String SteamTicket;
        /**
         * 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;
        
    }

    /**
     * More details regarding Twitch and their authentication system can be found at
     * https://github.com/justintv/Twitch-API/blob/master/authentication.md. Developers must provide the Twitch access token
     * that is generated using one of the Twitch authentication flows. PlayFab will use the title's unique Twitch Client ID to
     * authenticate the token and log in to the PlayFab system. If CreateAccount is set to true and there is not already a user
     * matched to the Twitch username that generated the token, then PlayFab will create a new account for this user and link
     * the ID. In this case, no email or username will be associated with the PlayFab account. If there is already a different
     * PlayFab user linked with this account, then an error will be returned.
     */
    public static class LoginWithTwitchRequest {
        /** Token issued by Twitch's API for the user. */
        public String AccessToken;
        /** 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;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * 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;
        
    }

    /** Requires both the SHA256 hash of the user's public key as well as the signed response from GetWindowsHelloChallenge */
    public static class LoginWithWindowsHelloRequest {
        /** The signed response from the user for the Challenge. */
        public String ChallengeSignature;
        /** Flags for which pieces of info to return for the user. */
        public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
        /** SHA256 hash of the PublicKey generated by Windows Hello. */
        public String PublicKeyHint;
        /**
         * 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;
        
    }

    /**
     * If this is the first time a user has signed in with the Xbox Live account and CreateAccount is set to true, a new
     * PlayFab account will be created and linked to the Xbox Live account. In this case, no email or username will be
     * associated with the PlayFab account. Otherwise, if no PlayFab account is linked to the Xbox Live 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 LoginWithXboxRequest {
        /** 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;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * 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;
        /** Token provided by the Xbox Live SDK/XDK method GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", ""). */
        public String XboxToken;
        
    }

    public static class LogStatement {
        /** Optional object accompanying the message as contextual information */
        public Object Data;
        /** 'Debug', 'Info', or 'Error' */
        public String Level;
        public String Message;
        
    }

    public static class MatchmakeRequest {
        /** Build version to match against. [Note: Required if LobbyId is not specified] */
        public String BuildVersion;
        /** Character to use for stats based matching. Leave null to use account stats. */
        public String CharacterId;
        /** Game mode to match make against. [Note: Required if LobbyId is not specified] */
        public String GameMode;
        /** Lobby identifier to match make against. This is used to select a specific Game Server Instance. */
        public String LobbyId;
        /** Region to match make against. [Note: Required if LobbyId is not specified] */
        public Region Region;
        /** Start a game session if one with an open slot is not found. Defaults to true. */
        public Boolean StartNewIfNoneFound;
        /** Player statistic to use in finding a match. May be null for no stat-based matching. */
        public String StatisticName;
        /** Filter to include and/or exclude Game Server Instances associated with certain Tags */
        public CollectionFilter TagFilter;
        
    }

    public static class MatchmakeResult {
        /** timestamp for when the server will expire, if applicable */
        public String Expires;
        /** unique lobby identifier of the server matched */
        public String LobbyID;
        /** time in milliseconds the application is configured to wait on matchmaking results */
        public Integer PollWaitTimeMS;
        /** IPV4 address of the server */
        public String ServerIPV4Address;
        /** IPV6 address of the server */
        public String ServerIPV6Address;
        /** port number to use for non-http communications with the server */
        public Integer ServerPort;
        /** Public DNS name (if any) of the server */
        public String ServerPublicDNSName;
        /** result of match making process */
        public MatchmakeStatus Status;
        /** server authorization ticket (used by RedeemMatchmakerTicket to validate user insertion into the game) */
        public String Ticket;
        
    }

    public static enum MatchmakeStatus {
        Complete,
        Waiting,
        GameNotFound,
        NoAvailableSlots,
        SessionClosed
    }

    public static class MembershipModel {
        /** Whether this membership is active. That is, whether the MembershipExpiration time has been reached. */
        public Boolean IsActive;
        /** The time this membership expires */
        public Date MembershipExpiration;
        /** The id of the membership */
        public String MembershipId;
        /**
         * Membership expirations can be explicitly overridden (via game manager or the admin api). If this membership has been
         * overridden, this will be the new expiration time.
         */
        public Date OverrideExpiration;
        /** The list of subscriptions that this player has for this membership */
        public ArrayList Subscriptions;
        
    }

    public static class ModifyUserVirtualCurrencyResult {
        /** Balance of the virtual currency after modification. */
        public Integer Balance;
        /**
         * Amount added or subtracted from the user's virtual currency. Maximum VC balance is Int32 (2,147,483,647). Any increase
         * over this value will be discarded.
         */
        public Integer BalanceChange;
        /** User currency was subtracted from. */
        public String PlayFabId;
        /** Name of the virtual currency which was modified. */
        public String VirtualCurrency;
        
    }

    public static class NintendoSwitchPlayFabIdPair {
        /** Unique Nintendo Switch Device identifier for a user. */
        public String NintendoSwitchDeviceId;
        /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Nintendo Switch Device identifier. */
        public String PlayFabId;
        
    }

    public static class OpenTradeRequest {
        /**
         * Players who are allowed to accept the trade. If null, the trade may be accepted by any player. If empty, the trade may
         * not be accepted by any player.
         */
        public ArrayList AllowedPlayerIds;
        /** Player inventory items offered for trade. If not set, the trade is effectively a gift request */
        public ArrayList OfferedInventoryInstanceIds;
        /** Catalog items accepted for the trade. If not set, the trade is effectively a gift. */
        public ArrayList RequestedCatalogItemIds;
        
    }

    public static class OpenTradeResponse {
        /** The information about the trade that was just opened. */
        public TradeInfo Trade;
        
    }

    /**
     * This is the second step in the purchasing process, initiating the purchase transaction with the payment provider (if
     * applicable). For payment provider scenarios, the title should next present the user with the payment provider'sinterface
     * for payment. Once the player has completed the payment with the provider, the title should call ConfirmPurchase
     * tofinalize the process and add the appropriate items to the player inventory.
     */
    public static class PayForPurchaseRequest {
        /** Currency to use to fund the purchase. */
        public String Currency;
        /** Purchase order identifier returned from StartPurchase. */
        public String OrderId;
        /** Payment provider to use to fund the purchase. */
        public String ProviderName;
        /** Payment provider transaction identifier. Required for Facebook Payments. */
        public String ProviderTransactionId;
        
    }

    /**
     * For web-based payment providers, this operation returns the URL to which the user should be directed inorder to approve
     * the purchase. Items added to the user inventory as a result of this operation will be marked as unconfirmed.
     */
    public static class PayForPurchaseResult {
        /** Local credit applied to the transaction (provider specific). */
        public Long CreditApplied;
        /** Purchase order identifier. */
        public String OrderId;
        /** Provider used for the transaction. */
        public String ProviderData;
        /** A token generated by the provider to authenticate the request (provider-specific). */
        public String ProviderToken;
        /** URL to the purchase provider page that details the purchase. */
        public String PurchaseConfirmationPageURL;
        /** Currency for the transaction, may be a virtual currency or real money. */
        public String PurchaseCurrency;
        /** Cost of the transaction. */
        public Long PurchasePrice;
        /** Status of the transaction. */
        public TransactionStatus Status;
        /** Virtual currencies granted by the transaction, if any. */
        public Map VCAmount;
        /** Current virtual currency balances for the user. */
        public Map VirtualCurrency;
        
    }

    public static class PaymentOption {
        /** Specific currency to use to fund the purchase. */
        public String Currency;
        /** Amount of the specified currency needed for the purchase. */
        public Long Price;
        /** Name of the purchase provider for this option. */
        public String ProviderName;
        /** Amount of existing credit the user has with the provider. */
        public Long StoreCredit;
        
    }

    public static class PlayerLeaderboardEntry {
        /** Title-specific display name of the user for this leaderboard entry. */
        public String DisplayName;
        /** PlayFab unique identifier of the user for this leaderboard entry. */
        public String PlayFabId;
        /** User's overall position in the leaderboard. */
        public Integer Position;
        /** The profile of the user, if requested. */
        public PlayerProfileModel Profile;
        /** Specific value of the user's statistic. */
        public Integer StatValue;
        
    }

    public static class PlayerProfileModel {
        /** List of advertising campaigns the player has been attributed to */
        public ArrayList AdCampaignAttributions;
        /** URL of the player's avatar image */
        public String AvatarUrl;
        /** If the player is currently banned, the UTC Date when the ban expires */
        public Date BannedUntil;
        /** List of all contact email info associated with the player account */
        public ArrayList ContactEmailAddresses;
        /** Player record created */
        public Date Created;
        /** Player display name */
        public String DisplayName;
        /** List of experiment variants for the player. */
        public ArrayList ExperimentVariants;
        /** UTC time when the player most recently logged in to the title */
        public Date LastLogin;
        /** List of all authentication systems linked to this player account */
        public ArrayList LinkedAccounts;
        /** List of geographic locations from which the player has logged in to the title */
        public ArrayList Locations;
        /** List of memberships for the player, along with whether are expired. */
        public ArrayList Memberships;
        /** Player account origination */
        public LoginIdentityProvider Origination;
        /** PlayFab player account unique identifier */
        public String PlayerId;
        /** Publisher this player belongs to */
        public String PublisherId;
        /** List of configured end points registered for sending the player push notifications */
        public ArrayList PushNotificationRegistrations;
        /** List of leaderboard statistic values for the player */
        public ArrayList Statistics;
        /** List of player's tags for segmentation */
        public ArrayList Tags;
        /** Title ID this player profile applies to */
        public String TitleId;
        /**
         * Sum of the player's purchases made with real-money currencies, converted to US dollars equivalent and represented as a
         * whole number of cents (1/100 USD). For example, 999 indicates nine dollars and ninety-nine cents.
         */
        public Long TotalValueToDateInUSD;
        /** List of the player's lifetime purchase totals, summed by real-money currency */
        public ArrayList ValuesToDate;
        
    }

    public static class PlayerProfileViewConstraints {
        /** Whether to show player's avatar URL. Defaults to false */
        public Boolean ShowAvatarUrl;
        /** Whether to show the banned until time. Defaults to false */
        public Boolean ShowBannedUntil;
        /** Whether to show campaign attributions. Defaults to false */
        public Boolean ShowCampaignAttributions;
        /** Whether to show contact email addresses. Defaults to false */
        public Boolean ShowContactEmailAddresses;
        /** Whether to show the created date. Defaults to false */
        public Boolean ShowCreated;
        /** Whether to show the display name. Defaults to false */
        public Boolean ShowDisplayName;
        /** Whether to show player's experiment variants. Defaults to false */
        public Boolean ShowExperimentVariants;
        /** Whether to show the last login time. Defaults to false */
        public Boolean ShowLastLogin;
        /** Whether to show the linked accounts. Defaults to false */
        public Boolean ShowLinkedAccounts;
        /** Whether to show player's locations. Defaults to false */
        public Boolean ShowLocations;
        /** Whether to show player's membership information. Defaults to false */
        public Boolean ShowMemberships;
        /** Whether to show origination. Defaults to false */
        public Boolean ShowOrigination;
        /** Whether to show push notification registrations. Defaults to false */
        public Boolean ShowPushNotificationRegistrations;
        /** Reserved for future development */
        public Boolean ShowStatistics;
        /** Whether to show tags. Defaults to false */
        public Boolean ShowTags;
        /** Whether to show the total value to date in usd. Defaults to false */
        public Boolean ShowTotalValueToDateInUsd;
        /** Whether to show the values to date. Defaults to false */
        public Boolean ShowValuesToDate;
        
    }

    public static class PlayerStatisticVersion {
        /** time when the statistic version became active */
        public Date ActivationTime;
        /** time when the statistic version became inactive due to statistic version incrementing */
        public Date DeactivationTime;
        /** time at which the statistic version was scheduled to become active, based on the configured ResetInterval */
        public Date ScheduledActivationTime;
        /** time at which the statistic version was scheduled to become inactive, based on the configured ResetInterval */
        public Date ScheduledDeactivationTime;
        /** name of the statistic when the version became active */
        public String StatisticName;
        /** version of the statistic */
        public Long Version;
        
    }

    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 being a distinct add).
     */
    public static class PurchaseItemRequest {
        /** Catalog version for the items to be purchased (defaults to most recent version. */
        public String CatalogVersion;
        /** Unique PlayFab assigned ID for a specific character owned by a user */
        public String CharacterId;
        /** Unique identifier of the item to purchase. */
        public String ItemId;
        /** Price the client expects to pay for the item (in case a new catalog or store was uploaded, with new prices). */
        public Integer Price;
        /** Store to buy this item through. If not set, prices default to those in the catalog. */
        public String StoreId;
        /** Virtual currency to use to purchase the item. */
        public String VirtualCurrency;
        
    }

    public static class PurchaseItemResult {
        /** Details for the items purchased. */
        public ArrayList Items;
        
    }

    public static class PurchaseReceiptFulfillment {
        /** Items granted to the player in fulfillment of the validated receipt. */
        public ArrayList FulfilledItems;
        /**
         * Source of the payment price information for the recorded purchase transaction. A value of 'Request' indicates that the
         * price specified in the request was used, whereas a value of 'Catalog' indicates that the real-money price of the catalog
         * item matching the product ID in the validated receipt transaction and the currency specified in the request (defaulting
         * to USD) was used.
         */
        public String RecordedPriceSource;
        /** Currency used to purchase the items (ISO 4217 currency code). */
        public String RecordedTransactionCurrency;
        /** Amount of the stated currency paid for the items, in centesimal units */
        public Long RecordedTransactionTotal;
        
    }

    public static enum PushNotificationPlatform {
        ApplePushNotificationService,
        GoogleCloudMessaging
    }

    public static class PushNotificationRegistrationModel {
        /** Notification configured endpoint */
        public String NotificationEndpointARN;
        /** Push notification platform */
        public PushNotificationPlatform Platform;
        
    }

    /**
     * Coupon codes can be created for any item, or set of items, in the catalog for the title. This operation causes the
     * coupon to be consumed, and the specific items to be awarded to the user. Attempting to re-use an already consumed code,
     * or a code which has not yet been created in the service, will result in an error.
     */
    public static class RedeemCouponRequest {
        /** Catalog version of the coupon. If null, uses the default catalog */
        public String CatalogVersion;
        /** Optional identifier for the Character that should receive the item. If null, item is added to the player */
        public String CharacterId;
        /** Generated coupon code to redeem. */
        public String CouponCode;
        
    }

    public static class RedeemCouponResult {
        /** Items granted to the player as a result of redeeming the coupon. */
        public ArrayList GrantedItems;
        
    }

    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,
        EUWest,
        Singapore,
        Japan,
        Brazil,
        Australia
    }

    public static class RegionInfo {
        /** indicates whether the server specified is available in this region */
        public Boolean Available;
        /** name of the region */
        public String Name;
        /** url to ping to get roundtrip time */
        public String PingUrl;
        /** unique identifier for the region */
        public Region Region;
        
    }

    /**
     * The steps to configure and send Push Notifications is described in the PlayFab tutorials, here:
     * https://docs.microsoft.com/gaming/playfab/features/engagement/push-notifications/quickstart
     */
    public static class RegisterForIOSPushNotificationRequest {
        /** Message to display when confirming push notification. */
        public String ConfirmationMessage;
        /** Unique token generated by the Apple Push Notification service when the title registered to receive push notifications. */
        public String DeviceToken;
        /** If true, send a test push message immediately after sucessful registration. Defaults to false. */
        public Boolean SendPushNotificationConfirmation;
        
    }

    public static class RegisterForIOSPushNotificationResult {
        
    }

    public static class RegisterPlayFabUserRequest {
        /** An optional parameter for setting the display name for this title (3-25 characters). */
        public String DisplayName;
        /** User email address attached to their account */
        public String Email;
        /** 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;
        /** Password for the PlayFab account (6-100 characters) */
        public String Password;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /**
         * An optional parameter that specifies whether both the username and email parameters are required. If true, both
         * parameters are required; if false, the user must supply either the username or email parameter. The default value is
         * true.
         */
        public Boolean RequireBothUsernameAndEmail;
        /**
         * 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;
        /** PlayFab username for the account (3-20 characters) */
        public String Username;
        
    }

    /**
     * Each account must have a unique email address in the PlayFab service. Once created, the account may be associated with
     * additional accounts (Steam, Facebook, Game Center, etc.), allowing for added social network lists and achievements
     * systems.
     */
    public static class RegisterPlayFabUserResult {
        /**
         * If LoginTitlePlayerAccountEntity flag is set on the login request the title_player_account will also be logged in and
         * returned.
         */
        public EntityTokenResponse EntityToken;
        /** PlayFab unique identifier for this newly created account. */
        public String PlayFabId;
        /** Unique token identifying the user and game at the server level, for the current session. */
        public String SessionTicket;
        /** Settings specific to this user. */
        public UserSettings SettingsForUser;
        /** PlayFab unique user name. */
        public String Username;
        
    }

    /** PublicKey must be generated using the Windows Hello Passport service. */
    public static class RegisterWithWindowsHelloRequest {
        /** Device name. */
        public String DeviceName;
        /** 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;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        /** PublicKey generated by Windows Hello. */
        public String PublicKey;
        /**
         * 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;
        /** Player's user name used by Windows Hello. */
        public String UserName;
        
    }

    /** This API removes an existing contact email from the player's profile. */
    public static class RemoveContactEmailRequest {
        
    }

    public static class RemoveContactEmailResult {
        
    }

    public static class RemoveFriendRequest {
        /** PlayFab identifier of the friend account which is to be removed. */
        public String FriendPlayFabId;
        
    }

    public static class RemoveFriendResult {
        
    }

    public static class RemoveGenericIDRequest {
        /** Generic service identifier to be removed from the player. */
        public GenericServiceId GenericId;
        
    }

    public static class RemoveGenericIDResult {
        
    }

    public static class RemoveSharedGroupMembersRequest {
        /** An array of unique PlayFab assigned ID of the user on whom the operation will be performed. */
        public ArrayList PlayFabIds;
        /** Unique identifier for the shared group. */
        public String SharedGroupId;
        
    }

    public static class RemoveSharedGroupMembersResult {
        
    }

    public static class ReportPlayerClientRequest {
        /** Optional additional comment by reporting player. */
        public String Comment;
        /** Unique PlayFab identifier of the reported player. */
        public String ReporteeId;
        
    }

    /**
     * Players are currently limited to five reports per day. Attempts by a single user account to submit reports beyond five
     * will result in Updated being returned as false.
     */
    public static class ReportPlayerClientResult {
        /** The number of remaining reports which may be filed today. */
        public Integer SubmissionsRemaining;
        
    }

    /**
     * The title should obtain a refresh receipt via restoreCompletedTransactions in the SKPaymentQueue of the Apple StoreKit
     * and pass that in to this call. The resultant receipt contains new receipt instances for all non-consumable goods
     * previously purchased by the user. This API call iterates through every purchase in the receipt and restores the items if
     * they still exist in the catalog and can be validated.
     */
    public static class RestoreIOSPurchasesRequest {
        /** Catalog version of the restored items. If null, defaults to primary catalog. */
        public String CatalogVersion;
        /** Base64 encoded receipt data, passed back by the App Store as a result of a successful purchase. */
        public String ReceiptData;
        
    }

    /** Once verified, the valid items will be restored into the user's inventory. */
    public static class RestoreIOSPurchasesResult {
        /** Fulfilled inventory items and recorded purchases in fulfillment of the validated receipt transactions. */
        public ArrayList Fulfillments;
        
    }

    public static class ScriptExecutionError {
        /**
         * Error code, such as CloudScriptNotFound, JavascriptException, CloudScriptFunctionArgumentSizeExceeded,
         * CloudScriptAPIRequestCountExceeded, CloudScriptAPIRequestError, or CloudScriptHTTPRequestError
         */
        public String Error;
        /** Details about the error */
        public String Message;
        /** Point during the execution of the script at which the error occurred, if any */
        public String StackTrace;
        
    }

    /**
     * If the account in question is a "temporary" account (for example, one that was created via a call to
     * LoginFromIOSDeviceID), thisfunction will have no effect. Only PlayFab accounts which have valid email addresses will be
     * able to receive a password reset email using this API.
     */
    public static class SendAccountRecoveryEmailRequest {
        /** User email address attached to their account */
        public String Email;
        /** The email template id of the account recovery email template to send. */
        public String EmailTemplateId;
        /**
         * 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;
        
    }

    public static class SendAccountRecoveryEmailResult {
        
    }

    /**
     * This operation is not additive. It will completely replace the tag list for the specified user. Please note that only
     * users in the PlayFab friends list can be assigned tags. Attempting to set a tag on a friend only included in the friends
     * list from a social site integration (such as Facebook or Steam) will return the AccountNotFound error.
     */
    public static class SetFriendTagsRequest {
        /** PlayFab identifier of the friend account to which the tag(s) should be applied. */
        public String FriendPlayFabId;
        /** Array of tags to set on the friend account. */
        public ArrayList Tags;
        
    }

    public static class SetFriendTagsResult {
        
    }

    /**
     * APIs that require signatures require that the player have a configured Player Secret Key that is used to sign all
     * requests. Players that don't have a secret will be blocked from making API calls until it is configured. To create a
     * signature header add a SHA256 hashed string containing UTF8 encoded JSON body as it will be sent to the server, the
     * current time in UTC formatted to ISO 8601, and the players secret formatted as 'body.date.secret'. Place the resulting
     * hash into the header X-PlayFab-Signature, along with a header X-PlayFab-Timestamp of the same UTC timestamp used in the
     * signature.
     */
    public static class SetPlayerSecretRequest {
        /** Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only). */
        public String EncryptedRequest;
        /** Player secret that is used to verify API request signatures (Enterprise Only). */
        public String PlayerSecret;
        
    }

    public static class SetPlayerSecretResult {
        
    }

    public static class SharedGroupDataRecord {
        /** Timestamp for when this data was last updated. */
        public Date LastUpdated;
        /** Unique PlayFab identifier of the user to last update this value. */
        public String LastUpdatedBy;
        /** Indicates whether this data can be read by all users (public) or only members of the group (private). */
        public UserDataPermission Permission;
        /** Data stored for the specified group data key. */
        public String Value;
        
    }

    public static enum SourceType {
        Admin,
        BackEnd,
        GameClient,
        GameServer,
        Partner,
        Custom,
        API
    }

    /** This API must be enabled for use as an option in the game manager website. It is disabled by default. */
    public static class StartGameRequest {
        /** version information for the build of the game server which is to be started */
        public String BuildVersion;
        /** character to use for stats based matching. Leave null to use account stats */
        public String CharacterId;
        /** custom command line argument when starting game server process */
        public String CustomCommandLineData;
        /** the title-defined game mode this server is to be running (defaults to 0 if there is only one mode) */
        public String GameMode;
        /** the region to associate this server with for match filtering */
        public Region Region;
        /** player statistic for others to use in finding this game. May be null for no stat-based matching */
        public String StatisticName;
        
    }

    public static class StartGameResult {
        /** timestamp for when the server should expire, if applicable */
        public String Expires;
        /** unique identifier for the lobby of the server started */
        public String LobbyID;
        /** password required to log into the server */
        public String Password;
        /** server IPV4 address */
        public String ServerIPV4Address;
        /** server IPV6 address */
        public String ServerIPV6Address;
        /** port on the server to be used for communication */
        public Integer ServerPort;
        /** server public DNS name */
        public String ServerPublicDNSName;
        /** unique identifier for the server */
        public String Ticket;
        
    }

    /**
     * This is the first step in the purchasing process. For security purposes, once the order (or "cart") has been created,
     * additional inventory objects may no longer be added. In addition, inventory objects will be locked to the current
     * prices, regardless of any subsequent changes at the catalog level which may occur during the next two steps.
     */
    public static class StartPurchaseRequest {
        /** Catalog version for the items to be purchased. Defaults to most recent catalog. */
        public String CatalogVersion;
        /** Array of items to purchase. */
        public ArrayList Items;
        /** Store through which to purchase items. If not set, prices will be pulled from the catalog itself. */
        public String StoreId;
        
    }

    public static class StartPurchaseResult {
        /** Cart items to be purchased. */
        public ArrayList Contents;
        /** Purchase order identifier. */
        public String OrderId;
        /** Available methods by which the user can pay. */
        public ArrayList PaymentOptions;
        /** Current virtual currency totals for the user. */
        public Map VirtualCurrencyBalances;
        
    }

    public static class StatisticModel {
        /** Statistic name */
        public String Name;
        /** Statistic value */
        public Integer Value;
        /** Statistic version (0 if not a versioned statistic) */
        public Integer Version;
        
    }

    public static class StatisticNameVersion {
        /** unique name of the statistic */
        public String StatisticName;
        /** the version of the statistic to be returned */
        public Long Version;
        
    }

    public static class StatisticUpdate {
        /** unique name of the statistic */
        public String StatisticName;
        /** statistic value for the player */
        public Integer Value;
        /**
         * for updates to an existing statistic value for a player, the version of the statistic when it was loaded. Null when
         * setting the statistic value for the first time.
         */
        public Long Version;
        
    }

    public static class StatisticValue {
        /** unique name of the statistic */
        public String StatisticName;
        /** statistic value for the player */
        public Integer Value;
        /** for updates to an existing statistic value for a player, the version of the statistic when it was loaded */
        public Long Version;
        
    }

    public static class SteamPlayFabIdPair {
        /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Steam identifier. */
        public String PlayFabId;
        /** Unique Steam identifier for a user. */
        public String SteamStringId;
        
    }

    /** A store entry that list a catalog item at a particular price */
    public static class StoreItem implements Comparable {
        /** Store specific custom data. The data only exists as part of this store; it is not transferred to item instances */
        public Object CustomData;
        /** Intended display position for this item. Note that 0 is the first position */
        public Long DisplayPosition;
        /**
         * Unique identifier of the item as it exists in the catalog - note that this must exactly match the ItemId from the
         * catalog
         */
        public String ItemId;
        /** Override prices for this item for specific currencies */
        public Map RealCurrencyPrices;
        /** Override prices for this item in virtual currencies and "RM" (the base Real Money purchase price, in USD pennies) */
        public Map VirtualCurrencyPrices;
        
        public int compareTo(StoreItem other) {
            if (other == null || other.ItemId == null) return 1;
            if (ItemId == null) return -1;
            return ItemId.compareTo(other.ItemId);
        }
    }

    /** Marketing data about a specific store */
    public static class StoreMarketingModel {
        /** Tagline for a store. */
        public String Description;
        /** Display name of a store as it will appear to users. */
        public String DisplayName;
        /** Custom data about a store. */
        public Object Metadata;
        
    }

    public static class SubscriptionModel {
        /** When this subscription expires. */
        public Date Expiration;
        /** The time the subscription was orignially purchased */
        public Date InitialSubscriptionTime;
        /** Whether this subscription is currently active. That is, if Expiration > now. */
        public Boolean IsActive;
        /** The status of this subscription, according to the subscription provider. */
        public SubscriptionProviderStatus Status;
        /** The id for this subscription */
        public String SubscriptionId;
        /** The item id for this subscription from the primary catalog */
        public String SubscriptionItemId;
        /** The provider for this subscription. Apple or Google Play are supported today. */
        public String SubscriptionProvider;
        
    }

    public static enum SubscriptionProviderStatus {
        NoError,
        Cancelled,
        UnknownError,
        BillingError,
        ProductUnavailable,
        CustomerDidNotAcceptPriceChange,
        FreeTrial,
        PaymentPending
    }

    /** This API must be enabled for use as an option in the game manager website. It is disabled by default. */
    public static class SubtractUserVirtualCurrencyRequest {
        /** Amount to be subtracted from the user balance of the specified virtual currency. */
        public Integer Amount;
        /** Name of the virtual currency which is to be decremented. */
        public String VirtualCurrency;
        
    }

    public static class TagModel {
        /** Full value of the tag, including namespace */
        public String TagValue;
        
    }

    public static enum TitleActivationStatus {
        None,
        ActivatedTitleKey,
        PendingSteam,
        ActivatedSteam,
        RevokedSteam
    }

    public static class TitleNewsItem {
        /** News item text. */
        public String Body;
        /** Unique identifier of news item. */
        public String NewsId;
        /** Date and time when the news item was posted. */
        public Date Timestamp;
        /** Title of the news item. */
        public String Title;
        
    }

    public static class TradeInfo {
        /** Item instances from the accepting player that are used to fulfill the trade. If null, no one has accepted the trade. */
        public ArrayList AcceptedInventoryInstanceIds;
        /** The PlayFab ID of the player who accepted the trade. If null, no one has accepted the trade. */
        public String AcceptedPlayerId;
        /** An optional list of players allowed to complete this trade. If null, anybody can complete the trade. */
        public ArrayList AllowedPlayerIds;
        /** If set, The UTC time when this trade was canceled. */
        public Date CancelledAt;
        /** If set, The UTC time when this trade was fulfilled. */
        public Date FilledAt;
        /** If set, The UTC time when this trade was made invalid. */
        public Date InvalidatedAt;
        /** The catalogItem Ids of the item instances being offered. */
        public ArrayList OfferedCatalogItemIds;
        /** The itemInstance Ids that are being offered. */
        public ArrayList OfferedInventoryInstanceIds;
        /** The PlayFabId for the offering player. */
        public String OfferingPlayerId;
        /** The UTC time when this trade was created. */
        public Date OpenedAt;
        /** The catalogItem Ids requested in exchange. */
        public ArrayList RequestedCatalogItemIds;
        /** Describes the current state of this trade. */
        public TradeStatus Status;
        /** The identifier for this trade. */
        public String TradeId;
        
    }

    public static enum TradeStatus {
        Invalid,
        Opening,
        Open,
        Accepting,
        Accepted,
        Filled,
        Cancelled
    }

    public static enum TransactionStatus {
        CreateCart,
        Init,
        Approved,
        Succeeded,
        FailedByProvider,
        DisputePending,
        RefundPending,
        Refunded,
        RefundFailed,
        ChargedBack,
        FailedByUber,
        FailedByPlayFab,
        Revoked,
        TradePending,
        Traded,
        Upgraded,
        StackPending,
        Stacked,
        Other,
        Failed
    }

    public static class TreatmentAssignment {
        /** List of the experiment variables. */
        public ArrayList Variables;
        /** List of the experiment variants. */
        public ArrayList Variants;
        
    }

    public static class TwitchPlayFabIdPair {
        /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Twitch identifier. */
        public String PlayFabId;
        /** Unique Twitch identifier for a user. */
        public String TwitchId;
        
    }

    public static class UninkOpenIdConnectRequest {
        /** A name that identifies which configured OpenID Connect provider relationship to use. Maximum 100 characters. */
        public String ConnectionId;
        
    }

    public static class UnlinkAndroidDeviceIDRequest {
        /**
         * Android device identifier for the user's device. If not specified, the most recently signed in Android Device ID will be
         * used.
         */
        public String AndroidDeviceId;
        
    }

    public static class UnlinkAndroidDeviceIDResult {
        
    }

    public static class UnlinkAppleRequest {
        
    }

    public static class UnlinkCustomIDRequest {
        /**
         * Custom unique identifier for the user, generated by the title. If not specified, the most recently signed in Custom ID
         * will be used.
         */
        public String CustomId;
        
    }

    public static class UnlinkCustomIDResult {
        
    }

    public static class UnlinkFacebookAccountRequest {
        
    }

    public static class UnlinkFacebookAccountResult {
        
    }

    public static class UnlinkFacebookInstantGamesIdRequest {
        /** Facebook Instant Games identifier for the user. If not specified, the most recently signed in ID will be used. */
        public String FacebookInstantGamesId;
        
    }

    public static class UnlinkFacebookInstantGamesIdResult {
        
    }

    public static class UnlinkGameCenterAccountRequest {
        
    }

    public static class UnlinkGameCenterAccountResult {
        
    }

    public static class UnlinkGoogleAccountRequest {
        
    }

    public static class UnlinkGoogleAccountResult {
        
    }

    public static class UnlinkIOSDeviceIDRequest {
        /**
         * Vendor-specific iOS identifier for the user's device. If not specified, the most recently signed in iOS Device ID will
         * be used.
         */
        public String DeviceId;
        
    }

    public static class UnlinkIOSDeviceIDResult {
        
    }

    public static class UnlinkKongregateAccountRequest {
        
    }

    public static class UnlinkKongregateAccountResult {
        
    }

    public static class UnlinkNintendoSwitchDeviceIdRequest {
        /** Nintendo Switch Device identifier for the user. If not specified, the most recently signed in device ID will be used. */
        public String NintendoSwitchDeviceId;
        
    }

    public static class UnlinkNintendoSwitchDeviceIdResult {
        
    }

    public static class UnlinkPSNAccountRequest {
        
    }

    public static class UnlinkPSNAccountResult {
        
    }

    public static class UnlinkSteamAccountRequest {
        
    }

    public static class UnlinkSteamAccountResult {
        
    }

    public static class UnlinkTwitchAccountRequest {
        
    }

    public static class UnlinkTwitchAccountResult {
        
    }

    /** Must include the Public Key Hint */
    public static class UnlinkWindowsHelloAccountRequest {
        /** SHA256 hash of the PublicKey generated by Windows Hello. */
        public String PublicKeyHint;
        
    }

    public static class UnlinkWindowsHelloAccountResponse {
        
    }

    public static class UnlinkXboxAccountRequest {
        
    }

    public static class UnlinkXboxAccountResult {
        
    }

    /** Specify the container and optionally the catalogVersion for the container to open */
    public static class UnlockContainerInstanceRequest {
        /**
         * Specifies the catalog version that should be used to determine container contents. If unspecified, uses catalog
         * associated with the item instance.
         */
        public String CatalogVersion;
        /** Unique PlayFab assigned ID for a specific character owned by a user */
        public String CharacterId;
        /** ItemInstanceId of the container to unlock. */
        public String ContainerItemInstanceId;
        /**
         * ItemInstanceId of the key that will be consumed by unlocking this container. If the container requires a key, this
         * parameter is required.
         */
        public String KeyItemInstanceId;
        
    }

    /** Specify the type of container to open and optionally the catalogVersion for the container to open */
    public static class UnlockContainerItemRequest {
        /**
         * Specifies the catalog version that should be used to determine container contents. If unspecified, uses default/primary
         * catalog.
         */
        public String CatalogVersion;
        /** Unique PlayFab assigned ID for a specific character owned by a user */
        public String CharacterId;
        /** Catalog ItemId of the container type to unlock. */
        public String ContainerItemId;
        
    }

    /** The items and vc found within the container. These will be added and stacked in the appropriate inventory. */
    public static class UnlockContainerItemResult {
        /** Items granted to the player as a result of unlocking the container. */
        public ArrayList GrantedItems;
        /** Unique instance identifier of the container unlocked. */
        public String UnlockedItemInstanceId;
        /** Unique instance identifier of the key used to unlock the container, if applicable. */
        public String UnlockedWithItemInstanceId;
        /** Virtual currency granted to the player as a result of unlocking the container. */
        public Map VirtualCurrency;
        
    }

    public static class UpdateAvatarUrlRequest {
        /** URL of the avatar image. If empty, it removes the existing avatar URL. */
        public String ImageUrl;
        
    }

    /**
     * This function performs an additive update of the arbitrary strings containing the custom data for the character. In
     * updating the custom data object, keys which already exist in the object will have their values overwritten, while keys
     * with null values will be removed. New keys will be added, with the given values. No other key-value pairs will be
     * changed apart from those specified in the call.
     */
    public static class UpdateCharacterDataRequest {
        /** Unique PlayFab assigned ID for a specific character owned by a user */
        public String CharacterId;
        /**
         * Key-value pairs to be written to the custom data. Note that keys are trimmed of whitespace, are limited in size, and may
         * not begin with a '!' character or be null.
         */
        public Map Data;
        /**
         * Optional list of Data-keys to remove from UserData. Some SDKs cannot insert null-values into Data due to language
         * constraints. Use this to delete the keys directly.
         */
        public ArrayList KeysToRemove;
        /** Permission to be applied to all user data keys written in this request. Defaults to "private" if not set. */
        public UserDataPermission Permission;
        
    }

    public static class UpdateCharacterDataResult {
        /**
         * Indicates the current version of the data that has been set. This is incremented with every set call for that type of
         * data (read-only, internal, etc). This version can be provided in Get calls to find updated data.
         */
        public Long DataVersion;
        
    }

    /**
     * Enable this option with the 'Allow Client to Post Player Statistics' option in PlayFab GameManager for your title.
     * However, this is not best practice, as this data will no longer be safely controlled by the server. This operation is
     * additive. Character Statistics not currently defined will be added, while those already defined will be updated with the
     * given values. All other user statistics will remain unchanged. Character statistics are used by the
     * character-leaderboard apis, and accessible for custom game-logic.
     */
    public static class UpdateCharacterStatisticsRequest {
        /** Unique PlayFab assigned ID for a specific character owned by a user */
        public String CharacterId;
        /** Statistics to be updated with the provided values, in the Key(string), Value(int) pattern. */
        public Map CharacterStatistics;
        
    }

    public static class UpdateCharacterStatisticsResult {
        
    }

    /**
     * Enable this option with the 'Allow Client to Post Player Statistics' option in PlayFab GameManager for your title.
     * However, this is not best practice, as this data will no longer be safely controlled by the server. This operation is
     * additive. Statistics not currently defined will be added, while those already defined will be updated with the given
     * values. All other user statistics will remain unchanged. Note that if the statistic is intended to have a reset period,
     * the UpdatePlayerStatisticDefinition API call can be used to define that reset period. Once a statistic has been
     * versioned (reset), the now-previous version can still be written to for up a short, pre-defined period (currently 10
     * seconds), using the Version parameter in this call.
     */
    public static class UpdatePlayerStatisticsRequest {
        /** Statistics to be updated with the provided values */
        public ArrayList Statistics;
        
    }

    public static class UpdatePlayerStatisticsResult {
        
    }

    /**
     * Note that in the case of multiple calls to write to the same shared group data keys, the last write received by the
     * PlayFab service will determine the value available to subsequent read operations. For scenarios requiring coordination
     * of data updates, it is recommended that titles make use of user data with read permission set to public, or a
     * combination of user data and shared group data.
     */
    public static class UpdateSharedGroupDataRequest {
        /**
         * Key-value pairs to be written to the custom data. Note that keys are trimmed of whitespace, are limited in size, and may
         * not begin with a '!' character or be null.
         */
        public Map Data;
        /**
         * Optional list of Data-keys to remove from UserData. Some SDKs cannot insert null-values into Data due to language
         * constraints. Use this to delete the keys directly.
         */
        public ArrayList KeysToRemove;
        /** Permission to be applied to all user data keys in this request. */
        public UserDataPermission Permission;
        /** Unique identifier for the shared group. */
        public String SharedGroupId;
        
    }

    public static class UpdateSharedGroupDataResult {
        
    }

    /**
     * This function performs an additive update of the arbitrary strings containing the custom data for the user. In updating
     * the custom data object, keys which already exist in the object will have their values overwritten, while keys with null
     * values will be removed. New keys will be added, with the given values. No other key-value pairs will be changed apart
     * from those specified in the call.
     */
    public static class UpdateUserDataRequest {
        /**
         * Key-value pairs to be written to the custom data. Note that keys are trimmed of whitespace, are limited in size, and may
         * not begin with a '!' character or be null.
         */
        public Map Data;
        /**
         * Optional list of Data-keys to remove from UserData. Some SDKs cannot insert null-values into Data due to language
         * constraints. Use this to delete the keys directly.
         */
        public ArrayList KeysToRemove;
        /**
         * Permission to be applied to all user data keys written in this request. Defaults to "private" if not set. This is used
         * for requests by one player for information about another player; those requests will only return Public keys.
         */
        public UserDataPermission Permission;
        
    }

    public static class UpdateUserDataResult {
        /**
         * Indicates the current version of the data that has been set. This is incremented with every set call for that type of
         * data (read-only, internal, etc). This version can be provided in Get calls to find updated data.
         */
        public Long DataVersion;
        
    }

    /**
     * In addition to the PlayFab username, titles can make use of a DisplayName which is also a unique identifier, but
     * specific to the title. This allows for unique names which more closely match the theme or genre of a title, for example.
     */
    public static class UpdateUserTitleDisplayNameRequest {
        /** New title display name for the user - must be between 3 and 25 characters. */
        public String DisplayName;
        
    }

    public static class UpdateUserTitleDisplayNameResult {
        /** Current title display name for the user (this will be the original display name if the rename attempt failed). */
        public String DisplayName;
        
    }

    public static class UserAccountInfo {
        /** User Android device information, if an Android device has been linked */
        public UserAndroidDeviceInfo AndroidDeviceInfo;
        /** Sign in with Apple account information, if an Apple account has been linked */
        public UserAppleIdInfo AppleAccountInfo;
        /** Timestamp indicating when the user account was created */
        public Date Created;
        /** Custom ID information, if a custom ID has been assigned */
        public UserCustomIdInfo CustomIdInfo;
        /** User Facebook information, if a Facebook account has been linked */
        public UserFacebookInfo FacebookInfo;
        /** Facebook Instant Games account information, if a Facebook Instant Games account has been linked */
        public UserFacebookInstantGamesIdInfo FacebookInstantGamesIdInfo;
        /** User Gamecenter information, if a Gamecenter account has been linked */
        public UserGameCenterInfo GameCenterInfo;
        /** User Google account information, if a Google account has been linked */
        public UserGoogleInfo GoogleInfo;
        /** User iOS device information, if an iOS device has been linked */
        public UserIosDeviceInfo IosDeviceInfo;
        /** User Kongregate account information, if a Kongregate account has been linked */
        public UserKongregateInfo KongregateInfo;
        /** Nintendo Switch account information, if a Nintendo Switch account has been linked */
        public UserNintendoSwitchAccountIdInfo NintendoSwitchAccountInfo;
        /** Nintendo Switch device information, if a Nintendo Switch device has been linked */
        public UserNintendoSwitchDeviceIdInfo NintendoSwitchDeviceIdInfo;
        /** OpenID Connect information, if any OpenID Connect accounts have been linked */
        public ArrayList OpenIdInfo;
        /** Unique identifier for the user account */
        public String PlayFabId;
        /** Personal information for the user which is considered more sensitive */
        public UserPrivateAccountInfo PrivateInfo;
        /** User PSN account information, if a PSN account has been linked */
        public UserPsnInfo PsnInfo;
        /** User Steam information, if a Steam account has been linked */
        public UserSteamInfo SteamInfo;
        /** Title-specific information for the user account */
        public UserTitleInfo TitleInfo;
        /** User Twitch account information, if a Twitch account has been linked */
        public UserTwitchInfo TwitchInfo;
        /** User account name in the PlayFab service */
        public String Username;
        /** Windows Hello account information, if a Windows Hello account has been linked */
        public UserWindowsHelloInfo WindowsHelloInfo;
        /** User XBox account information, if a XBox account has been linked */
        public UserXboxInfo XboxInfo;
        
    }

    public static class UserAndroidDeviceInfo {
        /** Android device ID */
        public String AndroidDeviceId;
        
    }

    public static class UserAppleIdInfo {
        /** Apple subject ID */
        public String AppleSubjectId;
        
    }

    public static class UserCustomIdInfo {
        /** Custom ID */
        public String CustomId;
        
    }

    /**
     * Indicates whether a given data key is private (readable only by the player) or public (readable by all players). When a
     * player makes a GetUserData request about another player, only keys marked Public will be returned.
     */
    public static enum UserDataPermission {
        Private,
        Public
    }

    public static class UserDataRecord {
        /** Timestamp for when this data was last updated. */
        public Date LastUpdated;
        /**
         * Indicates whether this data can be read by all users (public) or only the user (private). This is used for GetUserData
         * requests being made by one player about another player.
         */
        public UserDataPermission Permission;
        /** Data stored for the specified user data key. */
        public String Value;
        
    }

    public static class UserFacebookInfo {
        /** Facebook identifier */
        public String FacebookId;
        /** Facebook full name */
        public String FullName;
        
    }

    public static class UserFacebookInstantGamesIdInfo {
        /** Facebook Instant Games ID */
        public String FacebookInstantGamesId;
        
    }

    public static class UserGameCenterInfo {
        /** Gamecenter identifier */
        public String GameCenterId;
        
    }

    public static class UserGoogleInfo {
        /** Email address of the Google account */
        public String GoogleEmail;
        /** Gender information of the Google account */
        public String GoogleGender;
        /** Google ID */
        public String GoogleId;
        /** Locale of the Google account */
        public String GoogleLocale;
        /** Name of the Google account user */
        public String GoogleName;
        
    }

    public static class UserIosDeviceInfo {
        /** iOS device ID */
        public String IosDeviceId;
        
    }

    public static class UserKongregateInfo {
        /** Kongregate ID */
        public String KongregateId;
        /** Kongregate Username */
        public String KongregateName;
        
    }

    public static class UserNintendoSwitchAccountIdInfo {
        /** Nintendo Switch account subject ID */
        public String NintendoSwitchAccountSubjectId;
        
    }

    public static class UserNintendoSwitchDeviceIdInfo {
        /** Nintendo Switch Device ID */
        public String NintendoSwitchDeviceId;
        
    }

    public static class UserOpenIdInfo {
        /** OpenID Connection ID */
        public String ConnectionId;
        /** OpenID Issuer */
        public String Issuer;
        /** OpenID Subject */
        public String Subject;
        
    }

    public static enum UserOrigination {
        Organic,
        Steam,
        Google,
        Amazon,
        Facebook,
        Kongregate,
        GamersFirst,
        Unknown,
        IOS,
        LoadTest,
        Android,
        PSN,
        GameCenter,
        CustomId,
        XboxLive,
        Parse,
        Twitch,
        WindowsHello,
        ServerCustomId,
        NintendoSwitchDeviceId,
        FacebookInstantGamesId,
        OpenIdConnect,
        Apple,
        NintendoSwitchAccount
    }

    public static class UserPrivateAccountInfo {
        /** user email address */
        public String Email;
        
    }

    public static class UserPsnInfo {
        /** PSN account ID */
        public String PsnAccountId;
        /** PSN online ID */
        public String PsnOnlineId;
        
    }

    public static class UserSettings {
        /** Boolean for whether this player is eligible for gathering device info. */
        public Boolean GatherDeviceInfo;
        /** Boolean for whether this player should report OnFocus play-time tracking. */
        public Boolean GatherFocusInfo;
        /** Boolean for whether this player is eligible for ad tracking. */
        public Boolean NeedsAttribution;
        
    }

    public static class UserSteamInfo {
        /** what stage of game ownership the user is listed as being in, from Steam */
        public TitleActivationStatus SteamActivationStatus;
        /** the country in which the player resides, from Steam data */
        public String SteamCountry;
        /** currency type set in the user Steam account */
        public Currency SteamCurrency;
        /** Steam identifier */
        public String SteamId;
        /** Steam display name */
        public String SteamName;
        
    }

    public static class UserTitleInfo {
        /** URL to the player's avatar. */
        public String AvatarUrl;
        /**
         * timestamp indicating when the user was first associated with this game (this can differ significantly from when the user
         * first registered with PlayFab)
         */
        public Date Created;
        /** name of the user, as it is displayed in-game */
        public String DisplayName;
        /**
         * timestamp indicating when the user first signed into this game (this can differ from the Created timestamp, as other
         * events, such as issuing a beta key to the user, can associate the title to the user)
         */
        public Date FirstLogin;
        /** boolean indicating whether or not the user is currently banned for a title */
        public Boolean isBanned;
        /** timestamp for the last user login for this title */
        public Date LastLogin;
        /** source by which the user first joined the game, if known */
        public UserOrigination Origination;
        /** Title player account entity for this user */
        public EntityKey TitlePlayerAccount;
        
    }

    public static class UserTwitchInfo {
        /** Twitch ID */
        public String TwitchId;
        /** Twitch Username */
        public String TwitchUserName;
        
    }

    public static class UserWindowsHelloInfo {
        /** Windows Hello Device Name */
        public String WindowsHelloDeviceName;
        /** Windows Hello Public Key Hash */
        public String WindowsHelloPublicKeyHash;
        
    }

    public static class UserXboxInfo {
        /** XBox user ID */
        public String XboxUserId;
        
    }

    public static class ValidateAmazonReceiptRequest {
        /** Catalog version of the fulfilled items. If null, defaults to the primary catalog. */
        public String CatalogVersion;
        /** Currency used to pay for the purchase (ISO 4217 currency code). */
        public String CurrencyCode;
        /** Amount of the stated currency paid, in centesimal units. */
        public Integer PurchasePrice;
        /** ReceiptId returned by the Amazon App Store in-app purchase API */
        public String ReceiptId;
        /** AmazonId of the user making the purchase as returned by the Amazon App Store in-app purchase API */
        public String UserId;
        
    }

    /** Once verified, the catalog item matching the Amazon item name will be added to the user's inventory. */
    public static class ValidateAmazonReceiptResult {
        /** Fulfilled inventory items and recorded purchases in fulfillment of the validated receipt transactions. */
        public ArrayList Fulfillments;
        
    }

    /**
     * The packageName and productId are defined in the GooglePlay store. The productId must match the ItemId of the inventory
     * item in the PlayFab catalog for the title. This enables the PlayFab service to securely validate that the purchase is
     * for the correct item, in order to prevent uses from passing valid receipts as being for more expensive items (passing a
     * receipt for a 99-cent purchase as being for a $19.99 purchase, for example). Each receipt may be validated only once to
     * avoid granting the same item over and over from a single purchase.
     */
    public static class ValidateGooglePlayPurchaseRequest {
        /** Catalog version of the fulfilled items. If null, defaults to the primary catalog. */
        public String CatalogVersion;
        /** Currency used to pay for the purchase (ISO 4217 currency code). */
        public String CurrencyCode;
        /** Amount of the stated currency paid, in centesimal units. */
        public Long PurchasePrice;
        /** Original JSON string returned by the Google Play IAB API. */
        public String ReceiptJson;
        /** Signature returned by the Google Play IAB API. */
        public String Signature;
        
    }

    /**
     * Once verified, the catalog item (ItemId) matching the GooglePlay store item (productId) will be added to the user's
     * inventory.
     */
    public static class ValidateGooglePlayPurchaseResult {
        /** Fulfilled inventory items and recorded purchases in fulfillment of the validated receipt transactions. */
        public ArrayList Fulfillments;
        
    }

    /**
     * The CurrencyCode and PurchasePrice must match the price which was set up for the item in the Apple store. In addition,
     * The ItemId of the inventory in the PlayFab Catalog must match the Product ID as it was set up in the Apple store. This
     * enables the PlayFab service to securely validate that the purchase is for the correct item, in order to prevent uses
     * from passing valid receipts as being for more expensive items (passing a receipt for a 99-cent purchase as being for a
     * $19.99 purchase, for example).
     */
    public static class ValidateIOSReceiptRequest {
        /** Catalog version of the fulfilled items. If null, defaults to the primary catalog. */
        public String CatalogVersion;
        /** Currency used to pay for the purchase (ISO 4217 currency code). */
        public String CurrencyCode;
        /** Amount of the stated currency paid, in centesimal units. */
        public Integer PurchasePrice;
        /** Base64 encoded receipt data, passed back by the App Store as a result of a successful purchase. */
        public String ReceiptData;
        
    }

    /** Once verified, the catalog item matching the iTunes item name will be added to the user's inventory. */
    public static class ValidateIOSReceiptResult {
        /** Fulfilled inventory items and recorded purchases in fulfillment of the validated receipt transactions. */
        public ArrayList Fulfillments;
        
    }

    public static class ValidateWindowsReceiptRequest {
        /** Catalog version of the fulfilled items. If null, defaults to the primary catalog. */
        public String CatalogVersion;
        /** Currency used to pay for the purchase (ISO 4217 currency code). */
        public String CurrencyCode;
        /** Amount of the stated currency paid, in centesimal units. */
        public Long PurchasePrice;
        /** XML Receipt returned by the Windows App Store in-app purchase API */
        public String Receipt;
        
    }

    /** Once verified, the catalog item matching the Product name will be added to the user's inventory. */
    public static class ValidateWindowsReceiptResult {
        /** Fulfilled inventory items and recorded purchases in fulfillment of the validated receipt transactions. */
        public ArrayList Fulfillments;
        
    }

    public static class ValueToDateModel {
        /** ISO 4217 code of the currency used in the purchases */
        public String Currency;
        /**
         * Total value of the purchases in a whole number of 1/100 monetary units. For example, 999 indicates nine dollars and
         * ninety-nine cents when Currency is 'USD')
         */
        public Long TotalValue;
        /**
         * Total value of the purchases in a string representation of decimal monetary units. For example, '9.99' indicates nine
         * dollars and ninety-nine cents when Currency is 'USD'.
         */
        public String TotalValueAsDecimal;
        
    }

    public static class Variable {
        /** Name of the variable. */
        public String Name;
        /** Value of the variable. */
        public String Value;
        
    }

    public static class VirtualCurrencyRechargeTime {
        /**
         * Maximum value to which the regenerating currency will automatically increment. Note that it can exceed this value
         * through use of the AddUserVirtualCurrency API call. However, it will not regenerate automatically until it has fallen
         * below this value.
         */
        public Integer RechargeMax;
        /** Server timestamp in UTC indicating the next time the virtual currency will be incremented. */
        public Date RechargeTime;
        /** Time remaining (in seconds) before the next recharge increment of the virtual currency. */
        public Integer SecondsToRecharge;
        
    }

    /**
     * This API is designed to write a multitude of different client-defined events into PlayStream. It supports a flexible
     * JSON schema, which allowsfor arbitrary key-value pairs to describe any character-based event. The created event will be
     * locked to the authenticated title and player.
     */
    public static class WriteClientCharacterEventRequest {
        /** Custom event properties. Each property consists of a name (string) and a value (JSON object). */
        public Map Body;
        /** Unique PlayFab assigned ID for a specific character owned by a user */
        public String CharacterId;
        /**
         * The name of the event, within the namespace scoped to the title. The naming convention is up to the caller, but it
         * commonly follows the subject_verb_object pattern (e.g. player_logged_in).
         */
        public String EventName;
        /** The time (in UTC) associated with this event. The value defaults to the current time. */
        public Date Timestamp;
        
    }

    /**
     * This API is designed to write a multitude of different event types into PlayStream. It supports a flexible JSON schema,
     * which allowsfor arbitrary key-value pairs to describe any player-based event. The created event will be locked to the
     * authenticated title and player.
     */
    public static class WriteClientPlayerEventRequest {
        /** Custom data properties associated with the event. Each property consists of a name (string) and a value (JSON object). */
        public Map Body;
        /**
         * The name of the event, within the namespace scoped to the title. The naming convention is up to the caller, but it
         * commonly follows the subject_verb_object pattern (e.g. player_logged_in).
         */
        public String EventName;
        /** The time (in UTC) associated with this event. The value defaults to the current time. */
        public Date Timestamp;
        
    }

    public static class WriteEventResponse {
        /**
         * The unique identifier of the event. The values of this identifier consist of ASCII characters and are not constrained to
         * any particular format.
         */
        public String EventId;
        
    }

    /**
     * This API is designed to write a multitude of different client-defined events into PlayStream. It supports a flexible
     * JSON schema, which allowsfor arbitrary key-value pairs to describe any title-based event. The created event will be
     * locked to the authenticated title.
     */
    public static class WriteTitleEventRequest {
        /** Custom event properties. Each property consists of a name (string) and a value (JSON object). */
        public Map Body;
        /**
         * The name of the event, within the namespace scoped to the title. The naming convention is up to the caller, but it
         * commonly follows the subject_verb_object pattern (e.g. player_logged_in).
         */
        public String EventName;
        /** The time (in UTC) associated with this event. The value defaults to the current time. */
        public Date Timestamp;
        
    }

    public static class XboxLiveAccountPlayFabIdPair {
        /** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Xbox Live identifier. */
        public String PlayFabId;
        /** Unique Xbox Live identifier for a user. */
        public String XboxLiveAccountId;
        
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy