You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/PlayFabSDK/Client/PlayFabClientModels.cs

7536 lines
276 KiB
C#

#if !DISABLE_PLAYFABCLIENT_API
using System;
using System.Collections.Generic;
using PlayFab.SharedModels;
namespace PlayFab.ClientModels
{
[Serializable]
public class AcceptTradeRequest : PlayFabRequestCommon
{
/// <summary>
/// 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.
/// </summary>
public List<string> AcceptedInventoryInstanceIds;
/// <summary>
/// Player who opened the trade.
/// </summary>
public string OfferingPlayerId;
/// <summary>
/// Trade identifier.
/// </summary>
public string TradeId;
}
[Serializable]
public class AcceptTradeResponse : PlayFabResultCommon
{
/// <summary>
/// Details about trade which was just accepted.
/// </summary>
public TradeInfo Trade;
}
public enum AdActivity
{
Opened,
Closed,
Start,
End
}
[Serializable]
public class AdCampaignAttributionModel : PlayFabBaseModel
{
/// <summary>
/// UTC time stamp of attribution
/// </summary>
public DateTime AttributedAt;
/// <summary>
/// Attribution campaign identifier
/// </summary>
public string CampaignId;
/// <summary>
/// Attribution network name
/// </summary>
public string Platform;
}
[Serializable]
public class AddFriendRequest : PlayFabRequestCommon
{
/// <summary>
/// Email address of the user to attempt to add to the local user's friend list.
/// </summary>
public string FriendEmail;
/// <summary>
/// PlayFab identifier of the user to attempt to add to the local user's friend list.
/// </summary>
public string FriendPlayFabId;
/// <summary>
/// Title-specific display name of the user to attempt to add to the local user's friend list.
/// </summary>
public string FriendTitleDisplayName;
/// <summary>
/// PlayFab username of the user to attempt to add to the local user's friend list.
/// </summary>
public string FriendUsername;
}
[Serializable]
public class AddFriendResult : PlayFabResultCommon
{
/// <summary>
/// True if the friend request was processed successfully.
/// </summary>
public bool Created;
}
[Serializable]
public class AddGenericIDRequest : PlayFabRequestCommon
{
/// <summary>
/// Generic service identifier to add to the player account.
/// </summary>
public GenericServiceId GenericId;
}
[Serializable]
public class AddGenericIDResult : PlayFabResultCommon
{
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class AddOrUpdateContactEmailRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// The new contact email to associate with the player.
/// </summary>
public string EmailAddress;
}
[Serializable]
public class AddOrUpdateContactEmailResult : PlayFabResultCommon
{
}
[Serializable]
public class AddSharedGroupMembersRequest : PlayFabRequestCommon
{
/// <summary>
/// An array of unique PlayFab assigned ID of the user on whom the operation will be performed.
/// </summary>
public List<string> PlayFabIds;
/// <summary>
/// Unique identifier for the shared group.
/// </summary>
public string SharedGroupId;
}
[Serializable]
public class AddSharedGroupMembersResult : PlayFabResultCommon
{
}
[Serializable]
public class AddUsernamePasswordRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// User email address attached to their account
/// </summary>
public string Email;
/// <summary>
/// Password for the PlayFab account (6-100 characters)
/// </summary>
public string Password;
/// <summary>
/// PlayFab username for the account (3-20 characters)
/// </summary>
public string Username;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class AddUsernamePasswordResult : PlayFabResultCommon
{
/// <summary>
/// PlayFab unique user name.
/// </summary>
public string Username;
}
/// <summary>
/// This API must be enabled for use as an option in the game manager website. It is disabled by default.
/// </summary>
[Serializable]
public class AddUserVirtualCurrencyRequest : PlayFabRequestCommon
{
/// <summary>
/// Amount to be added to the user balance of the specified virtual currency.
/// </summary>
public int Amount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Name of the virtual currency which is to be incremented.
/// </summary>
public string VirtualCurrency;
}
/// <summary>
/// A single ad placement details including placement and reward information
/// </summary>
[Serializable]
public class AdPlacementDetails : PlayFabBaseModel
{
/// <summary>
/// Placement unique ID
/// </summary>
public string PlacementId;
/// <summary>
/// Placement name
/// </summary>
public string PlacementName;
/// <summary>
/// If placement has viewing limits indicates how many views are left
/// </summary>
public int? PlacementViewsRemaining;
/// <summary>
/// If placement has viewing limits indicates when they will next reset
/// </summary>
public double? PlacementViewsResetMinutes;
/// <summary>
/// Optional URL to a reward asset
/// </summary>
public string RewardAssetUrl;
/// <summary>
/// Reward description
/// </summary>
public string RewardDescription;
/// <summary>
/// Reward unique ID
/// </summary>
public string RewardId;
/// <summary>
/// Reward name
/// </summary>
public string RewardName;
}
/// <summary>
/// Details for each item granted
/// </summary>
[Serializable]
public class AdRewardItemGranted : PlayFabBaseModel
{
/// <summary>
/// Catalog ID
/// </summary>
public string CatalogId;
/// <summary>
/// Catalog item display name
/// </summary>
public string DisplayName;
/// <summary>
/// Inventory instance ID
/// </summary>
public string InstanceId;
/// <summary>
/// Item ID
/// </summary>
public string ItemId;
}
/// <summary>
/// Details on what was granted to the player
/// </summary>
[Serializable]
public class AdRewardResults : PlayFabBaseModel
{
/// <summary>
/// Array of the items granted to the player
/// </summary>
public List<AdRewardItemGranted> GrantedItems;
/// <summary>
/// Dictionary of virtual currencies that were granted to the player
/// </summary>
public Dictionary<string,int> GrantedVirtualCurrencies;
/// <summary>
/// Dictionary of statistics that were modified for the player
/// </summary>
public Dictionary<string,int> IncrementedStatistics;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class AndroidDevicePushNotificationRegistrationRequest : PlayFabRequestCommon
{
/// <summary>
/// Message to display when confirming push notification.
/// </summary>
public string ConfirmationMessage;
/// <summary>
/// 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).
/// </summary>
public string DeviceToken;
/// <summary>
/// If true, send a test push message immediately after sucessful registration. Defaults to false.
/// </summary>
public bool? SendPushNotificationConfirmation;
}
[Serializable]
public class AndroidDevicePushNotificationRegistrationResult : PlayFabResultCommon
{
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class AttributeInstallRequest : PlayFabRequestCommon
{
/// <summary>
/// The adid for this device.
/// </summary>
public string Adid;
/// <summary>
/// The IdentifierForAdvertisers for iOS Devices.
/// </summary>
public string Idfa;
}
[Serializable]
public class AttributeInstallResult : PlayFabResultCommon
{
}
[Serializable]
public class CancelTradeRequest : PlayFabRequestCommon
{
/// <summary>
/// Trade identifier.
/// </summary>
public string TradeId;
}
[Serializable]
public class CancelTradeResponse : PlayFabResultCommon
{
/// <summary>
/// Details about trade which was just canceled.
/// </summary>
public TradeInfo Trade;
}
[Serializable]
public class CartItem : PlayFabBaseModel
{
/// <summary>
/// Description of the catalog item.
/// </summary>
public string Description;
/// <summary>
/// Display name for the catalog item.
/// </summary>
public string DisplayName;
/// <summary>
/// Class name to which catalog item belongs.
/// </summary>
public string ItemClass;
/// <summary>
/// Unique identifier for the catalog item.
/// </summary>
public string ItemId;
/// <summary>
/// Unique instance identifier for this catalog item.
/// </summary>
public string ItemInstanceId;
/// <summary>
/// Cost of the catalog item for each applicable real world currency.
/// </summary>
public Dictionary<string,uint> RealCurrencyPrices;
/// <summary>
/// Amount of each applicable virtual currency which will be received as a result of purchasing this catalog item.
/// </summary>
public Dictionary<string,uint> VCAmount;
/// <summary>
/// Cost of the catalog item for each applicable virtual currency.
/// </summary>
public Dictionary<string,uint> VirtualCurrencyPrices;
}
/// <summary>
/// A purchasable item from the item catalog
/// </summary>
[Serializable]
public class CatalogItem : PlayFabBaseModel
{
/// <summary>
/// defines the bundle properties for the item - bundles are items which contain other items, including random drop tables
/// and virtual currencies
/// </summary>
public CatalogItemBundleInfo Bundle;
/// <summary>
/// if true, then an item instance of this type can be used to grant a character to a user.
/// </summary>
public bool CanBecomeCharacter;
/// <summary>
/// catalog version for this item
/// </summary>
public string CatalogVersion;
/// <summary>
/// defines the consumable properties (number of uses, timeout) for the item
/// </summary>
public CatalogItemConsumableInfo Consumable;
/// <summary>
/// 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
/// </summary>
public CatalogItemContainerInfo Container;
/// <summary>
/// game specific custom data
/// </summary>
public string CustomData;
/// <summary>
/// text description of item, to show in-game
/// </summary>
public string Description;
/// <summary>
/// text name for the item, to show in-game
/// </summary>
public string DisplayName;
/// <summary>
/// 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.
/// </summary>
public int InitialLimitedEditionCount;
/// <summary>
/// BETA: If true, then only a fixed number can ever be granted.
/// </summary>
public bool IsLimitedEdition;
/// <summary>
/// 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
/// </summary>
public bool IsStackable;
/// <summary>
/// if true, then an item instance of this type can be traded between players using the trading APIs
/// </summary>
public bool IsTradable;
/// <summary>
/// class to which the item belongs
/// </summary>
public string ItemClass;
/// <summary>
/// unique identifier for this item
/// </summary>
public string ItemId;
/// <summary>
/// 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.
/// </summary>
public string ItemImageUrl;
/// <summary>
/// override prices for this item for specific currencies
/// </summary>
public Dictionary<string,uint> RealCurrencyPrices;
/// <summary>
/// list of item tags
/// </summary>
public List<string> Tags;
/// <summary>
/// price of this item in virtual currencies and "RM" (the base Real Money purchase price, in USD pennies)
/// </summary>
public Dictionary<string,uint> VirtualCurrencyPrices;
}
[Serializable]
public class CatalogItemBundleInfo : PlayFabBaseModel
{
/// <summary>
/// unique ItemId values for all items which will be added to the player inventory when the bundle is added
/// </summary>
public List<string> BundledItems;
/// <summary>
/// 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)
/// </summary>
public List<string> BundledResultTables;
/// <summary>
/// virtual currency types and balances which will be added to the player inventory when the bundle is added
/// </summary>
public Dictionary<string,uint> BundledVirtualCurrencies;
}
[Serializable]
public class CatalogItemConsumableInfo : PlayFabBaseModel
{
/// <summary>
/// number of times this object can be used, after which it will be removed from the player inventory
/// </summary>
public uint? UsageCount;
/// <summary>
/// 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)
/// </summary>
public uint? UsagePeriod;
/// <summary>
/// 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
/// </summary>
public string UsagePeriodGroup;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class CatalogItemContainerInfo : PlayFabBaseModel
{
/// <summary>
/// unique ItemId values for all items which will be added to the player inventory, once the container has been unlocked
/// </summary>
public List<string> ItemContents;
/// <summary>
/// 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)
/// </summary>
public string KeyItemId;
/// <summary>
/// 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)
/// </summary>
public List<string> ResultTableContents;
/// <summary>
/// virtual currency types and balances which will be added to the player inventory when the container is unlocked
/// </summary>
public Dictionary<string,uint> VirtualCurrencyContents;
}
[Serializable]
public class CharacterInventory : PlayFabBaseModel
{
/// <summary>
/// The id of this character.
/// </summary>
public string CharacterId;
/// <summary>
/// The inventory of this character.
/// </summary>
public List<ItemInstance> Inventory;
}
[Serializable]
public class CharacterLeaderboardEntry : PlayFabBaseModel
{
/// <summary>
/// PlayFab unique identifier of the character that belongs to the user for this leaderboard entry.
/// </summary>
public string CharacterId;
/// <summary>
/// Title-specific display name of the character for this leaderboard entry.
/// </summary>
public string CharacterName;
/// <summary>
/// Name of the character class for this entry.
/// </summary>
public string CharacterType;
/// <summary>
/// Title-specific display name of the user for this leaderboard entry.
/// </summary>
public string DisplayName;
/// <summary>
/// PlayFab unique identifier of the user for this leaderboard entry.
/// </summary>
public string PlayFabId;
/// <summary>
/// User's overall position in the leaderboard.
/// </summary>
public int Position;
/// <summary>
/// Specific value of the user's statistic.
/// </summary>
public int StatValue;
}
[Serializable]
public class CharacterResult : PlayFabBaseModel
{
/// <summary>
/// The id for this character on this player.
/// </summary>
public string CharacterId;
/// <summary>
/// The name of this character.
/// </summary>
public string CharacterName;
/// <summary>
/// The type-string that was given to this character on creation.
/// </summary>
public string CharacterType;
}
public enum CloudScriptRevisionOption
{
Live,
Latest,
Specific
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ConfirmPurchaseRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Purchase order identifier returned from StartPurchase.
/// </summary>
public string OrderId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ConfirmPurchaseResult : PlayFabResultCommon
{
/// <summary>
/// Array of items purchased.
/// </summary>
public List<ItemInstance> Items;
/// <summary>
/// Purchase order identifier.
/// </summary>
public string OrderId;
/// <summary>
/// Date and time of the purchase.
/// </summary>
public DateTime PurchaseDate;
}
[Serializable]
public class ConsumeItemRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique PlayFab assigned ID for a specific character owned by a user
/// </summary>
public string CharacterId;
/// <summary>
/// Number of uses to consume from the item.
/// </summary>
public int ConsumeCount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Unique instance identifier of the item to be consumed.
/// </summary>
public string ItemInstanceId;
}
[Serializable]
public class ConsumeItemResult : PlayFabResultCommon
{
/// <summary>
/// Unique instance identifier of the item with uses consumed.
/// </summary>
public string ItemInstanceId;
/// <summary>
/// Number of uses remaining on the item.
/// </summary>
public int RemainingUses;
}
[Serializable]
public class ConsumeMicrosoftStoreEntitlementsRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version to use
/// </summary>
public string CatalogVersion;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Marketplace specific payload containing details to fetch in app purchase transactions
/// </summary>
public MicrosoftStorePayload MarketplaceSpecificData;
}
[Serializable]
public class ConsumeMicrosoftStoreEntitlementsResponse : PlayFabResultCommon
{
/// <summary>
/// Details for the items purchased.
/// </summary>
public List<ItemInstance> Items;
}
[Serializable]
public class ConsumePS5EntitlementsRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version to use
/// </summary>
public string CatalogVersion;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Marketplace specific payload containing details to fetch in app purchase transactions
/// </summary>
public PlayStation5Payload MarketplaceSpecificData;
}
[Serializable]
public class ConsumePS5EntitlementsResult : PlayFabResultCommon
{
/// <summary>
/// Details for the items purchased.
/// </summary>
public List<ItemInstance> Items;
}
[Serializable]
public class ConsumePSNEntitlementsRequest : PlayFabRequestCommon
{
/// <summary>
/// Which catalog to match granted entitlements against. If null, defaults to title default catalog
/// </summary>
public string CatalogVersion;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Id of the PlayStation :tm: Network service label to consume entitlements from
/// </summary>
public int ServiceLabel;
}
[Serializable]
public class ConsumePSNEntitlementsResult : PlayFabResultCommon
{
/// <summary>
/// Array of items granted to the player as a result of consuming entitlements.
/// </summary>
public List<ItemInstance> ItemsGranted;
}
[Serializable]
public class ConsumeXboxEntitlementsRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version to use
/// </summary>
public string CatalogVersion;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Token provided by the Xbox Live SDK/XDK method GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", "").
/// </summary>
public string XboxToken;
}
[Serializable]
public class ConsumeXboxEntitlementsResult : PlayFabResultCommon
{
/// <summary>
/// Details for the items purchased.
/// </summary>
public List<ItemInstance> Items;
}
[Serializable]
public class ContactEmailInfoModel : PlayFabBaseModel
{
/// <summary>
/// The email address
/// </summary>
public string EmailAddress;
/// <summary>
/// The name of the email info data
/// </summary>
public string Name;
/// <summary>
/// The verification status of the email
/// </summary>
public EmailVerificationStatus? VerificationStatus;
}
public enum ContinentCode
{
AF,
AN,
AS,
EU,
NA,
OC,
SA,
Unknown
}
public 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,
Unknown
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class CreateSharedGroupRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique identifier for the shared group (a random identifier will be assigned, if one is not specified).
/// </summary>
public string SharedGroupId;
}
[Serializable]
public class CreateSharedGroupResult : PlayFabResultCommon
{
/// <summary>
/// Unique identifier for the shared group.
/// </summary>
public string SharedGroupId;
}
public 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
}
/// <summary>
/// Any arbitrary information collected by the device
/// </summary>
[Serializable]
public class DeviceInfoRequest : PlayFabRequestCommon
{
/// <summary>
/// Information posted to the PlayStream Event. Currently arbitrary, and specific to the environment sending it.
/// </summary>
public Dictionary<string,object> Info;
}
public enum EmailVerificationStatus
{
Unverified,
Pending,
Confirmed
}
[Serializable]
public class EmptyResponse : PlayFabResultCommon
{
}
[Serializable]
public class EmptyResult : PlayFabResultCommon
{
}
/// <summary>
/// Combined entity type and ID structure which uniquely identifies a single entity.
/// </summary>
[Serializable]
public class EntityKey : PlayFabBaseModel
{
/// <summary>
/// Unique ID of the entity.
/// </summary>
public string Id;
/// <summary>
/// Entity type. See https://docs.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types
/// </summary>
public string Type;
}
[Serializable]
public class EntityTokenResponse : PlayFabBaseModel
{
/// <summary>
/// The entity id and type.
/// </summary>
public EntityKey Entity;
/// <summary>
/// The token used to set X-EntityToken for all entity based API calls.
/// </summary>
public string EntityToken;
/// <summary>
/// The time the token will expire, if it is an expiring token, in UTC.
/// </summary>
public DateTime? TokenExpiration;
}
[Serializable]
public class ExecuteCloudScriptRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// The name of the CloudScript function to execute
/// </summary>
public string FunctionName;
/// <summary>
/// Object that is passed in to the function as the first argument
/// </summary>
public object FunctionParameter;
/// <summary>
/// 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.
/// </summary>
public bool? GeneratePlayStreamEvent;
/// <summary>
/// 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'.
/// </summary>
public CloudScriptRevisionOption? RevisionSelection;
/// <summary>
/// The specivic revision to execute, when RevisionSelection is set to 'Specific'
/// </summary>
public int? SpecificRevision;
}
[Serializable]
public class ExecuteCloudScriptResult : PlayFabResultCommon
{
/// <summary>
/// Number of PlayFab API requests issued by the CloudScript function
/// </summary>
public int APIRequestsIssued;
/// <summary>
/// Information about the error, if any, that occurred during execution
/// </summary>
public ScriptExecutionError Error;
public double ExecutionTimeSeconds;
/// <summary>
/// The name of the function that executed
/// </summary>
public string FunctionName;
/// <summary>
/// The object returned from the CloudScript function, if any
/// </summary>
public object FunctionResult;
/// <summary>
/// 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.
/// </summary>
public bool? FunctionResultTooLarge;
/// <summary>
/// Number of external HTTP requests issued by the CloudScript function
/// </summary>
public int HttpRequestsIssued;
/// <summary>
/// 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.
/// </summary>
public List<LogStatement> Logs;
/// <summary>
/// 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.
/// </summary>
public bool? LogsTooLarge;
public uint MemoryConsumedBytes;
/// <summary>
/// Processor time consumed while executing the function. This does not include time spent waiting on API calls or HTTP
/// requests.
/// </summary>
public double ProcessorTimeSeconds;
/// <summary>
/// The revision of the CloudScript that executed
/// </summary>
public int Revision;
}
public enum ExternalFriendSources
{
None,
Steam,
Facebook,
Xbox,
Psn,
All
}
[Serializable]
public class FacebookInstantGamesPlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique Facebook Instant Games identifier for a user.
/// </summary>
public string FacebookInstantGamesId;
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Facebook Instant Games identifier.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class FacebookPlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique Facebook identifier for a user.
/// </summary>
public string FacebookId;
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Facebook identifier.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class FriendInfo : PlayFabBaseModel
{
/// <summary>
/// Available Facebook information (if the user and connected Facebook friend both have PlayFab Accounts in the same title).
/// </summary>
public UserFacebookInfo FacebookInfo;
/// <summary>
/// PlayFab unique identifier for this friend.
/// </summary>
public string FriendPlayFabId;
/// <summary>
/// Available Game Center information (if the user and connected Game Center friend both have PlayFab Accounts in the same
/// title).
/// </summary>
public UserGameCenterInfo GameCenterInfo;
/// <summary>
/// The profile of the user, if requested.
/// </summary>
public PlayerProfileModel Profile;
/// <summary>
/// Available PlayStation :tm: Network information, if the user connected PlayStation :tm Network friend both have PlayFab
/// Accounts in the same title.
/// </summary>
public UserPsnInfo PSNInfo;
/// <summary>
/// Available Steam information (if the user and connected Steam friend both have PlayFab Accounts in the same title).
/// </summary>
public UserSteamInfo SteamInfo;
/// <summary>
/// Tags which have been associated with this friend.
/// </summary>
public List<string> Tags;
/// <summary>
/// Title-specific display name for this friend.
/// </summary>
public string TitleDisplayName;
/// <summary>
/// PlayFab unique username for this friend.
/// </summary>
public string Username;
/// <summary>
/// Available Xbox information, (if the user and connected Xbox Live friend both have PlayFab Accounts in the same title).
/// </summary>
public UserXboxInfo XboxInfo;
}
[Serializable]
public class GameCenterPlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique Game Center identifier for a user.
/// </summary>
public string GameCenterId;
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Game Center identifier.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class GenericPlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique generic service identifier for a user.
/// </summary>
public GenericServiceId GenericId;
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the given generic identifier.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class GenericServiceId : PlayFabBaseModel
{
/// <summary>
/// Name of the service for which the player has a unique identifier.
/// </summary>
public string ServiceName;
/// <summary>
/// Unique identifier of the player in that service.
/// </summary>
public string UserId;
}
[Serializable]
public class GetAccountInfoRequest : PlayFabRequestCommon
{
/// <summary>
/// User email address for the account to find (if no Username is specified).
/// </summary>
public string Email;
/// <summary>
/// Unique PlayFab identifier of the user whose info is being requested. Optional, defaults to the authenticated user if no
/// other lookup identifier set.
/// </summary>
public string PlayFabId;
/// <summary>
/// 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.
/// </summary>
public string TitleDisplayName;
/// <summary>
/// PlayFab Username for the account to find (if no PlayFabId is specified).
/// </summary>
public string Username;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetAccountInfoResult : PlayFabResultCommon
{
/// <summary>
/// Account information for the local user.
/// </summary>
public UserAccountInfo AccountInfo;
}
/// <summary>
/// Using an AppId to return a list of valid ad placements for a player.
/// </summary>
[Serializable]
public class GetAdPlacementsRequest : PlayFabRequestCommon
{
/// <summary>
/// The current AppId to use
/// </summary>
public string AppId;
/// <summary>
/// Using the name or unique identifier, filter the result for get a specific placement.
/// </summary>
public NameIdentifier Identifier;
}
/// <summary>
/// Array of AdPlacementDetails
/// </summary>
[Serializable]
public class GetAdPlacementsResult : PlayFabResultCommon
{
/// <summary>
/// Array of results
/// </summary>
public List<AdPlacementDetails> AdPlacements;
}
[Serializable]
public class GetCatalogItemsRequest : PlayFabRequestCommon
{
/// <summary>
/// Which catalog is being requested. If null, uses the default catalog.
/// </summary>
public string CatalogVersion;
}
/// <summary>
/// If CatalogVersion is not specified, only inventory items associated with the most recent version of the catalog will be
/// returned.
/// </summary>
[Serializable]
public class GetCatalogItemsResult : PlayFabResultCommon
{
/// <summary>
/// Array of items which can be purchased.
/// </summary>
public List<CatalogItem> Catalog;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetCharacterDataRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique PlayFab assigned ID for a specific character owned by a user
/// </summary>
public string CharacterId;
/// <summary>
/// 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.
/// </summary>
public uint? IfChangedFromDataVersion;
/// <summary>
/// Specific keys to search for in the custom user data.
/// </summary>
public List<string> Keys;
/// <summary>
/// Unique PlayFab identifier of the user to load data for. Optional, defaults to yourself if not set.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class GetCharacterDataResult : PlayFabResultCommon
{
/// <summary>
/// Unique PlayFab assigned ID for a specific character owned by a user
/// </summary>
public string CharacterId;
/// <summary>
/// User specific data for this title.
/// </summary>
public Dictionary<string,UserDataRecord> Data;
/// <summary>
/// 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.
/// </summary>
public uint DataVersion;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetCharacterInventoryRequest : PlayFabRequestCommon
{
/// <summary>
/// Used to limit results to only those from a specific catalog version.
/// </summary>
public string CatalogVersion;
/// <summary>
/// Unique PlayFab assigned ID for a specific character owned by a user
/// </summary>
public string CharacterId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class GetCharacterInventoryResult : PlayFabResultCommon
{
/// <summary>
/// Unique identifier of the character for this inventory.
/// </summary>
public string CharacterId;
/// <summary>
/// Array of inventory items belonging to the character.
/// </summary>
public List<ItemInstance> Inventory;
/// <summary>
/// Array of virtual currency balance(s) belonging to the character.
/// </summary>
public Dictionary<string,int> VirtualCurrency;
/// <summary>
/// Array of remaining times and timestamps for virtual currencies.
/// </summary>
public Dictionary<string,VirtualCurrencyRechargeTime> VirtualCurrencyRechargeTimes;
}
[Serializable]
public class GetCharacterLeaderboardRequest : PlayFabRequestCommon
{
/// <summary>
/// Maximum number of entries to retrieve. Default 10, maximum 100.
/// </summary>
public int? MaxResultsCount;
/// <summary>
/// First entry in the leaderboard to be retrieved.
/// </summary>
public int StartPosition;
/// <summary>
/// Unique identifier for the title-specific statistic for the leaderboard.
/// </summary>
public string StatisticName;
}
/// <summary>
/// Note that the Position of the character in the results is for the overall leaderboard.
/// </summary>
[Serializable]
public class GetCharacterLeaderboardResult : PlayFabResultCommon
{
/// <summary>
/// Ordered list of leaderboard entries.
/// </summary>
public List<CharacterLeaderboardEntry> Leaderboard;
}
[Serializable]
public class GetCharacterStatisticsRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique PlayFab assigned ID for a specific character owned by a user
/// </summary>
public string CharacterId;
}
/// <summary>
/// In addition to being available for use by the title, the statistics are used for all leaderboard operations in PlayFab.
/// </summary>
[Serializable]
public class GetCharacterStatisticsResult : PlayFabResultCommon
{
/// <summary>
/// The requested character statistics.
/// </summary>
public Dictionary<string,int> CharacterStatistics;
}
[Serializable]
public class GetContentDownloadUrlRequest : PlayFabRequestCommon
{
/// <summary>
/// HTTP method to fetch item - GET or HEAD. Use HEAD when only fetching metadata. Default is GET.
/// </summary>
public string HttpMethod;
/// <summary>
/// Key of the content item to fetch, usually formatted as a path, e.g. images/a.png
/// </summary>
public string Key;
/// <summary>
/// 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.
/// </summary>
public bool? ThruCDN;
}
[Serializable]
public class GetContentDownloadUrlResult : PlayFabResultCommon
{
/// <summary>
/// URL for downloading content via HTTP GET or HEAD method. The URL will expire in approximately one hour.
/// </summary>
public string URL;
}
[Serializable]
public class GetFriendLeaderboardAroundPlayerRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Indicates which other platforms' friends should be included in the response. In HTTP, it is represented as a
/// comma-separated list of platforms.
/// </summary>
public ExternalFriendSources? ExternalPlatformFriends;
/// <summary>
/// Maximum number of entries to retrieve. Default 10, maximum 100.
/// </summary>
public int? MaxResultsCount;
/// <summary>
/// PlayFab unique identifier of the user to center the leaderboard around. If null will center on the logged in user.
/// </summary>
public string PlayFabId;
/// <summary>
/// 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.
/// </summary>
public PlayerProfileViewConstraints ProfileConstraints;
/// <summary>
/// Statistic used to rank players for this leaderboard.
/// </summary>
public string StatisticName;
/// <summary>
/// The version of the leaderboard to get.
/// </summary>
public int? Version;
/// <summary>
/// Xbox token if Xbox friends should be included. Requires Xbox be configured on PlayFab.
/// </summary>
public string XboxToken;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetFriendLeaderboardAroundPlayerResult : PlayFabResultCommon
{
/// <summary>
/// Ordered listing of users and their positions in the requested leaderboard.
/// </summary>
public List<PlayerLeaderboardEntry> Leaderboard;
/// <summary>
/// The time the next scheduled reset will occur. Null if the leaderboard does not reset on a schedule.
/// </summary>
public DateTime? NextReset;
/// <summary>
/// The version of the leaderboard returned.
/// </summary>
public int Version;
}
[Serializable]
public class GetFriendLeaderboardRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Indicates which other platforms' friends should be included in the response. In HTTP, it is represented as a
/// comma-separated list of platforms.
/// </summary>
public ExternalFriendSources? ExternalPlatformFriends;
/// <summary>
/// Maximum number of entries to retrieve. Default 10, maximum 100.
/// </summary>
public int? MaxResultsCount;
/// <summary>
/// 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.
/// </summary>
public PlayerProfileViewConstraints ProfileConstraints;
/// <summary>
/// Position in the leaderboard to start this listing (defaults to the first entry).
/// </summary>
public int StartPosition;
/// <summary>
/// Statistic used to rank friends for this leaderboard.
/// </summary>
public string StatisticName;
/// <summary>
/// The version of the leaderboard to get.
/// </summary>
public int? Version;
/// <summary>
/// Xbox token if Xbox friends should be included. Requires Xbox be configured on PlayFab.
/// </summary>
public string XboxToken;
}
[Serializable]
public class GetFriendsListRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Indicates which other platforms' friends should be included in the response. In HTTP, it is represented as a
/// comma-separated list of platforms.
/// </summary>
public ExternalFriendSources? ExternalPlatformFriends;
/// <summary>
/// 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.
/// </summary>
public PlayerProfileViewConstraints ProfileConstraints;
/// <summary>
/// Xbox token if Xbox friends should be included. Requires Xbox be configured on PlayFab.
/// </summary>
public string XboxToken;
}
/// <summary>
/// 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. Note: If the user authenticated with
/// AuthenticationToken when calling LoginWithFacebook, instead of AcessToken, an empty list will be returned. For Xbox
/// Live, user has to have logged into the Xbox Live recently, and only friends who also play this game will be included.
/// </summary>
[Serializable]
public class GetFriendsListResult : PlayFabResultCommon
{
/// <summary>
/// Array of friends found.
/// </summary>
public List<FriendInfo> Friends;
}
[Serializable]
public class GetLeaderboardAroundCharacterRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique PlayFab assigned ID for a specific character on which to center the leaderboard.
/// </summary>
public string CharacterId;
/// <summary>
/// Maximum number of entries to retrieve. Default 10, maximum 100.
/// </summary>
public int? MaxResultsCount;
/// <summary>
/// Unique identifier for the title-specific statistic for the leaderboard.
/// </summary>
public string StatisticName;
}
/// <summary>
/// Note: When calling 'GetLeaderboardAround...' APIs, the position of the character defaults to 0 when the character does
/// not have the corresponding statistic.
/// </summary>
[Serializable]
public class GetLeaderboardAroundCharacterResult : PlayFabResultCommon
{
/// <summary>
/// Ordered list of leaderboard entries.
/// </summary>
public List<CharacterLeaderboardEntry> Leaderboard;
}
[Serializable]
public class GetLeaderboardAroundPlayerRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Maximum number of entries to retrieve. Default 10, maximum 100.
/// </summary>
public int? MaxResultsCount;
/// <summary>
/// PlayFab unique identifier of the user to center the leaderboard around. If null will center on the logged in user.
/// </summary>
public string PlayFabId;
/// <summary>
/// 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.
/// </summary>
public PlayerProfileViewConstraints ProfileConstraints;
/// <summary>
/// Statistic used to rank players for this leaderboard.
/// </summary>
public string StatisticName;
/// <summary>
/// The version of the leaderboard to get.
/// </summary>
public int? Version;
}
/// <summary>
/// Note: When calling 'GetLeaderboardAround...' APIs, the position of the user defaults to 0 when the user does not have
/// the corresponding statistic.
/// </summary>
[Serializable]
public class GetLeaderboardAroundPlayerResult : PlayFabResultCommon
{
/// <summary>
/// Ordered listing of users and their positions in the requested leaderboard.
/// </summary>
public List<PlayerLeaderboardEntry> Leaderboard;
/// <summary>
/// The time the next scheduled reset will occur. Null if the leaderboard does not reset on a schedule.
/// </summary>
public DateTime? NextReset;
/// <summary>
/// The version of the leaderboard returned.
/// </summary>
public int Version;
}
[Serializable]
public class GetLeaderboardForUsersCharactersRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique identifier for the title-specific statistic for the leaderboard.
/// </summary>
public string StatisticName;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetLeaderboardForUsersCharactersResult : PlayFabResultCommon
{
/// <summary>
/// Ordered list of leaderboard entries.
/// </summary>
public List<CharacterLeaderboardEntry> Leaderboard;
}
[Serializable]
public class GetLeaderboardRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Maximum number of entries to retrieve. Default 10, maximum 100.
/// </summary>
public int? MaxResultsCount;
/// <summary>
/// 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.
/// </summary>
public PlayerProfileViewConstraints ProfileConstraints;
/// <summary>
/// Position in the leaderboard to start this listing (defaults to the first entry).
/// </summary>
public int StartPosition;
/// <summary>
/// Statistic used to rank players for this leaderboard.
/// </summary>
public string StatisticName;
/// <summary>
/// The version of the leaderboard to get.
/// </summary>
public int? Version;
}
/// <summary>
/// Note: the user's Position is relative to the overall leaderboard.
/// </summary>
[Serializable]
public class GetLeaderboardResult : PlayFabResultCommon
{
/// <summary>
/// Ordered listing of users and their positions in the requested leaderboard.
/// </summary>
public List<PlayerLeaderboardEntry> Leaderboard;
/// <summary>
/// The time the next scheduled reset will occur. Null if the leaderboard does not reset on a schedule.
/// </summary>
public DateTime? NextReset;
/// <summary>
/// The version of the leaderboard returned.
/// </summary>
public int Version;
}
[Serializable]
public class GetPaymentTokenRequest : PlayFabRequestCommon
{
/// <summary>
/// The name of service to provide the payment token. Allowed Values are: xsolla
/// </summary>
public string TokenProvider;
}
[Serializable]
public class GetPaymentTokenResult : PlayFabResultCommon
{
/// <summary>
/// PlayFab's purchase order identifier.
/// </summary>
public string OrderId;
/// <summary>
/// The token from provider.
/// </summary>
public string ProviderToken;
}
[Serializable]
public class GetPhotonAuthenticationTokenRequest : PlayFabRequestCommon
{
/// <summary>
/// The Photon applicationId for the game you wish to log into.
/// </summary>
public string PhotonApplicationId;
}
[Serializable]
public class GetPhotonAuthenticationTokenResult : PlayFabResultCommon
{
/// <summary>
/// The Photon authentication token for this game-session.
/// </summary>
public string PhotonCustomAuthenticationToken;
}
[Serializable]
public class GetPlayerCombinedInfoRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// PlayFabId of the user whose data will be returned. If not filled included, we return the data for the calling player.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class GetPlayerCombinedInfoRequestParams : PlayFabBaseModel
{
/// <summary>
/// Whether to get character inventories. Defaults to false.
/// </summary>
public bool GetCharacterInventories;
/// <summary>
/// Whether to get the list of characters. Defaults to false.
/// </summary>
public bool GetCharacterList;
/// <summary>
/// Whether to get player profile. Defaults to false. Has no effect for a new player.
/// </summary>
public bool GetPlayerProfile;
/// <summary>
/// Whether to get player statistics. Defaults to false.
/// </summary>
public bool GetPlayerStatistics;
/// <summary>
/// Whether to get title data. Defaults to false.
/// </summary>
public bool GetTitleData;
/// <summary>
/// Whether to get the player's account Info. Defaults to false
/// </summary>
public bool GetUserAccountInfo;
/// <summary>
/// Whether to get the player's custom data. Defaults to false
/// </summary>
public bool GetUserData;
/// <summary>
/// Whether to get the player's inventory. Defaults to false
/// </summary>
public bool GetUserInventory;
/// <summary>
/// Whether to get the player's read only data. Defaults to false
/// </summary>
public bool GetUserReadOnlyData;
/// <summary>
/// Whether to get the player's virtual currency balances. Defaults to false
/// </summary>
public bool GetUserVirtualCurrency;
/// <summary>
/// Specific statistics to retrieve. Leave null to get all keys. Has no effect if GetPlayerStatistics is false
/// </summary>
public List<string> PlayerStatisticNames;
/// <summary>
/// Specifies the properties to return from the player profile. Defaults to returning the player's display name.
/// </summary>
public PlayerProfileViewConstraints ProfileConstraints;
/// <summary>
/// Specific keys to search for in the custom data. Leave null to get all keys. Has no effect if GetTitleData is false
/// </summary>
public List<string> TitleDataKeys;
/// <summary>
/// Specific keys to search for in the custom data. Leave null to get all keys. Has no effect if GetUserData is false
/// </summary>
public List<string> UserDataKeys;
/// <summary>
/// Specific keys to search for in the custom data. Leave null to get all keys. Has no effect if GetUserReadOnlyData is
/// false
/// </summary>
public List<string> UserReadOnlyDataKeys;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetPlayerCombinedInfoResult : PlayFabResultCommon
{
/// <summary>
/// Results for requested info.
/// </summary>
public GetPlayerCombinedInfoResultPayload InfoResultPayload;
/// <summary>
/// Unique PlayFab assigned ID of the user on whom the operation will be performed.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class GetPlayerCombinedInfoResultPayload : PlayFabBaseModel
{
/// <summary>
/// Account information for the user. This is always retrieved.
/// </summary>
public UserAccountInfo AccountInfo;
/// <summary>
/// Inventories for each character for the user.
/// </summary>
public List<CharacterInventory> CharacterInventories;
/// <summary>
/// List of characters for the user.
/// </summary>
public List<CharacterResult> CharacterList;
/// <summary>
/// The profile of the players. This profile is not guaranteed to be up-to-date. For a new player, this profile will not
/// exist.
/// </summary>
public PlayerProfileModel PlayerProfile;
/// <summary>
/// List of statistics for this player.
/// </summary>
public List<StatisticValue> PlayerStatistics;
/// <summary>
/// Title data for this title.
/// </summary>
public Dictionary<string,string> TitleData;
/// <summary>
/// User specific custom data.
/// </summary>
public Dictionary<string,UserDataRecord> UserData;
/// <summary>
/// The version of the UserData that was returned.
/// </summary>
public uint UserDataVersion;
/// <summary>
/// Array of inventory items in the user's current inventory.
/// </summary>
public List<ItemInstance> UserInventory;
/// <summary>
/// User specific read-only data.
/// </summary>
public Dictionary<string,UserDataRecord> UserReadOnlyData;
/// <summary>
/// The version of the Read-Only UserData that was returned.
/// </summary>
public uint UserReadOnlyDataVersion;
/// <summary>
/// Dictionary of virtual currency balance(s) belonging to the user.
/// </summary>
public Dictionary<string,int> UserVirtualCurrency;
/// <summary>
/// Dictionary of remaining times and timestamps for virtual currencies.
/// </summary>
public Dictionary<string,VirtualCurrencyRechargeTime> UserVirtualCurrencyRechargeTimes;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetPlayerProfileRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Unique PlayFab assigned ID of the user on whom the operation will be performed.
/// </summary>
public string PlayFabId;
/// <summary>
/// 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.
/// </summary>
public PlayerProfileViewConstraints ProfileConstraints;
}
[Serializable]
public class GetPlayerProfileResult : PlayFabResultCommon
{
/// <summary>
/// The profile of the player. This profile is not guaranteed to be up-to-date. For a new player, this profile will not
/// exist.
/// </summary>
public PlayerProfileModel PlayerProfile;
}
[Serializable]
public class GetPlayerSegmentsRequest : PlayFabRequestCommon
{
}
[Serializable]
public class GetPlayerSegmentsResult : PlayFabResultCommon
{
/// <summary>
/// Array of segments the requested player currently belongs to.
/// </summary>
public List<GetSegmentResult> Segments;
}
[Serializable]
public class GetPlayerStatisticsRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// statistics to return (current version will be returned for each)
/// </summary>
public List<string> StatisticNames;
/// <summary>
/// statistics to return, if StatisticNames is not set (only statistics which have a version matching that provided will be
/// returned)
/// </summary>
public List<StatisticNameVersion> StatisticNameVersions;
}
/// <summary>
/// In addition to being available for use by the title, the statistics are used for all leaderboard operations in PlayFab.
/// </summary>
[Serializable]
public class GetPlayerStatisticsResult : PlayFabResultCommon
{
/// <summary>
/// User statistics for the requested user.
/// </summary>
public List<StatisticValue> Statistics;
}
[Serializable]
public class GetPlayerStatisticVersionsRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// unique name of the statistic
/// </summary>
public string StatisticName;
}
[Serializable]
public class GetPlayerStatisticVersionsResult : PlayFabResultCommon
{
/// <summary>
/// version change history of the statistic
/// </summary>
public List<PlayerStatisticVersion> StatisticVersions;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetPlayerTagsRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Optional namespace to filter results by
/// </summary>
public string Namespace;
/// <summary>
/// Unique PlayFab assigned ID of the user on whom the operation will be performed.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class GetPlayerTagsResult : PlayFabResultCommon
{
/// <summary>
/// Unique PlayFab assigned ID of the user on whom the operation will be performed.
/// </summary>
public string PlayFabId;
/// <summary>
/// Canonical tags (including namespace and tag's name) for the requested user
/// </summary>
public List<string> Tags;
}
[Serializable]
public class GetPlayerTradesRequest : PlayFabRequestCommon
{
/// <summary>
/// Returns only trades with the given status. If null, returns all trades.
/// </summary>
public TradeStatus? StatusFilter;
}
[Serializable]
public class GetPlayerTradesResponse : PlayFabResultCommon
{
/// <summary>
/// History of trades which this player has accepted.
/// </summary>
public List<TradeInfo> AcceptedTrades;
/// <summary>
/// The trades for this player which are currently available to be accepted.
/// </summary>
public List<TradeInfo> OpenedTrades;
}
[Serializable]
public class GetPlayFabIDsFromFacebookIDsRequest : PlayFabRequestCommon
{
/// <summary>
/// Array of unique Facebook identifiers for which the title needs to get PlayFab identifiers. The array cannot exceed 2,000
/// in length.
/// </summary>
public List<string> FacebookIDs;
}
/// <summary>
/// For Facebook identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromFacebookIDsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of Facebook identifiers to PlayFab identifiers.
/// </summary>
public List<FacebookPlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromFacebookInstantGamesIdsRequest : PlayFabRequestCommon
{
/// <summary>
/// Array of unique Facebook Instant Games identifiers for which the title needs to get PlayFab identifiers. The array
/// cannot exceed 25 in length.
/// </summary>
public List<string> FacebookInstantGamesIds;
}
/// <summary>
/// For Facebook Instant Game identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromFacebookInstantGamesIdsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of Facebook Instant Games identifiers to PlayFab identifiers.
/// </summary>
public List<FacebookInstantGamesPlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromGameCenterIDsRequest : PlayFabRequestCommon
{
/// <summary>
/// Array of unique Game Center identifiers (the Player Identifier) for which the title needs to get PlayFab identifiers.
/// The array cannot exceed 2,000 in length.
/// </summary>
public List<string> GameCenterIDs;
}
/// <summary>
/// For Game Center identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromGameCenterIDsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of Game Center identifiers to PlayFab identifiers.
/// </summary>
public List<GameCenterPlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromGenericIDsRequest : PlayFabRequestCommon
{
/// <summary>
/// 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.
/// </summary>
public List<GenericServiceId> GenericIDs;
}
/// <summary>
/// For generic service identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromGenericIDsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of generic service identifiers to PlayFab identifiers.
/// </summary>
public List<GenericPlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromGoogleIDsRequest : PlayFabRequestCommon
{
/// <summary>
/// Array of unique Google identifiers (Google+ user IDs) for which the title needs to get PlayFab identifiers. The array
/// cannot exceed 2,000 in length.
/// </summary>
public List<string> GoogleIDs;
}
/// <summary>
/// For Google identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromGoogleIDsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of Google identifiers to PlayFab identifiers.
/// </summary>
public List<GooglePlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromGooglePlayGamesPlayerIDsRequest : PlayFabRequestCommon
{
/// <summary>
/// Array of unique Google Play Games identifiers (Google+ user IDs) for which the title needs to get PlayFab identifiers.
/// The array cannot exceed 2,000 in length.
/// </summary>
public List<string> GooglePlayGamesPlayerIDs;
}
/// <summary>
/// For Google Play Games identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromGooglePlayGamesPlayerIDsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of Google Play Games identifiers to PlayFab identifiers.
/// </summary>
public List<GooglePlayGamesPlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromKongregateIDsRequest : PlayFabRequestCommon
{
/// <summary>
/// Array of unique Kongregate identifiers (Kongregate's user_id) for which the title needs to get PlayFab identifiers. The
/// array cannot exceed 2,000 in length.
/// </summary>
public List<string> KongregateIDs;
}
/// <summary>
/// For Kongregate identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromKongregateIDsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of Kongregate identifiers to PlayFab identifiers.
/// </summary>
public List<KongregatePlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromNintendoServiceAccountIdsRequest : PlayFabRequestCommon
{
/// <summary>
/// Array of unique Nintendo Switch Account identifiers for which the title needs to get PlayFab identifiers. The array
/// cannot exceed 2,000 in length.
/// </summary>
public List<string> NintendoAccountIds;
}
/// <summary>
/// For Nintendo Service Account identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromNintendoServiceAccountIdsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of Nintendo Switch Service Account identifiers to PlayFab identifiers.
/// </summary>
public List<NintendoServiceAccountPlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromNintendoSwitchDeviceIdsRequest : PlayFabRequestCommon
{
/// <summary>
/// Array of unique Nintendo Switch Device identifiers for which the title needs to get PlayFab identifiers. The array
/// cannot exceed 2,000 in length.
/// </summary>
public List<string> NintendoSwitchDeviceIds;
}
/// <summary>
/// For Nintendo Switch identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromNintendoSwitchDeviceIdsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of Nintendo Switch Device identifiers to PlayFab identifiers.
/// </summary>
public List<NintendoSwitchPlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromPSNAccountIDsRequest : PlayFabRequestCommon
{
/// <summary>
/// Id of the PlayStation :tm: Network issuer environment. If null, defaults to production environment.
/// </summary>
public int? IssuerId;
/// <summary>
/// Array of unique PlayStation :tm: Network identifiers for which the title needs to get PlayFab identifiers. The array
/// cannot exceed 2,000 in length.
/// </summary>
public List<string> PSNAccountIDs;
}
/// <summary>
/// For PlayStation :tm: Network identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromPSNAccountIDsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of PlayStation :tm: Network identifiers to PlayFab identifiers.
/// </summary>
public List<PSNAccountPlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromPSNOnlineIDsRequest : PlayFabRequestCommon
{
/// <summary>
/// Id of the PlayStation :tm: Network issuer environment. If null, defaults to production environment.
/// </summary>
public int? IssuerId;
/// <summary>
/// Array of unique PlayStation :tm: Network identifiers for which the title needs to get PlayFab identifiers. The array
/// cannot exceed 2,000 in length.
/// </summary>
public List<string> PSNOnlineIDs;
}
/// <summary>
/// For PlayStation :tm: Network identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromPSNOnlineIDsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of PlayStation :tm: Network identifiers to PlayFab identifiers.
/// </summary>
public List<PSNOnlinePlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromSteamIDsRequest : PlayFabRequestCommon
{
/// <summary>
/// Array of unique Steam identifiers (Steam profile IDs) for which the title needs to get PlayFab identifiers. The array
/// cannot exceed 2,000 in length.
/// </summary>
public List<string> SteamStringIDs;
}
/// <summary>
/// For Steam identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromSteamIDsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of Steam identifiers to PlayFab identifiers.
/// </summary>
public List<SteamPlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromTwitchIDsRequest : PlayFabRequestCommon
{
/// <summary>
/// Array of unique Twitch identifiers (Twitch's _id) for which the title needs to get PlayFab identifiers. The array cannot
/// exceed 2,000 in length.
/// </summary>
public List<string> TwitchIds;
}
/// <summary>
/// For Twitch identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromTwitchIDsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of Twitch identifiers to PlayFab identifiers.
/// </summary>
public List<TwitchPlayFabIdPair> Data;
}
[Serializable]
public class GetPlayFabIDsFromXboxLiveIDsRequest : PlayFabRequestCommon
{
/// <summary>
/// The ID of Xbox Live sandbox.
/// </summary>
public string Sandbox;
/// <summary>
/// Array of unique Xbox Live account identifiers for which the title needs to get PlayFab identifiers. The array cannot
/// exceed 2,000 in length.
/// </summary>
public List<string> XboxLiveAccountIDs;
}
/// <summary>
/// For XboxLive identifiers which have not been linked to PlayFab accounts, null will be returned.
/// </summary>
[Serializable]
public class GetPlayFabIDsFromXboxLiveIDsResult : PlayFabResultCommon
{
/// <summary>
/// Mapping of Xbox Live identifiers to PlayFab identifiers.
/// </summary>
public List<XboxLiveAccountPlayFabIdPair> Data;
}
/// <summary>
/// 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 helloplayfab@microsoft.com. Note that there may up
/// to a minute delay in between updating title data and this API call returning the newest value.
/// </summary>
[Serializable]
public class GetPublisherDataRequest : PlayFabRequestCommon
{
/// <summary>
/// array of keys to get back data from the Publisher data blob, set by the admin tools
/// </summary>
public List<string> Keys;
}
[Serializable]
public class GetPublisherDataResult : PlayFabResultCommon
{
/// <summary>
/// a dictionary object of key / value pairs
/// </summary>
public Dictionary<string,string> Data;
}
[Serializable]
public class GetPurchaseRequest : PlayFabRequestCommon
{
/// <summary>
/// Purchase order identifier.
/// </summary>
public string OrderId;
}
[Serializable]
public class GetPurchaseResult : PlayFabResultCommon
{
/// <summary>
/// Purchase order identifier.
/// </summary>
public string OrderId;
/// <summary>
/// Payment provider used for transaction (If not VC)
/// </summary>
public string PaymentProvider;
/// <summary>
/// Date and time of the purchase.
/// </summary>
public DateTime PurchaseDate;
/// <summary>
/// Provider transaction ID (If not VC)
/// </summary>
public string TransactionId;
/// <summary>
/// PlayFab transaction status
/// </summary>
public string TransactionStatus;
}
[Serializable]
public class GetSegmentResult : PlayFabBaseModel
{
/// <summary>
/// Identifier of the segments AB Test, if it is attached to one.
/// </summary>
public string ABTestParent;
/// <summary>
/// Unique identifier for this segment.
/// </summary>
public string Id;
/// <summary>
/// Segment name.
/// </summary>
public string Name;
}
[Serializable]
public class GetSharedGroupDataRequest : PlayFabRequestCommon
{
/// <summary>
/// If true, return the list of all members of the shared group.
/// </summary>
public bool? GetMembers;
/// <summary>
/// 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).
/// </summary>
public List<string> Keys;
/// <summary>
/// Unique identifier for the shared group.
/// </summary>
public string SharedGroupId;
}
[Serializable]
public class GetSharedGroupDataResult : PlayFabResultCommon
{
/// <summary>
/// Data for the requested keys.
/// </summary>
public Dictionary<string,SharedGroupDataRecord> Data;
/// <summary>
/// List of PlayFabId identifiers for the members of this group, if requested.
/// </summary>
public List<string> Members;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetStoreItemsRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version to store items from. Use default catalog version if null
/// </summary>
public string CatalogVersion;
/// <summary>
/// Unqiue identifier for the store which is being requested.
/// </summary>
public string StoreId;
}
[Serializable]
public class GetStoreItemsResult : PlayFabResultCommon
{
/// <summary>
/// The base catalog that this store is a part of.
/// </summary>
public string CatalogVersion;
/// <summary>
/// Additional data about the store.
/// </summary>
public StoreMarketingModel MarketingData;
/// <summary>
/// How the store was last updated (Admin or a third party).
/// </summary>
public SourceType? Source;
/// <summary>
/// Array of items which can be purchased from this store.
/// </summary>
public List<StoreItem> Store;
/// <summary>
/// The ID of this store.
/// </summary>
public string StoreId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetTimeRequest : PlayFabRequestCommon
{
}
/// <summary>
/// Time is always returned as Coordinated Universal Time (UTC).
/// </summary>
[Serializable]
public class GetTimeResult : PlayFabResultCommon
{
/// <summary>
/// Current server time when the request was received, in UTC
/// </summary>
public DateTime Time;
}
/// <summary>
/// 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. If the player belongs to an experiment variant that uses title data overrides, the overrides are applied
/// automatically and returned with the title data. Note that there may up to a minute delay in between updating title data
/// and this API call returning the newest value.
/// </summary>
[Serializable]
public class GetTitleDataRequest : PlayFabRequestCommon
{
/// <summary>
/// Specific keys to search for in the title data (leave null to get all keys)
/// </summary>
public List<string> Keys;
/// <summary>
/// Optional field that specifies the name of an override. This value is ignored when used by the game client; otherwise,
/// the overrides are applied automatically to the title data.
/// </summary>
public string OverrideLabel;
}
[Serializable]
public class GetTitleDataResult : PlayFabResultCommon
{
/// <summary>
/// a dictionary object of key / value pairs
/// </summary>
public Dictionary<string,string> Data;
}
[Serializable]
public class GetTitleNewsRequest : PlayFabRequestCommon
{
/// <summary>
/// Limits the results to the last n entries. Defaults to 10 if not set.
/// </summary>
public int? Count;
}
[Serializable]
public class GetTitleNewsResult : PlayFabResultCommon
{
/// <summary>
/// Array of news items.
/// </summary>
public List<TitleNewsItem> News;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetTitlePublicKeyRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
/// <summary>
/// The shared secret key for this title
/// </summary>
public string TitleSharedSecret;
}
[Serializable]
public class GetTitlePublicKeyResult : PlayFabResultCommon
{
/// <summary>
/// Base64 encoded RSA CSP byte array blob containing the title's public RSA key
/// </summary>
public string RSAPublicKey;
}
[Serializable]
public class GetTradeStatusRequest : PlayFabRequestCommon
{
/// <summary>
/// Player who opened trade.
/// </summary>
public string OfferingPlayerId;
/// <summary>
/// Trade identifier as returned by OpenTradeOffer.
/// </summary>
public string TradeId;
}
[Serializable]
public class GetTradeStatusResponse : PlayFabResultCommon
{
/// <summary>
/// Information about the requested trade.
/// </summary>
public TradeInfo Trade;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetUserDataRequest : PlayFabRequestCommon
{
/// <summary>
/// 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.
/// </summary>
public uint? IfChangedFromDataVersion;
/// <summary>
/// List of unique keys to load from.
/// </summary>
public List<string> Keys;
/// <summary>
/// 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.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class GetUserDataResult : PlayFabResultCommon
{
/// <summary>
/// User specific data for this title.
/// </summary>
public Dictionary<string,UserDataRecord> Data;
/// <summary>
/// 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.
/// </summary>
public uint DataVersion;
}
[Serializable]
public class GetUserInventoryRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GetUserInventoryResult : PlayFabResultCommon
{
/// <summary>
/// Array of inventory items belonging to the user.
/// </summary>
public List<ItemInstance> Inventory;
/// <summary>
/// Array of virtual currency balance(s) belonging to the user.
/// </summary>
public Dictionary<string,int> VirtualCurrency;
/// <summary>
/// Array of remaining times and timestamps for virtual currencies.
/// </summary>
public Dictionary<string,VirtualCurrencyRechargeTime> VirtualCurrencyRechargeTimes;
}
[Serializable]
public class GooglePlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique Google identifier for a user.
/// </summary>
public string GoogleId;
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Google identifier.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class GooglePlayGamesPlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique Google Play Games identifier for a user.
/// </summary>
public string GooglePlayGamesPlayerId;
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Google Play Games identifier.
/// </summary>
public string PlayFabId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class GrantCharacterToUserRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version from which items are to be granted.
/// </summary>
public string CatalogVersion;
/// <summary>
/// Non-unique display name of the character being granted (1-40 characters in length).
/// </summary>
public string CharacterName;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Catalog item identifier of the item in the user's inventory that corresponds to the character in the catalog to be
/// created.
/// </summary>
public string ItemId;
}
[Serializable]
public class GrantCharacterToUserResult : PlayFabResultCommon
{
/// <summary>
/// Unique identifier tagged to this character.
/// </summary>
public string CharacterId;
/// <summary>
/// Type of character that was created.
/// </summary>
public string CharacterType;
/// <summary>
/// Indicates whether this character was created successfully.
/// </summary>
public bool Result;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ItemInstance : PlayFabBaseModel
{
/// <summary>
/// Game specific comment associated with this instance when it was added to the user inventory.
/// </summary>
public string Annotation;
/// <summary>
/// Array of unique items that were awarded when this catalog item was purchased.
/// </summary>
public List<string> BundleContents;
/// <summary>
/// Unique identifier for the parent inventory item, as defined in the catalog, for object which were added from a bundle or
/// container.
/// </summary>
public string BundleParent;
/// <summary>
/// Catalog version for the inventory item, when this instance was created.
/// </summary>
public string CatalogVersion;
/// <summary>
/// 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.
/// </summary>
public Dictionary<string,string> CustomData;
/// <summary>
/// CatalogItem.DisplayName at the time this item was purchased.
/// </summary>
public string DisplayName;
/// <summary>
/// Timestamp for when this instance will expire.
/// </summary>
public DateTime? Expiration;
/// <summary>
/// Class name for the inventory item, as defined in the catalog.
/// </summary>
public string ItemClass;
/// <summary>
/// Unique identifier for the inventory item, as defined in the catalog.
/// </summary>
public string ItemId;
/// <summary>
/// Unique item identifier for this specific instance of the item.
/// </summary>
public string ItemInstanceId;
/// <summary>
/// Timestamp for when this instance was purchased.
/// </summary>
public DateTime? PurchaseDate;
/// <summary>
/// Total number of remaining uses, if this is a consumable item.
/// </summary>
public int? RemainingUses;
/// <summary>
/// Currency type for the cost of the catalog item. Not available when granting items.
/// </summary>
public string UnitCurrency;
/// <summary>
/// Cost of the catalog item in the given currency. Not available when granting items.
/// </summary>
public uint UnitPrice;
/// <summary>
/// The number of uses that were added or removed to this item in this call.
/// </summary>
public int? UsesIncrementedBy;
}
[Serializable]
public class ItemPurchaseRequest : PlayFabBaseModel
{
/// <summary>
/// Title-specific text concerning this purchase.
/// </summary>
public string Annotation;
/// <summary>
/// Unique ItemId of the item to purchase.
/// </summary>
public string ItemId;
/// <summary>
/// How many of this item to purchase. Min 1, maximum 25.
/// </summary>
public uint Quantity;
/// <summary>
/// Items to be upgraded as a result of this purchase (upgraded items are hidden, as they are "replaced" by the new items).
/// </summary>
public List<string> UpgradeFromItems;
}
[Serializable]
public class KongregatePlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique Kongregate identifier for a user.
/// </summary>
public string KongregateId;
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Kongregate identifier.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class LinkAndroidDeviceIDRequest : PlayFabRequestCommon
{
/// <summary>
/// Specific model of the user's device.
/// </summary>
public string AndroidDevice;
/// <summary>
/// Android device identifier for the user's device.
/// </summary>
public string AndroidDeviceId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the device, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
/// <summary>
/// Specific Operating System version for the user's device.
/// </summary>
public string OS;
}
[Serializable]
public class LinkAndroidDeviceIDResult : PlayFabResultCommon
{
}
[Serializable]
public class LinkAppleRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to a specific Apple account, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
/// <summary>
/// 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.
/// </summary>
public string IdentityToken;
}
[Serializable]
public class LinkCustomIDRequest : PlayFabRequestCommon
{
/// <summary>
/// Custom unique identifier for the user, generated by the title.
/// </summary>
public string CustomId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the custom ID, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
}
[Serializable]
public class LinkCustomIDResult : PlayFabResultCommon
{
}
[Serializable]
public class LinkedPlatformAccountModel : PlayFabBaseModel
{
/// <summary>
/// Linked account email of the user on the platform, if available
/// </summary>
public string Email;
/// <summary>
/// Authentication platform
/// </summary>
public LoginIdentityProvider? Platform;
/// <summary>
/// Unique account identifier of the user on the platform
/// </summary>
public string PlatformUserId;
/// <summary>
/// Linked account username of the user on the platform, if available
/// </summary>
public string Username;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class LinkFacebookAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique identifier from Facebook for the user.
/// </summary>
public string AccessToken;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the account, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
}
[Serializable]
public class LinkFacebookAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class LinkFacebookInstantGamesIdRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Facebook Instant Games signature for the user.
/// </summary>
public string FacebookInstantGamesSignature;
/// <summary>
/// If another user is already linked to the Facebook Instant Games ID, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
}
[Serializable]
public class LinkFacebookInstantGamesIdResult : PlayFabResultCommon
{
}
[Serializable]
public class LinkGameCenterAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the account, unlink the other user and re-link. If the current user is already
/// linked, link both accounts
/// </summary>
public bool? ForceLink;
/// <summary>
/// Game Center identifier for the player account to be linked.
/// </summary>
public string GameCenterId;
/// <summary>
/// The URL for the public encryption key that will be used to verify the signature.
/// </summary>
public string PublicKeyUrl;
/// <summary>
/// A random value used to compute the hash and keep it randomized.
/// </summary>
public string Salt;
/// <summary>
/// The verification signature of the authentication payload.
/// </summary>
public string Signature;
/// <summary>
/// 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.
/// </summary>
public string Timestamp;
}
[Serializable]
public class LinkGameCenterAccountResult : PlayFabResultCommon
{
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class LinkGoogleAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the account, unlink the other user and re-link. If the current user is already
/// linked, link both accounts
/// </summary>
public bool? ForceLink;
/// <summary>
/// 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.
/// </summary>
public string ServerAuthCode;
}
[Serializable]
public class LinkGoogleAccountResult : PlayFabResultCommon
{
}
/// <summary>
/// Google Play Games sign-in is accomplished by obtaining a Google OAuth 2.0 credential using the Google Play Games sign-in
/// for Android APIs on the device and passing it to this API.
/// </summary>
[Serializable]
public class LinkGooglePlayGamesServicesAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the account, unlink the other user and re-link. If the current user is already
/// linked, link both accounts
/// </summary>
public bool? ForceLink;
/// <summary>
/// OAuth 2.0 server authentication code obtained on the client by calling the requestServerSideAccess()
/// (https://developers.google.com/games/services/android/signin) Google Play Games client API.
/// </summary>
public string ServerAuthCode;
}
[Serializable]
public class LinkGooglePlayGamesServicesAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class LinkIOSDeviceIDRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Vendor-specific iOS identifier for the user's device.
/// </summary>
public string DeviceId;
/// <summary>
/// Specific model of the user's device.
/// </summary>
public string DeviceModel;
/// <summary>
/// If another user is already linked to the device, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
/// <summary>
/// Specific Operating System version for the user's device.
/// </summary>
public string OS;
}
[Serializable]
public class LinkIOSDeviceIDResult : PlayFabResultCommon
{
}
[Serializable]
public class LinkKongregateAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// Valid session auth ticket issued by Kongregate
/// </summary>
public string AuthTicket;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the account, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
/// <summary>
/// Numeric user ID assigned by Kongregate
/// </summary>
public string KongregateId;
}
[Serializable]
public class LinkKongregateAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class LinkNintendoServiceAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to a specific Nintendo Switch account, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
/// <summary>
/// The JSON Web token (JWT) returned by Nintendo after login. Used to validate the request and find the user ID (Nintendo
/// Switch subject) to link with.
/// </summary>
public string IdentityToken;
}
[Serializable]
public class LinkNintendoSwitchDeviceIdRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the Nintendo Switch Device ID, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
/// <summary>
/// Nintendo Switch unique identifier for the user's device.
/// </summary>
public string NintendoSwitchDeviceId;
}
[Serializable]
public class LinkNintendoSwitchDeviceIdResult : PlayFabResultCommon
{
}
[Serializable]
public class LinkOpenIdConnectRequest : PlayFabRequestCommon
{
/// <summary>
/// A name that identifies which configured OpenID Connect provider relationship to use. Maximum 100 characters.
/// </summary>
public string ConnectionId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to a specific OpenId Connect user, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
/// <summary>
/// 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.
/// </summary>
public string IdToken;
}
[Serializable]
public class LinkPSNAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// Authentication code provided by the PlayStation :tm: Network.
/// </summary>
public string AuthCode;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the account, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
/// <summary>
/// Id of the PlayStation :tm: Network issuer environment. If null, defaults to production environment.
/// </summary>
public int? IssuerId;
/// <summary>
/// Redirect URI supplied to PlayStation :tm: Network when requesting an auth code
/// </summary>
public string RedirectUri;
}
[Serializable]
public class LinkPSNAccountResult : PlayFabResultCommon
{
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class LinkSteamAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the account, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
/// <summary>
/// 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").
/// </summary>
public string SteamTicket;
/// <summary>
/// True if ticket was generated using ISteamUser::GetAuthTicketForWebAPI() using "AzurePlayFab" as the identity string.
/// False if the ticket was generated with ISteamUser::GetAuthSessionTicket().
/// </summary>
public bool? TicketIsServiceSpecific;
}
[Serializable]
public class LinkSteamAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class LinkTwitchAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// Valid token issued by Twitch
/// </summary>
public string AccessToken;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the account, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
}
[Serializable]
public class LinkTwitchAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class LinkXboxAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// If another user is already linked to the account, unlink the other user and re-link.
/// </summary>
public bool? ForceLink;
/// <summary>
/// Token provided by the Xbox Live SDK/XDK method GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", "").
/// </summary>
public string XboxToken;
}
[Serializable]
public class LinkXboxAccountResult : PlayFabResultCommon
{
}
/// <summary>
/// Returns a list of every character that currently belongs to a user.
/// </summary>
[Serializable]
public class ListUsersCharactersRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique PlayFab assigned ID of the user on whom the operation will be performed.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class ListUsersCharactersResult : PlayFabResultCommon
{
/// <summary>
/// The requested list of characters.
/// </summary>
public List<CharacterResult> Characters;
}
[Serializable]
public class LocationModel : PlayFabBaseModel
{
/// <summary>
/// City name.
/// </summary>
public string City;
/// <summary>
/// The two-character continent code for this location
/// </summary>
public ContinentCode? ContinentCode;
/// <summary>
/// The two-character ISO 3166-1 country code for the country associated with the location
/// </summary>
public CountryCode? CountryCode;
/// <summary>
/// Latitude coordinate of the geographic location.
/// </summary>
public double? Latitude;
/// <summary>
/// Longitude coordinate of the geographic location.
/// </summary>
public double? Longitude;
}
public enum LoginIdentityProvider
{
Unknown,
PlayFab,
Custom,
GameCenter,
GooglePlay,
Steam,
XBoxLive,
PSN,
Kongregate,
Facebook,
IOSDevice,
AndroidDevice,
Twitch,
WindowsHello,
GameServer,
CustomServer,
NintendoSwitch,
FacebookInstantGames,
OpenIdConnect,
Apple,
NintendoSwitchAccount,
GooglePlayGames,
XboxMobileStore,
King
}
[Serializable]
public class LoginResult : PlayFabLoginResultCommon
{
/// <summary>
/// If LoginTitlePlayerAccountEntity flag is set on the login request the title_player_account will also be logged in and
/// returned.
/// </summary>
public EntityTokenResponse EntityToken;
/// <summary>
/// Results for requested info.
/// </summary>
public GetPlayerCombinedInfoResultPayload InfoResultPayload;
/// <summary>
/// The time of this user's previous login. If there was no previous login, then it's DateTime.MinValue
/// </summary>
public DateTime? LastLoginTime;
/// <summary>
/// True if the account was newly created on this login.
/// </summary>
public bool NewlyCreated;
/// <summary>
/// Player's unique PlayFabId.
/// </summary>
public string PlayFabId;
/// <summary>
/// Unique token authorizing the user and game at the server level, for the current session.
/// </summary>
public string SessionTicket;
/// <summary>
/// Settings specific to this user.
/// </summary>
public UserSettings SettingsForUser;
/// <summary>
/// The experimentation treatments for this user at the time of login.
/// </summary>
public TreatmentAssignment TreatmentAssignment;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class LoginWithAndroidDeviceIDRequest : PlayFabRequestCommon
{
/// <summary>
/// Specific model of the user's device.
/// </summary>
public string AndroidDevice;
/// <summary>
/// Android device identifier for the user's device.
/// </summary>
public string AndroidDeviceId;
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Specific Operating System version for the user's device.
/// </summary>
public string OS;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
[Serializable]
public class LoginWithAppleRequest : PlayFabRequestCommon
{
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// The JSON Web token (JWT) returned by Apple after login. Represented as the identityToken field in the authorization
/// credential payload. If you choose to ignore the expiration date for identity tokens, you will receive an NotAuthorized
/// error if Apple rotates the signing key. In this case, users have to login to provide a fresh identity token.
/// </summary>
public string IdentityToken;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class LoginWithCustomIDRequest : PlayFabRequestCommon
{
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// Custom unique identifier for the user, generated by the title.
/// </summary>
public string CustomId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class LoginWithEmailAddressRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Email address for the account.
/// </summary>
public string Email;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Password for the PlayFab account (6-100 characters)
/// </summary>
public string Password;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
[Serializable]
public class LoginWithFacebookInstantGamesIdRequest : PlayFabRequestCommon
{
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Facebook Instant Games signature for the user.
/// </summary>
public string FacebookInstantGamesSignature;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// 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. Note: If the user is authenticated with AuthenticationToken, instead of AccessToken, the
/// GetFriendsList API will return an empty list.
/// </summary>
[Serializable]
public class LoginWithFacebookRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique identifier from Facebook for the user.
/// </summary>
public string AccessToken;
/// <summary>
/// Token used for limited login authentication.
/// </summary>
public string AuthenticationToken;
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// 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. If an invalid iOS Game Center
/// player identifier is used, an error indicating this will be returned.
/// </summary>
[Serializable]
public class LoginWithGameCenterRequest : PlayFabRequestCommon
{
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Unique Game Center player id.
/// </summary>
public string PlayerId;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// The URL for the public encryption key that will be used to verify the signature.
/// </summary>
public string PublicKeyUrl;
/// <summary>
/// A random value used to compute the hash and keep it randomized.
/// </summary>
public string Salt;
/// <summary>
/// The verification signature of the authentication payload.
/// </summary>
public string Signature;
/// <summary>
/// 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.
/// </summary>
public string Timestamp;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// 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).
/// </summary>
[Serializable]
public class LoginWithGoogleAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// 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.
/// </summary>
public string ServerAuthCode;
/// <summary>
/// Optional boolean to opt out of setting the MPA email when creating a Google account, defaults to true.
/// </summary>
public bool? SetEmail;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// Google Play Games sign-in is accomplished by obtaining a Google OAuth 2.0 credential using the Google Play Games 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 Play Games account and CreateAccount is set to true, a new PlayFab account will be created and linked to the
/// Google Play Games account. Otherwise, if no PlayFab account is linked to the Google Play Games 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 Play Games account credential in an Android application is to call
/// GamesSignInClient.requestServerSideAccess() 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/games/services/android/signin.
/// </summary>
[Serializable]
public class LoginWithGooglePlayGamesServicesRequest : PlayFabRequestCommon
{
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// OAuth 2.0 server authentication code obtained on the client by calling the requestServerSideAccess()
/// (https://developers.google.com/games/services/android/signin) Google Play Games client API.
/// </summary>
public string ServerAuthCode;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class LoginWithIOSDeviceIDRequest : PlayFabRequestCommon
{
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Vendor-specific iOS identifier for the user's device.
/// </summary>
public string DeviceId;
/// <summary>
/// Specific model of the user's device.
/// </summary>
public string DeviceModel;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Specific Operating System version for the user's device.
/// </summary>
public string OS;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class LoginWithKongregateRequest : PlayFabRequestCommon
{
/// <summary>
/// Token issued by Kongregate's client API for the user.
/// </summary>
public string AuthTicket;
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Numeric user ID assigned by Kongregate
/// </summary>
public string KongregateId;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
[Serializable]
public class LoginWithNintendoServiceAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// The JSON Web token (JWT) returned by Nintendo after login.
/// </summary>
public string IdentityToken;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
[Serializable]
public class LoginWithNintendoSwitchDeviceIdRequest : PlayFabRequestCommon
{
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Nintendo Switch unique identifier for the user's device.
/// </summary>
public string NintendoSwitchDeviceId;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
[Serializable]
public class LoginWithOpenIdConnectRequest : PlayFabRequestCommon
{
/// <summary>
/// A name that identifies which configured OpenID Connect provider relationship to use. Maximum 100 characters.
/// </summary>
public string ConnectionId;
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// The JSON Web token (JWT) returned by the identity provider after login. Represented as the id_token field in the
/// identity provider's response.
/// </summary>
public string IdToken;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class LoginWithPlayFabRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Password for the PlayFab account (6-100 characters)
/// </summary>
public string Password;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
/// <summary>
/// PlayFab username for the account.
/// </summary>
public string Username;
}
/// <summary>
/// If this is the first time a user has signed in with the PlayStation :tm: Network account and CreateAccount is set to
/// true, a new PlayFab account will be created and linked to the PlayStation :tm: Network account. In this case, no email
/// or username will be associated with the PlayFab account. Otherwise, if no PlayFab account is linked to the PlayStation
/// :tm: Network account, an error indicating this will be returned, so that the title can guide the user through creation
/// of a PlayFab account.
/// </summary>
[Serializable]
public class LoginWithPSNRequest : PlayFabRequestCommon
{
/// <summary>
/// Auth code provided by the PlayStation :tm: Network OAuth provider.
/// </summary>
public string AuthCode;
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Id of the PlayStation :tm: Network issuer environment. If null, defaults to production environment.
/// </summary>
public int? IssuerId;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Redirect URI supplied to PlayStation :tm: Network when requesting an auth code
/// </summary>
public string RedirectUri;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// 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. 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.
/// </summary>
[Serializable]
public class LoginWithSteamRequest : PlayFabRequestCommon
{
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// 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").
/// </summary>
public string SteamTicket;
/// <summary>
/// True if ticket was generated using ISteamUser::GetAuthTicketForWebAPI() using "AzurePlayFab" as the identity string.
/// False if the ticket was generated with ISteamUser::GetAuthSessionTicket().
/// </summary>
public bool? TicketIsServiceSpecific;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class LoginWithTwitchRequest : PlayFabRequestCommon
{
/// <summary>
/// Token issued by Twitch's API for the user.
/// </summary>
public string AccessToken;
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class LoginWithXboxRequest : PlayFabRequestCommon
{
/// <summary>
/// Automatically create a PlayFab account if one is not currently linked to this ID.
/// </summary>
public bool? CreateAccount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
/// <summary>
/// Token provided by the Xbox Live SDK/XDK method GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", "").
/// </summary>
public string XboxToken;
}
[Serializable]
public class LogStatement : PlayFabBaseModel
{
/// <summary>
/// Optional object accompanying the message as contextual information
/// </summary>
public object Data;
/// <summary>
/// 'Debug', 'Info', or 'Error'
/// </summary>
public string Level;
public string Message;
}
[Serializable]
public class MembershipModel : PlayFabBaseModel
{
/// <summary>
/// Whether this membership is active. That is, whether the MembershipExpiration time has been reached.
/// </summary>
public bool IsActive;
/// <summary>
/// The time this membership expires
/// </summary>
public DateTime MembershipExpiration;
/// <summary>
/// The id of the membership
/// </summary>
public string MembershipId;
/// <summary>
/// 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.
/// </summary>
public DateTime? OverrideExpiration;
/// <summary>
/// The list of subscriptions that this player has for this membership
/// </summary>
public List<SubscriptionModel> Subscriptions;
}
[Serializable]
public class MicrosoftStorePayload : PlayFabBaseModel
{
/// <summary>
/// Microsoft store ID key. This is optional. Alternatively you can use XboxToken
/// </summary>
public string CollectionsMsIdKey;
/// <summary>
/// If collectionsMsIdKey is provided, this will verify the user id in the collectionsMsIdKey is the same.
/// </summary>
public string UserId;
/// <summary>
/// Token provided by the Xbox Live SDK/XDK method GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", ""). This is
/// optional. Alternatively can use CollectionsMsIdKey
/// </summary>
public string XboxToken;
}
[Serializable]
public class ModifyUserVirtualCurrencyResult : PlayFabResultCommon
{
/// <summary>
/// Balance of the virtual currency after modification.
/// </summary>
public int Balance;
/// <summary>
/// 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.
/// </summary>
public int BalanceChange;
/// <summary>
/// User currency was subtracted from.
/// </summary>
public string PlayFabId;
/// <summary>
/// Name of the virtual currency which was modified.
/// </summary>
public string VirtualCurrency;
}
/// <summary>
/// Identifier by either name or ID. Note that a name may change due to renaming, or reused after being deleted. ID is
/// immutable and unique.
/// </summary>
[Serializable]
public class NameIdentifier : PlayFabBaseModel
{
/// <summary>
/// Id Identifier, if present
/// </summary>
public string Id;
/// <summary>
/// Name Identifier, if present
/// </summary>
public string Name;
}
[Serializable]
public class NintendoServiceAccountPlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique Nintendo Switch Service Account identifier for a user.
/// </summary>
public string NintendoServiceAccountId;
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Nintendo Switch Service Account
/// identifier.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class NintendoSwitchPlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique Nintendo Switch Device identifier for a user.
/// </summary>
public string NintendoSwitchDeviceId;
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Nintendo Switch Device identifier.
/// </summary>
public string PlayFabId;
}
[Serializable]
public class OpenTradeRequest : PlayFabRequestCommon
{
/// <summary>
/// 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.
/// </summary>
public List<string> AllowedPlayerIds;
/// <summary>
/// Player inventory items offered for trade. If not set, the trade is effectively a gift request
/// </summary>
public List<string> OfferedInventoryInstanceIds;
/// <summary>
/// Catalog items accepted for the trade. If not set, the trade is effectively a gift.
/// </summary>
public List<string> RequestedCatalogItemIds;
}
[Serializable]
public class OpenTradeResponse : PlayFabResultCommon
{
/// <summary>
/// The information about the trade that was just opened.
/// </summary>
public TradeInfo Trade;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class PayForPurchaseRequest : PlayFabRequestCommon
{
/// <summary>
/// Currency to use to fund the purchase.
/// </summary>
public string Currency;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Purchase order identifier returned from StartPurchase.
/// </summary>
public string OrderId;
/// <summary>
/// Payment provider to use to fund the purchase.
/// </summary>
public string ProviderName;
/// <summary>
/// Payment provider transaction identifier. Required for Facebook Payments.
/// </summary>
public string ProviderTransactionId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class PayForPurchaseResult : PlayFabResultCommon
{
/// <summary>
/// Local credit applied to the transaction (provider specific).
/// </summary>
public uint CreditApplied;
/// <summary>
/// Purchase order identifier.
/// </summary>
public string OrderId;
/// <summary>
/// Provider used for the transaction.
/// </summary>
public string ProviderData;
/// <summary>
/// A token generated by the provider to authenticate the request (provider-specific).
/// </summary>
public string ProviderToken;
/// <summary>
/// URL to the purchase provider page that details the purchase.
/// </summary>
public string PurchaseConfirmationPageURL;
/// <summary>
/// Currency for the transaction, may be a virtual currency or real money.
/// </summary>
public string PurchaseCurrency;
/// <summary>
/// Cost of the transaction.
/// </summary>
public uint PurchasePrice;
/// <summary>
/// Status of the transaction.
/// </summary>
public TransactionStatus? Status;
/// <summary>
/// Virtual currencies granted by the transaction, if any.
/// </summary>
public Dictionary<string,int> VCAmount;
/// <summary>
/// Current virtual currency balances for the user.
/// </summary>
public Dictionary<string,int> VirtualCurrency;
}
[Serializable]
public class PaymentOption : PlayFabBaseModel
{
/// <summary>
/// Specific currency to use to fund the purchase.
/// </summary>
public string Currency;
/// <summary>
/// Amount of the specified currency needed for the purchase.
/// </summary>
public uint Price;
/// <summary>
/// Name of the purchase provider for this option.
/// </summary>
public string ProviderName;
/// <summary>
/// Amount of existing credit the user has with the provider.
/// </summary>
public uint StoreCredit;
}
[Serializable]
public class PlayerLeaderboardEntry : PlayFabBaseModel
{
/// <summary>
/// Title-specific display name of the user for this leaderboard entry.
/// </summary>
public string DisplayName;
/// <summary>
/// PlayFab unique identifier of the user for this leaderboard entry.
/// </summary>
public string PlayFabId;
/// <summary>
/// User's overall position in the leaderboard.
/// </summary>
public int Position;
/// <summary>
/// The profile of the user, if requested.
/// </summary>
public PlayerProfileModel Profile;
/// <summary>
/// Specific value of the user's statistic.
/// </summary>
public int StatValue;
}
[Serializable]
public class PlayerProfileModel : PlayFabBaseModel
{
/// <summary>
/// List of advertising campaigns the player has been attributed to
/// </summary>
public List<AdCampaignAttributionModel> AdCampaignAttributions;
/// <summary>
/// URL of the player's avatar image
/// </summary>
public string AvatarUrl;
/// <summary>
/// If the player is currently banned, the UTC Date when the ban expires
/// </summary>
public DateTime? BannedUntil;
/// <summary>
/// List of all contact email info associated with the player account
/// </summary>
public List<ContactEmailInfoModel> ContactEmailAddresses;
/// <summary>
/// Player record created
/// </summary>
public DateTime? Created;
/// <summary>
/// Player display name
/// </summary>
public string DisplayName;
/// <summary>
/// List of experiment variants for the player. Note that these variants are not guaranteed to be up-to-date when returned
/// during login because the player profile is updated only after login. Instead, use the LoginResult.TreatmentAssignment
/// property during login to get the correct variants and variables.
/// </summary>
public List<string> ExperimentVariants;
/// <summary>
/// UTC time when the player most recently logged in to the title
/// </summary>
public DateTime? LastLogin;
/// <summary>
/// List of all authentication systems linked to this player account
/// </summary>
public List<LinkedPlatformAccountModel> LinkedAccounts;
/// <summary>
/// List of geographic locations from which the player has logged in to the title
/// </summary>
public List<LocationModel> Locations;
/// <summary>
/// List of memberships for the player, along with whether are expired.
/// </summary>
public List<MembershipModel> Memberships;
/// <summary>
/// Player account origination
/// </summary>
public LoginIdentityProvider? Origination;
/// <summary>
/// PlayFab player account unique identifier
/// </summary>
public string PlayerId;
/// <summary>
/// Publisher this player belongs to
/// </summary>
public string PublisherId;
/// <summary>
/// List of configured end points registered for sending the player push notifications
/// </summary>
public List<PushNotificationRegistrationModel> PushNotificationRegistrations;
/// <summary>
/// List of leaderboard statistic values for the player
/// </summary>
public List<StatisticModel> Statistics;
/// <summary>
/// List of player's tags for segmentation
/// </summary>
public List<TagModel> Tags;
/// <summary>
/// Title ID this player profile applies to
/// </summary>
public string TitleId;
/// <summary>
/// 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.
/// </summary>
public uint? TotalValueToDateInUSD;
/// <summary>
/// List of the player's lifetime purchase totals, summed by real-money currency
/// </summary>
public List<ValueToDateModel> ValuesToDate;
}
[Serializable]
public class PlayerProfileViewConstraints : PlayFabBaseModel
{
/// <summary>
/// Whether to show player's avatar URL. Defaults to false
/// </summary>
public bool ShowAvatarUrl;
/// <summary>
/// Whether to show the banned until time. Defaults to false
/// </summary>
public bool ShowBannedUntil;
/// <summary>
/// Whether to show campaign attributions. Defaults to false
/// </summary>
public bool ShowCampaignAttributions;
/// <summary>
/// Whether to show contact email addresses. Defaults to false
/// </summary>
public bool ShowContactEmailAddresses;
/// <summary>
/// Whether to show the created date. Defaults to false
/// </summary>
public bool ShowCreated;
/// <summary>
/// Whether to show the display name. Defaults to false
/// </summary>
public bool ShowDisplayName;
/// <summary>
/// Whether to show player's experiment variants. Defaults to false
/// </summary>
public bool ShowExperimentVariants;
/// <summary>
/// Whether to show the last login time. Defaults to false
/// </summary>
public bool ShowLastLogin;
/// <summary>
/// Whether to show the linked accounts. Defaults to false
/// </summary>
public bool ShowLinkedAccounts;
/// <summary>
/// Whether to show player's locations. Defaults to false
/// </summary>
public bool ShowLocations;
/// <summary>
/// Whether to show player's membership information. Defaults to false
/// </summary>
public bool ShowMemberships;
/// <summary>
/// Whether to show origination. Defaults to false
/// </summary>
public bool ShowOrigination;
/// <summary>
/// Whether to show push notification registrations. Defaults to false
/// </summary>
public bool ShowPushNotificationRegistrations;
/// <summary>
/// Reserved for future development
/// </summary>
public bool ShowStatistics;
/// <summary>
/// Whether to show tags. Defaults to false
/// </summary>
public bool ShowTags;
/// <summary>
/// Whether to show the total value to date in usd. Defaults to false
/// </summary>
public bool ShowTotalValueToDateInUsd;
/// <summary>
/// Whether to show the values to date. Defaults to false
/// </summary>
public bool ShowValuesToDate;
}
[Serializable]
public class PlayerStatisticVersion : PlayFabBaseModel
{
/// <summary>
/// time when the statistic version became active
/// </summary>
public DateTime ActivationTime;
/// <summary>
/// time when the statistic version became inactive due to statistic version incrementing
/// </summary>
public DateTime? DeactivationTime;
/// <summary>
/// time at which the statistic version was scheduled to become active, based on the configured ResetInterval
/// </summary>
public DateTime? ScheduledActivationTime;
/// <summary>
/// time at which the statistic version was scheduled to become inactive, based on the configured ResetInterval
/// </summary>
public DateTime? ScheduledDeactivationTime;
/// <summary>
/// name of the statistic when the version became active
/// </summary>
public string StatisticName;
/// <summary>
/// version of the statistic
/// </summary>
public uint Version;
}
[Serializable]
public class PlayStation5Payload : PlayFabBaseModel
{
/// <summary>
/// An optional list of entitlement ids to query against PlayStation :tm: Network
/// </summary>
public List<string> Ids;
/// <summary>
/// Id of the PlayStation :tm: Network service label to consume entitlements from
/// </summary>
public string ServiceLabel;
}
[Serializable]
public class PSNAccountPlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the PlayStation :tm: Network
/// identifier.
/// </summary>
public string PlayFabId;
/// <summary>
/// Unique PlayStation :tm: Network identifier for a user.
/// </summary>
public string PSNAccountId;
}
[Serializable]
public class PSNOnlinePlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the PlayStation :tm: Network
/// identifier.
/// </summary>
public string PlayFabId;
/// <summary>
/// Unique PlayStation :tm: Network identifier for a user.
/// </summary>
public string PSNOnlineId;
}
/// <summary>
/// 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).
/// </summary>
[Serializable]
public class PurchaseItemRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version for the items to be purchased (defaults to most recent version.
/// </summary>
public string CatalogVersion;
/// <summary>
/// Unique PlayFab assigned ID for a specific character owned by a user
/// </summary>
public string CharacterId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Unique identifier of the item to purchase.
/// </summary>
public string ItemId;
/// <summary>
/// Price the client expects to pay for the item (in case a new catalog or store was uploaded, with new prices).
/// </summary>
public int Price;
/// <summary>
/// Store to buy this item through. If not set, prices default to those in the catalog.
/// </summary>
public string StoreId;
/// <summary>
/// Virtual currency to use to purchase the item.
/// </summary>
public string VirtualCurrency;
}
[Serializable]
public class PurchaseItemResult : PlayFabResultCommon
{
/// <summary>
/// Details for the items purchased.
/// </summary>
public List<ItemInstance> Items;
}
[Serializable]
public class PurchaseReceiptFulfillment : PlayFabBaseModel
{
/// <summary>
/// Items granted to the player in fulfillment of the validated receipt.
/// </summary>
public List<ItemInstance> FulfilledItems;
/// <summary>
/// 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.
/// </summary>
public string RecordedPriceSource;
/// <summary>
/// Currency used to purchase the items (ISO 4217 currency code).
/// </summary>
public string RecordedTransactionCurrency;
/// <summary>
/// Amount of the stated currency paid for the items, in centesimal units
/// </summary>
public uint? RecordedTransactionTotal;
}
public enum PushNotificationPlatform
{
ApplePushNotificationService,
GoogleCloudMessaging
}
[Serializable]
public class PushNotificationRegistrationModel : PlayFabBaseModel
{
/// <summary>
/// Notification configured endpoint
/// </summary>
public string NotificationEndpointARN;
/// <summary>
/// Push notification platform
/// </summary>
public PushNotificationPlatform? Platform;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class RedeemCouponRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version of the coupon. If null, uses the default catalog
/// </summary>
public string CatalogVersion;
/// <summary>
/// Optional identifier for the Character that should receive the item. If null, item is added to the player
/// </summary>
public string CharacterId;
/// <summary>
/// Generated coupon code to redeem.
/// </summary>
public string CouponCode;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class RedeemCouponResult : PlayFabResultCommon
{
/// <summary>
/// Items granted to the player as a result of redeeming the coupon.
/// </summary>
public List<ItemInstance> GrantedItems;
}
[Serializable]
public class RefreshPSNAuthTokenRequest : PlayFabRequestCommon
{
/// <summary>
/// Auth code returned by PlayStation :tm: Network OAuth system.
/// </summary>
public string AuthCode;
/// <summary>
/// Id of the PlayStation :tm: Network issuer environment. If null, defaults to production environment.
/// </summary>
public int? IssuerId;
/// <summary>
/// Redirect URI supplied to PlayStation :tm: Network when requesting an auth code
/// </summary>
public string RedirectUri;
}
/// <summary>
/// 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
/// </summary>
[Serializable]
public class RegisterForIOSPushNotificationRequest : PlayFabRequestCommon
{
/// <summary>
/// Message to display when confirming push notification.
/// </summary>
public string ConfirmationMessage;
/// <summary>
/// Unique token generated by the Apple Push Notification service when the title registered to receive push notifications.
/// </summary>
public string DeviceToken;
/// <summary>
/// If true, send a test push message immediately after sucessful registration. Defaults to false.
/// </summary>
public bool? SendPushNotificationConfirmation;
}
[Serializable]
public class RegisterForIOSPushNotificationResult : PlayFabResultCommon
{
}
[Serializable]
public class RegisterPlayFabUserRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// An optional parameter for setting the display name for this title (3-25 characters).
/// </summary>
public string DisplayName;
/// <summary>
/// User email address attached to their account
/// </summary>
public string Email;
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Flags for which pieces of info to return for the user.
/// </summary>
public GetPlayerCombinedInfoRequestParams InfoRequestParameters;
/// <summary>
/// Password for the PlayFab account (6-100 characters)
/// </summary>
public string Password;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
/// <summary>
/// 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.
/// </summary>
public bool? RequireBothUsernameAndEmail;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
/// <summary>
/// PlayFab username for the account (3-20 characters)
/// </summary>
public string Username;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class RegisterPlayFabUserResult : PlayFabLoginResultCommon
{
/// <summary>
/// If LoginTitlePlayerAccountEntity flag is set on the login request the title_player_account will also be logged in and
/// returned.
/// </summary>
public EntityTokenResponse EntityToken;
/// <summary>
/// PlayFab unique identifier for this newly created account.
/// </summary>
public string PlayFabId;
/// <summary>
/// Unique token identifying the user and game at the server level, for the current session.
/// </summary>
public string SessionTicket;
/// <summary>
/// Settings specific to this user.
/// </summary>
public UserSettings SettingsForUser;
/// <summary>
/// PlayFab unique user name.
/// </summary>
public string Username;
}
/// <summary>
/// This API removes an existing contact email from the player's profile.
/// </summary>
[Serializable]
public class RemoveContactEmailRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class RemoveContactEmailResult : PlayFabResultCommon
{
}
[Serializable]
public class RemoveFriendRequest : PlayFabRequestCommon
{
/// <summary>
/// PlayFab identifier of the friend account which is to be removed.
/// </summary>
public string FriendPlayFabId;
}
[Serializable]
public class RemoveFriendResult : PlayFabResultCommon
{
}
[Serializable]
public class RemoveGenericIDRequest : PlayFabRequestCommon
{
/// <summary>
/// Generic service identifier to be removed from the player.
/// </summary>
public GenericServiceId GenericId;
}
[Serializable]
public class RemoveGenericIDResult : PlayFabResultCommon
{
}
[Serializable]
public class RemoveSharedGroupMembersRequest : PlayFabRequestCommon
{
/// <summary>
/// An array of unique PlayFab assigned ID of the user on whom the operation will be performed.
/// </summary>
public List<string> PlayFabIds;
/// <summary>
/// Unique identifier for the shared group.
/// </summary>
public string SharedGroupId;
}
[Serializable]
public class RemoveSharedGroupMembersResult : PlayFabResultCommon
{
}
/// <summary>
/// Report ad activity
/// </summary>
[Serializable]
public class ReportAdActivityRequest : PlayFabRequestCommon
{
/// <summary>
/// Type of activity, may be Opened, Closed, Start or End
/// </summary>
public AdActivity Activity;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Unique ID of the placement to report for
/// </summary>
public string PlacementId;
/// <summary>
/// Unique ID of the reward the player was offered
/// </summary>
public string RewardId;
}
/// <summary>
/// Report ad activity response has no body
/// </summary>
[Serializable]
public class ReportAdActivityResult : PlayFabResultCommon
{
}
[Serializable]
public class ReportPlayerClientRequest : PlayFabRequestCommon
{
/// <summary>
/// Optional additional comment by reporting player.
/// </summary>
public string Comment;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Unique PlayFab identifier of the reported player.
/// </summary>
public string ReporteeId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ReportPlayerClientResult : PlayFabResultCommon
{
/// <summary>
/// The number of remaining reports which may be filed today.
/// </summary>
public int SubmissionsRemaining;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class RestoreIOSPurchasesRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version of the restored items. If null, defaults to primary catalog.
/// </summary>
public string CatalogVersion;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Base64 encoded receipt data, passed back by the App Store as a result of a successful purchase.
/// </summary>
public string ReceiptData;
}
/// <summary>
/// Once verified, the valid items will be restored into the user's inventory. This result should be used for immediate
/// updates to the local client game state as opposed to the GetUserInventory API which can have an up to half second delay.
/// </summary>
[Serializable]
public class RestoreIOSPurchasesResult : PlayFabResultCommon
{
/// <summary>
/// Fulfilled inventory items and recorded purchases in fulfillment of the validated receipt transactions.
/// </summary>
public List<PurchaseReceiptFulfillment> Fulfillments;
}
/// <summary>
/// Details on which placement and reward to perform a grant on
/// </summary>
[Serializable]
public class RewardAdActivityRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Placement unique ID
/// </summary>
public string PlacementId;
/// <summary>
/// Reward unique ID
/// </summary>
public string RewardId;
}
/// <summary>
/// Result for rewarding an ad activity
/// </summary>
[Serializable]
public class RewardAdActivityResult : PlayFabResultCommon
{
/// <summary>
/// PlayStream Event ID that was generated by this reward (all subsequent events are associated with this event identifier)
/// </summary>
public string AdActivityEventId;
/// <summary>
/// Debug results from the grants
/// </summary>
public List<string> DebugResults;
/// <summary>
/// Id of the placement the reward was for
/// </summary>
public string PlacementId;
/// <summary>
/// Name of the placement the reward was for
/// </summary>
public string PlacementName;
/// <summary>
/// If placement has viewing limits indicates how many views are left
/// </summary>
public int? PlacementViewsRemaining;
/// <summary>
/// If placement has viewing limits indicates when they will next reset
/// </summary>
public double? PlacementViewsResetMinutes;
/// <summary>
/// Reward results
/// </summary>
public AdRewardResults RewardResults;
}
[Serializable]
public class ScriptExecutionError : PlayFabBaseModel
{
/// <summary>
/// Error code, such as CloudScriptNotFound, JavascriptException, CloudScriptFunctionArgumentSizeExceeded,
/// CloudScriptAPIRequestCountExceeded, CloudScriptAPIRequestError, or CloudScriptHTTPRequestError
/// </summary>
public string Error;
/// <summary>
/// Details about the error
/// </summary>
public string Message;
/// <summary>
/// Point during the execution of the script at which the error occurred, if any
/// </summary>
public string StackTrace;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class SendAccountRecoveryEmailRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// User email address attached to their account
/// </summary>
public string Email;
/// <summary>
/// The email template id of the account recovery email template to send.
/// </summary>
public string EmailTemplateId;
/// <summary>
/// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
/// title has been selected.
/// </summary>
public string TitleId;
}
[Serializable]
public class SendAccountRecoveryEmailResult : PlayFabResultCommon
{
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class SetFriendTagsRequest : PlayFabRequestCommon
{
/// <summary>
/// PlayFab identifier of the friend account to which the tag(s) should be applied.
/// </summary>
public string FriendPlayFabId;
/// <summary>
/// Array of tags to set on the friend account.
/// </summary>
public List<string> Tags;
}
[Serializable]
public class SetFriendTagsResult : PlayFabResultCommon
{
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class SetPlayerSecretRequest : PlayFabRequestCommon
{
/// <summary>
/// Base64 encoded body that is encrypted with the Title's public RSA key (Enterprise Only).
/// </summary>
public string EncryptedRequest;
/// <summary>
/// Player secret that is used to verify API request signatures (Enterprise Only).
/// </summary>
public string PlayerSecret;
}
[Serializable]
public class SetPlayerSecretResult : PlayFabResultCommon
{
}
[Serializable]
public class SharedGroupDataRecord : PlayFabBaseModel
{
/// <summary>
/// Timestamp for when this data was last updated.
/// </summary>
public DateTime LastUpdated;
/// <summary>
/// Unique PlayFab identifier of the user to last update this value.
/// </summary>
public string LastUpdatedBy;
/// <summary>
/// Indicates whether this data can be read by all users (public) or only members of the group (private).
/// </summary>
public UserDataPermission? Permission;
/// <summary>
/// Data stored for the specified group data key.
/// </summary>
public string Value;
}
public enum SourceType
{
Admin,
BackEnd,
GameClient,
GameServer,
Partner,
Custom,
API
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class StartPurchaseRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version for the items to be purchased. Defaults to most recent catalog.
/// </summary>
public string CatalogVersion;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Array of items to purchase.
/// </summary>
public List<ItemPurchaseRequest> Items;
/// <summary>
/// Store through which to purchase items. If not set, prices will be pulled from the catalog itself.
/// </summary>
public string StoreId;
}
[Serializable]
public class StartPurchaseResult : PlayFabResultCommon
{
/// <summary>
/// Cart items to be purchased.
/// </summary>
public List<CartItem> Contents;
/// <summary>
/// Purchase order identifier.
/// </summary>
public string OrderId;
/// <summary>
/// Available methods by which the user can pay.
/// </summary>
public List<PaymentOption> PaymentOptions;
/// <summary>
/// Current virtual currency totals for the user.
/// </summary>
public Dictionary<string,int> VirtualCurrencyBalances;
}
[Serializable]
public class StatisticModel : PlayFabBaseModel
{
/// <summary>
/// Statistic name
/// </summary>
public string Name;
/// <summary>
/// Statistic value
/// </summary>
public int Value;
/// <summary>
/// Statistic version (0 if not a versioned statistic)
/// </summary>
public int Version;
}
[Serializable]
public class StatisticNameVersion : PlayFabBaseModel
{
/// <summary>
/// unique name of the statistic
/// </summary>
public string StatisticName;
/// <summary>
/// the version of the statistic to be returned
/// </summary>
public uint Version;
}
[Serializable]
public class StatisticUpdate : PlayFabBaseModel
{
/// <summary>
/// unique name of the statistic
/// </summary>
public string StatisticName;
/// <summary>
/// statistic value for the player
/// </summary>
public int Value;
/// <summary>
/// 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.
/// </summary>
public uint? Version;
}
[Serializable]
public class StatisticValue : PlayFabBaseModel
{
/// <summary>
/// unique name of the statistic
/// </summary>
public string StatisticName;
/// <summary>
/// statistic value for the player
/// </summary>
public int Value;
/// <summary>
/// for updates to an existing statistic value for a player, the version of the statistic when it was loaded
/// </summary>
public uint Version;
}
[Serializable]
public class SteamPlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Steam identifier.
/// </summary>
public string PlayFabId;
/// <summary>
/// Unique Steam identifier for a user.
/// </summary>
public string SteamStringId;
}
/// <summary>
/// A store entry that list a catalog item at a particular price
/// </summary>
[Serializable]
public class StoreItem : PlayFabBaseModel
{
/// <summary>
/// Store specific custom data. The data only exists as part of this store; it is not transferred to item instances
/// </summary>
public object CustomData;
/// <summary>
/// Intended display position for this item. Note that 0 is the first position
/// </summary>
public uint? DisplayPosition;
/// <summary>
/// Unique identifier of the item as it exists in the catalog - note that this must exactly match the ItemId from the
/// catalog
/// </summary>
public string ItemId;
/// <summary>
/// Override prices for this item for specific currencies
/// </summary>
public Dictionary<string,uint> RealCurrencyPrices;
/// <summary>
/// Override prices for this item in virtual currencies and "RM" (the base Real Money purchase price, in USD pennies)
/// </summary>
public Dictionary<string,uint> VirtualCurrencyPrices;
}
/// <summary>
/// Marketing data about a specific store
/// </summary>
[Serializable]
public class StoreMarketingModel : PlayFabBaseModel
{
/// <summary>
/// Tagline for a store.
/// </summary>
public string Description;
/// <summary>
/// Display name of a store as it will appear to users.
/// </summary>
public string DisplayName;
/// <summary>
/// Custom data about a store.
/// </summary>
public object Metadata;
}
[Serializable]
public class SubscriptionModel : PlayFabBaseModel
{
/// <summary>
/// When this subscription expires.
/// </summary>
public DateTime Expiration;
/// <summary>
/// The time the subscription was orignially purchased
/// </summary>
public DateTime InitialSubscriptionTime;
/// <summary>
/// Whether this subscription is currently active. That is, if Expiration > now.
/// </summary>
public bool IsActive;
/// <summary>
/// The status of this subscription, according to the subscription provider.
/// </summary>
public SubscriptionProviderStatus? Status;
/// <summary>
/// The id for this subscription
/// </summary>
public string SubscriptionId;
/// <summary>
/// The item id for this subscription from the primary catalog
/// </summary>
public string SubscriptionItemId;
/// <summary>
/// The provider for this subscription. Apple or Google Play are supported today.
/// </summary>
public string SubscriptionProvider;
}
public enum SubscriptionProviderStatus
{
NoError,
Cancelled,
UnknownError,
BillingError,
ProductUnavailable,
CustomerDidNotAcceptPriceChange,
FreeTrial,
PaymentPending
}
/// <summary>
/// This API must be enabled for use as an option in the game manager website. It is disabled by default.
/// </summary>
[Serializable]
public class SubtractUserVirtualCurrencyRequest : PlayFabRequestCommon
{
/// <summary>
/// Amount to be subtracted from the user balance of the specified virtual currency.
/// </summary>
public int Amount;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Name of the virtual currency which is to be decremented.
/// </summary>
public string VirtualCurrency;
}
[Serializable]
public class TagModel : PlayFabBaseModel
{
/// <summary>
/// Full value of the tag, including namespace
/// </summary>
public string TagValue;
}
public enum TitleActivationStatus
{
None,
ActivatedTitleKey,
PendingSteam,
ActivatedSteam,
RevokedSteam
}
[Serializable]
public class TitleNewsItem : PlayFabBaseModel
{
/// <summary>
/// News item text.
/// </summary>
public string Body;
/// <summary>
/// Unique identifier of news item.
/// </summary>
public string NewsId;
/// <summary>
/// Date and time when the news item was posted.
/// </summary>
public DateTime Timestamp;
/// <summary>
/// Title of the news item.
/// </summary>
public string Title;
}
[Serializable]
public class TradeInfo : PlayFabBaseModel
{
/// <summary>
/// Item instances from the accepting player that are used to fulfill the trade. If null, no one has accepted the trade.
/// </summary>
public List<string> AcceptedInventoryInstanceIds;
/// <summary>
/// The PlayFab ID of the player who accepted the trade. If null, no one has accepted the trade.
/// </summary>
public string AcceptedPlayerId;
/// <summary>
/// An optional list of players allowed to complete this trade. If null, anybody can complete the trade.
/// </summary>
public List<string> AllowedPlayerIds;
/// <summary>
/// If set, The UTC time when this trade was canceled.
/// </summary>
public DateTime? CancelledAt;
/// <summary>
/// If set, The UTC time when this trade was fulfilled.
/// </summary>
public DateTime? FilledAt;
/// <summary>
/// If set, The UTC time when this trade was made invalid.
/// </summary>
public DateTime? InvalidatedAt;
/// <summary>
/// The catalogItem Ids of the item instances being offered.
/// </summary>
public List<string> OfferedCatalogItemIds;
/// <summary>
/// The itemInstance Ids that are being offered.
/// </summary>
public List<string> OfferedInventoryInstanceIds;
/// <summary>
/// The PlayFabId for the offering player.
/// </summary>
public string OfferingPlayerId;
/// <summary>
/// The UTC time when this trade was created.
/// </summary>
public DateTime? OpenedAt;
/// <summary>
/// The catalogItem Ids requested in exchange.
/// </summary>
public List<string> RequestedCatalogItemIds;
/// <summary>
/// Describes the current state of this trade.
/// </summary>
public TradeStatus? Status;
/// <summary>
/// The identifier for this trade.
/// </summary>
public string TradeId;
}
public enum TradeStatus
{
Invalid,
Opening,
Open,
Accepting,
Accepted,
Filled,
Cancelled
}
public enum TransactionStatus
{
CreateCart,
Init,
Approved,
Succeeded,
FailedByProvider,
DisputePending,
RefundPending,
Refunded,
RefundFailed,
ChargedBack,
FailedByUber,
FailedByPlayFab,
Revoked,
TradePending,
Traded,
Upgraded,
StackPending,
Stacked,
Other,
Failed
}
[Serializable]
public class TreatmentAssignment : PlayFabBaseModel
{
/// <summary>
/// List of the experiment variables.
/// </summary>
public List<Variable> Variables;
/// <summary>
/// List of the experiment variants.
/// </summary>
public List<string> Variants;
}
[Serializable]
public class TwitchPlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Twitch identifier.
/// </summary>
public string PlayFabId;
/// <summary>
/// Unique Twitch identifier for a user.
/// </summary>
public string TwitchId;
}
[Serializable]
public class UnlinkAndroidDeviceIDRequest : PlayFabRequestCommon
{
/// <summary>
/// Android device identifier for the user's device. If not specified, the most recently signed in Android Device ID will be
/// used.
/// </summary>
public string AndroidDeviceId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkAndroidDeviceIDResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkAppleRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkCustomIDRequest : PlayFabRequestCommon
{
/// <summary>
/// Custom unique identifier for the user, generated by the title. If not specified, the most recently signed in Custom ID
/// will be used.
/// </summary>
public string CustomId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkCustomIDResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkFacebookAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkFacebookAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkFacebookInstantGamesIdRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Facebook Instant Games identifier for the user. If not specified, the most recently signed in ID will be used.
/// </summary>
public string FacebookInstantGamesId;
}
[Serializable]
public class UnlinkFacebookInstantGamesIdResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkGameCenterAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkGameCenterAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkGoogleAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkGoogleAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkGooglePlayGamesServicesAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkGooglePlayGamesServicesAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkIOSDeviceIDRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Vendor-specific iOS identifier for the user's device. If not specified, the most recently signed in iOS Device ID will
/// be used.
/// </summary>
public string DeviceId;
}
[Serializable]
public class UnlinkIOSDeviceIDResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkKongregateAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkKongregateAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkNintendoServiceAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkNintendoSwitchDeviceIdRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Nintendo Switch Device identifier for the user. If not specified, the most recently signed in device ID will be used.
/// </summary>
public string NintendoSwitchDeviceId;
}
[Serializable]
public class UnlinkNintendoSwitchDeviceIdResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkOpenIdConnectRequest : PlayFabRequestCommon
{
/// <summary>
/// A name that identifies which configured OpenID Connect provider relationship to use. Maximum 100 characters.
/// </summary>
public string ConnectionId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkPSNAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkPSNAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkSteamAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkSteamAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkTwitchAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// Valid token issued by Twitch. Used to specify which twitch account to unlink from the profile. By default it uses the
/// one that is present on the profile.
/// </summary>
public string AccessToken;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkTwitchAccountResult : PlayFabResultCommon
{
}
[Serializable]
public class UnlinkXboxAccountRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UnlinkXboxAccountResult : PlayFabResultCommon
{
}
/// <summary>
/// Specify the container and optionally the catalogVersion for the container to open
/// </summary>
[Serializable]
public class UnlockContainerInstanceRequest : PlayFabRequestCommon
{
/// <summary>
/// Specifies the catalog version that should be used to determine container contents. If unspecified, uses catalog
/// associated with the item instance.
/// </summary>
public string CatalogVersion;
/// <summary>
/// Unique PlayFab assigned ID for a specific character owned by a user
/// </summary>
public string CharacterId;
/// <summary>
/// ItemInstanceId of the container to unlock.
/// </summary>
public string ContainerItemInstanceId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// ItemInstanceId of the key that will be consumed by unlocking this container. If the container requires a key, this
/// parameter is required.
/// </summary>
public string KeyItemInstanceId;
}
/// <summary>
/// Specify the type of container to open and optionally the catalogVersion for the container to open
/// </summary>
[Serializable]
public class UnlockContainerItemRequest : PlayFabRequestCommon
{
/// <summary>
/// Specifies the catalog version that should be used to determine container contents. If unspecified, uses default/primary
/// catalog.
/// </summary>
public string CatalogVersion;
/// <summary>
/// Unique PlayFab assigned ID for a specific character owned by a user
/// </summary>
public string CharacterId;
/// <summary>
/// Catalog ItemId of the container type to unlock.
/// </summary>
public string ContainerItemId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
/// <summary>
/// The items and vc found within the container. These will be added and stacked in the appropriate inventory.
/// </summary>
[Serializable]
public class UnlockContainerItemResult : PlayFabResultCommon
{
/// <summary>
/// Items granted to the player as a result of unlocking the container.
/// </summary>
public List<ItemInstance> GrantedItems;
/// <summary>
/// Unique instance identifier of the container unlocked.
/// </summary>
public string UnlockedItemInstanceId;
/// <summary>
/// Unique instance identifier of the key used to unlock the container, if applicable.
/// </summary>
public string UnlockedWithItemInstanceId;
/// <summary>
/// Virtual currency granted to the player as a result of unlocking the container.
/// </summary>
public Dictionary<string,uint> VirtualCurrency;
}
[Serializable]
public class UpdateAvatarUrlRequest : PlayFabRequestCommon
{
/// <summary>
/// URL of the avatar image. If empty, it removes the existing avatar URL.
/// </summary>
public string ImageUrl;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class UpdateCharacterDataRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique PlayFab assigned ID for a specific character owned by a user
/// </summary>
public string CharacterId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// 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.
/// </summary>
public Dictionary<string,string> Data;
/// <summary>
/// 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.
/// </summary>
public List<string> KeysToRemove;
/// <summary>
/// Permission to be applied to all user data keys written in this request. Defaults to "private" if not set.
/// </summary>
public UserDataPermission? Permission;
}
[Serializable]
public class UpdateCharacterDataResult : PlayFabResultCommon
{
/// <summary>
/// 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.
/// </summary>
public uint DataVersion;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class UpdateCharacterStatisticsRequest : PlayFabRequestCommon
{
/// <summary>
/// Unique PlayFab assigned ID for a specific character owned by a user
/// </summary>
public string CharacterId;
/// <summary>
/// Statistics to be updated with the provided values, in the Key(string), Value(int) pattern.
/// </summary>
public Dictionary<string,int> CharacterStatistics;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
}
[Serializable]
public class UpdateCharacterStatisticsResult : PlayFabResultCommon
{
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class UpdatePlayerStatisticsRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Statistics to be updated with the provided values
/// </summary>
public List<StatisticUpdate> Statistics;
}
[Serializable]
public class UpdatePlayerStatisticsResult : PlayFabResultCommon
{
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class UpdateSharedGroupDataRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// 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.
/// </summary>
public Dictionary<string,string> Data;
/// <summary>
/// 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.
/// </summary>
public List<string> KeysToRemove;
/// <summary>
/// Permission to be applied to all user data keys in this request.
/// </summary>
public UserDataPermission? Permission;
/// <summary>
/// Unique identifier for the shared group.
/// </summary>
public string SharedGroupId;
}
[Serializable]
public class UpdateSharedGroupDataResult : PlayFabResultCommon
{
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class UpdateUserDataRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// 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.
/// </summary>
public Dictionary<string,string> Data;
/// <summary>
/// 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.
/// </summary>
public List<string> KeysToRemove;
/// <summary>
/// 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.
/// </summary>
public UserDataPermission? Permission;
}
[Serializable]
public class UpdateUserDataResult : PlayFabResultCommon
{
/// <summary>
/// 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.
/// </summary>
public uint DataVersion;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class UpdateUserTitleDisplayNameRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// New title display name for the user - must be between 3 and 25 characters.
/// </summary>
public string DisplayName;
}
[Serializable]
public class UpdateUserTitleDisplayNameResult : PlayFabResultCommon
{
/// <summary>
/// Current title display name for the user (this will be the original display name if the rename attempt failed).
/// </summary>
public string DisplayName;
}
[Serializable]
public class UserAccountInfo : PlayFabBaseModel
{
/// <summary>
/// User Android device information, if an Android device has been linked
/// </summary>
public UserAndroidDeviceInfo AndroidDeviceInfo;
/// <summary>
/// Sign in with Apple account information, if an Apple account has been linked
/// </summary>
public UserAppleIdInfo AppleAccountInfo;
/// <summary>
/// Timestamp indicating when the user account was created
/// </summary>
public DateTime Created;
/// <summary>
/// Custom ID information, if a custom ID has been assigned
/// </summary>
public UserCustomIdInfo CustomIdInfo;
/// <summary>
/// User Facebook information, if a Facebook account has been linked
/// </summary>
public UserFacebookInfo FacebookInfo;
/// <summary>
/// Facebook Instant Games account information, if a Facebook Instant Games account has been linked
/// </summary>
public UserFacebookInstantGamesIdInfo FacebookInstantGamesIdInfo;
/// <summary>
/// User Gamecenter information, if a Gamecenter account has been linked
/// </summary>
public UserGameCenterInfo GameCenterInfo;
/// <summary>
/// User Google account information, if a Google account has been linked
/// </summary>
public UserGoogleInfo GoogleInfo;
/// <summary>
/// User Google Play Games account information, if a Google Play Games account has been linked
/// </summary>
public UserGooglePlayGamesInfo GooglePlayGamesInfo;
/// <summary>
/// User iOS device information, if an iOS device has been linked
/// </summary>
public UserIosDeviceInfo IosDeviceInfo;
/// <summary>
/// User Kongregate account information, if a Kongregate account has been linked
/// </summary>
public UserKongregateInfo KongregateInfo;
/// <summary>
/// Nintendo Switch account information, if a Nintendo Switch account has been linked
/// </summary>
public UserNintendoSwitchAccountIdInfo NintendoSwitchAccountInfo;
/// <summary>
/// Nintendo Switch device information, if a Nintendo Switch device has been linked
/// </summary>
public UserNintendoSwitchDeviceIdInfo NintendoSwitchDeviceIdInfo;
/// <summary>
/// OpenID Connect information, if any OpenID Connect accounts have been linked
/// </summary>
public List<UserOpenIdInfo> OpenIdInfo;
/// <summary>
/// Unique identifier for the user account
/// </summary>
public string PlayFabId;
/// <summary>
/// Personal information for the user which is considered more sensitive
/// </summary>
public UserPrivateAccountInfo PrivateInfo;
/// <summary>
/// User PlayStation :tm: Network account information, if a PlayStation :tm: Network account has been linked
/// </summary>
public UserPsnInfo PsnInfo;
/// <summary>
/// Server Custom ID information, if a server custom ID has been assigned
/// </summary>
public UserServerCustomIdInfo ServerCustomIdInfo;
/// <summary>
/// User Steam information, if a Steam account has been linked
/// </summary>
public UserSteamInfo SteamInfo;
/// <summary>
/// Title-specific information for the user account
/// </summary>
public UserTitleInfo TitleInfo;
/// <summary>
/// User Twitch account information, if a Twitch account has been linked
/// </summary>
public UserTwitchInfo TwitchInfo;
/// <summary>
/// User account name in the PlayFab service
/// </summary>
public string Username;
/// <summary>
/// User XBox account information, if a XBox account has been linked
/// </summary>
public UserXboxInfo XboxInfo;
}
[Serializable]
public class UserAndroidDeviceInfo : PlayFabBaseModel
{
/// <summary>
/// Android device ID
/// </summary>
public string AndroidDeviceId;
}
[Serializable]
public class UserAppleIdInfo : PlayFabBaseModel
{
/// <summary>
/// Apple subject ID
/// </summary>
public string AppleSubjectId;
}
[Serializable]
public class UserCustomIdInfo : PlayFabBaseModel
{
/// <summary>
/// Custom ID
/// </summary>
public string CustomId;
}
/// <summary>
/// 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.
/// </summary>
public enum UserDataPermission
{
Private,
Public
}
[Serializable]
public class UserDataRecord : PlayFabBaseModel
{
/// <summary>
/// Timestamp for when this data was last updated.
/// </summary>
public DateTime LastUpdated;
/// <summary>
/// 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.
/// </summary>
public UserDataPermission? Permission;
/// <summary>
/// Data stored for the specified user data key.
/// </summary>
public string Value;
}
[Serializable]
public class UserFacebookInfo : PlayFabBaseModel
{
/// <summary>
/// Facebook identifier
/// </summary>
public string FacebookId;
/// <summary>
/// Facebook full name
/// </summary>
public string FullName;
}
[Serializable]
public class UserFacebookInstantGamesIdInfo : PlayFabBaseModel
{
/// <summary>
/// Facebook Instant Games ID
/// </summary>
public string FacebookInstantGamesId;
}
[Serializable]
public class UserGameCenterInfo : PlayFabBaseModel
{
/// <summary>
/// Gamecenter identifier
/// </summary>
public string GameCenterId;
}
[Serializable]
public class UserGoogleInfo : PlayFabBaseModel
{
/// <summary>
/// Email address of the Google account
/// </summary>
public string GoogleEmail;
/// <summary>
/// Gender information of the Google account
/// </summary>
public string GoogleGender;
/// <summary>
/// Google ID
/// </summary>
public string GoogleId;
/// <summary>
/// Locale of the Google account
/// </summary>
public string GoogleLocale;
/// <summary>
/// Name of the Google account user
/// </summary>
public string GoogleName;
}
[Serializable]
public class UserGooglePlayGamesInfo : PlayFabBaseModel
{
/// <summary>
/// Avatar image url of the Google Play Games player
/// </summary>
public string GooglePlayGamesPlayerAvatarImageUrl;
/// <summary>
/// Display name of the Google Play Games player
/// </summary>
public string GooglePlayGamesPlayerDisplayName;
/// <summary>
/// Google Play Games player ID
/// </summary>
public string GooglePlayGamesPlayerId;
}
[Serializable]
public class UserIosDeviceInfo : PlayFabBaseModel
{
/// <summary>
/// iOS device ID
/// </summary>
public string IosDeviceId;
}
[Serializable]
public class UserKongregateInfo : PlayFabBaseModel
{
/// <summary>
/// Kongregate ID
/// </summary>
public string KongregateId;
/// <summary>
/// Kongregate Username
/// </summary>
public string KongregateName;
}
[Serializable]
public class UserNintendoSwitchAccountIdInfo : PlayFabBaseModel
{
/// <summary>
/// Nintendo Switch account subject ID
/// </summary>
public string NintendoSwitchAccountSubjectId;
}
[Serializable]
public class UserNintendoSwitchDeviceIdInfo : PlayFabBaseModel
{
/// <summary>
/// Nintendo Switch Device ID
/// </summary>
public string NintendoSwitchDeviceId;
}
[Serializable]
public class UserOpenIdInfo : PlayFabBaseModel
{
/// <summary>
/// OpenID Connection ID
/// </summary>
public string ConnectionId;
/// <summary>
/// OpenID Issuer
/// </summary>
public string Issuer;
/// <summary>
/// OpenID Subject
/// </summary>
public string Subject;
}
public enum UserOrigination
{
Organic,
Steam,
Google,
Amazon,
Facebook,
Kongregate,
GamersFirst,
Unknown,
IOS,
LoadTest,
Android,
PSN,
GameCenter,
CustomId,
XboxLive,
Parse,
Twitch,
ServerCustomId,
NintendoSwitchDeviceId,
FacebookInstantGamesId,
OpenIdConnect,
Apple,
NintendoSwitchAccount,
GooglePlayGames,
XboxMobileStore,
King
}
[Serializable]
public class UserPrivateAccountInfo : PlayFabBaseModel
{
/// <summary>
/// user email address
/// </summary>
public string Email;
}
[Serializable]
public class UserPsnInfo : PlayFabBaseModel
{
/// <summary>
/// PlayStation :tm: Network account ID
/// </summary>
public string PsnAccountId;
/// <summary>
/// PlayStation :tm: Network online ID
/// </summary>
public string PsnOnlineId;
}
[Serializable]
public class UserServerCustomIdInfo : PlayFabBaseModel
{
/// <summary>
/// Custom ID
/// </summary>
public string CustomId;
}
[Serializable]
public class UserSettings : PlayFabBaseModel
{
/// <summary>
/// Boolean for whether this player is eligible for gathering device info.
/// </summary>
public bool GatherDeviceInfo;
/// <summary>
/// Boolean for whether this player should report OnFocus play-time tracking.
/// </summary>
public bool GatherFocusInfo;
/// <summary>
/// Boolean for whether this player is eligible for ad tracking.
/// </summary>
public bool NeedsAttribution;
}
[Serializable]
public class UserSteamInfo : PlayFabBaseModel
{
/// <summary>
/// what stage of game ownership the user is listed as being in, from Steam
/// </summary>
public TitleActivationStatus? SteamActivationStatus;
/// <summary>
/// the country in which the player resides, from Steam data
/// </summary>
public string SteamCountry;
/// <summary>
/// currency type set in the user Steam account
/// </summary>
public Currency? SteamCurrency;
/// <summary>
/// Steam identifier
/// </summary>
public string SteamId;
/// <summary>
/// Steam display name
/// </summary>
public string SteamName;
}
[Serializable]
public class UserTitleInfo : PlayFabBaseModel
{
/// <summary>
/// URL to the player's avatar.
/// </summary>
public string AvatarUrl;
/// <summary>
/// timestamp indicating when the user was first associated with this game (this can differ significantly from when the user
/// first registered with PlayFab)
/// </summary>
public DateTime Created;
/// <summary>
/// name of the user, as it is displayed in-game
/// </summary>
public string DisplayName;
/// <summary>
/// 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)
/// </summary>
public DateTime? FirstLogin;
/// <summary>
/// boolean indicating whether or not the user is currently banned for a title
/// </summary>
public bool? isBanned;
/// <summary>
/// timestamp for the last user login for this title
/// </summary>
public DateTime? LastLogin;
/// <summary>
/// source by which the user first joined the game, if known
/// </summary>
public UserOrigination? Origination;
/// <summary>
/// Title player account entity for this user
/// </summary>
public EntityKey TitlePlayerAccount;
}
[Serializable]
public class UserTwitchInfo : PlayFabBaseModel
{
/// <summary>
/// Twitch ID
/// </summary>
public string TwitchId;
/// <summary>
/// Twitch Username
/// </summary>
public string TwitchUserName;
}
[Serializable]
public class UserXboxInfo : PlayFabBaseModel
{
/// <summary>
/// XBox user ID
/// </summary>
public string XboxUserId;
/// <summary>
/// XBox user sandbox
/// </summary>
public string XboxUserSandbox;
}
[Serializable]
public class ValidateAmazonReceiptRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version of the fulfilled items. If null, defaults to the primary catalog.
/// </summary>
public string CatalogVersion;
/// <summary>
/// Currency used to pay for the purchase (ISO 4217 currency code).
/// </summary>
public string CurrencyCode;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Amount of the stated currency paid, in centesimal units.
/// </summary>
public int PurchasePrice;
/// <summary>
/// ReceiptId returned by the Amazon App Store in-app purchase API
/// </summary>
public string ReceiptId;
/// <summary>
/// AmazonId of the user making the purchase as returned by the Amazon App Store in-app purchase API
/// </summary>
public string UserId;
}
/// <summary>
/// Once verified, the catalog item matching the Amazon item name will be added to the user's inventory. This result should
/// be used for immediate updates to the local client game state as opposed to the GetUserInventory API which can have an up
/// to half second delay.
/// </summary>
[Serializable]
public class ValidateAmazonReceiptResult : PlayFabResultCommon
{
/// <summary>
/// Fulfilled inventory items and recorded purchases in fulfillment of the validated receipt transactions.
/// </summary>
public List<PurchaseReceiptFulfillment> Fulfillments;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ValidateGooglePlayPurchaseRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version of the fulfilled items. If null, defaults to the primary catalog.
/// </summary>
public string CatalogVersion;
/// <summary>
/// Currency used to pay for the purchase (ISO 4217 currency code).
/// </summary>
public string CurrencyCode;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Amount of the stated currency paid, in centesimal units.
/// </summary>
public uint? PurchasePrice;
/// <summary>
/// Original JSON string returned by the Google Play IAB API.
/// </summary>
public string ReceiptJson;
/// <summary>
/// Signature returned by the Google Play IAB API.
/// </summary>
public string Signature;
}
/// <summary>
/// Once verified, the catalog item (ItemId) matching the GooglePlay store item (productId) will be added to the user's
/// inventory. This result should be used for immediate updates to the local client game state as opposed to the
/// GetUserInventory API which can have an up to half second delay.
/// </summary>
[Serializable]
public class ValidateGooglePlayPurchaseResult : PlayFabResultCommon
{
/// <summary>
/// Fulfilled inventory items and recorded purchases in fulfillment of the validated receipt transactions.
/// </summary>
public List<PurchaseReceiptFulfillment> Fulfillments;
}
/// <summary>
/// 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).
/// </summary>
[Serializable]
public class ValidateIOSReceiptRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version of the fulfilled items. If null, defaults to the primary catalog.
/// </summary>
public string CatalogVersion;
/// <summary>
/// Currency used to pay for the purchase (ISO 4217 currency code).
/// </summary>
public string CurrencyCode;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Amount of the stated currency paid, in centesimal units.
/// </summary>
public int PurchasePrice;
/// <summary>
/// Base64 encoded receipt data, passed back by the App Store as a result of a successful purchase.
/// </summary>
public string ReceiptData;
}
/// <summary>
/// Once verified, the catalog item matching the iTunes item name will be added to the user's inventory. This result should
/// be used for immediate updates to the local client game state as opposed to the GetUserInventory API which can have an up
/// to half second delay.
/// </summary>
[Serializable]
public class ValidateIOSReceiptResult : PlayFabResultCommon
{
/// <summary>
/// Fulfilled inventory items and recorded purchases in fulfillment of the validated receipt transactions.
/// </summary>
public List<PurchaseReceiptFulfillment> Fulfillments;
}
[Serializable]
public class ValidateWindowsReceiptRequest : PlayFabRequestCommon
{
/// <summary>
/// Catalog version of the fulfilled items. If null, defaults to the primary catalog.
/// </summary>
public string CatalogVersion;
/// <summary>
/// Currency used to pay for the purchase (ISO 4217 currency code).
/// </summary>
public string CurrencyCode;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Amount of the stated currency paid, in centesimal units.
/// </summary>
public uint PurchasePrice;
/// <summary>
/// XML Receipt returned by the Windows App Store in-app purchase API
/// </summary>
public string Receipt;
}
/// <summary>
/// Once verified, the catalog item matching the Product name will be added to the user's inventory. This result should be
/// used for immediate updates to the local client game state as opposed to the GetUserInventory API which can have an up to
/// half second delay.
/// </summary>
[Serializable]
public class ValidateWindowsReceiptResult : PlayFabResultCommon
{
/// <summary>
/// Fulfilled inventory items and recorded purchases in fulfillment of the validated receipt transactions.
/// </summary>
public List<PurchaseReceiptFulfillment> Fulfillments;
}
[Serializable]
public class ValueToDateModel : PlayFabBaseModel
{
/// <summary>
/// ISO 4217 code of the currency used in the purchases
/// </summary>
public string Currency;
/// <summary>
/// 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')
/// </summary>
public uint TotalValue;
/// <summary>
/// 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'.
/// </summary>
public string TotalValueAsDecimal;
}
[Serializable]
public class Variable : PlayFabBaseModel
{
/// <summary>
/// Name of the variable.
/// </summary>
public string Name;
/// <summary>
/// Value of the variable.
/// </summary>
public string Value;
}
[Serializable]
public class VirtualCurrencyRechargeTime : PlayFabBaseModel
{
/// <summary>
/// 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.
/// </summary>
public int RechargeMax;
/// <summary>
/// Server timestamp in UTC indicating the next time the virtual currency will be incremented.
/// </summary>
public DateTime RechargeTime;
/// <summary>
/// Time remaining (in seconds) before the next recharge increment of the virtual currency.
/// </summary>
public int SecondsToRecharge;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class WriteClientCharacterEventRequest : PlayFabRequestCommon
{
/// <summary>
/// Custom event properties. Each property consists of a name (string) and a value (JSON object).
/// </summary>
public Dictionary<string,object> Body;
/// <summary>
/// Unique PlayFab assigned ID for a specific character owned by a user
/// </summary>
public string CharacterId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// 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).
/// </summary>
public string EventName;
/// <summary>
/// The time (in UTC) associated with this event. The value defaults to the current time.
/// </summary>
public DateTime? Timestamp;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class WriteClientPlayerEventRequest : PlayFabRequestCommon
{
/// <summary>
/// Custom data properties associated with the event. Each property consists of a name (string) and a value (JSON object).
/// </summary>
public Dictionary<string,object> Body;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// 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).
/// </summary>
public string EventName;
/// <summary>
/// The time (in UTC) associated with this event. The value defaults to the current time.
/// </summary>
public DateTime? Timestamp;
}
[Serializable]
public class WriteEventResponse : PlayFabResultCommon
{
/// <summary>
/// The unique identifier of the event. The values of this identifier consist of ASCII characters and are not constrained to
/// any particular format.
/// </summary>
public string EventId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class WriteTitleEventRequest : PlayFabRequestCommon
{
/// <summary>
/// Custom event properties. Each property consists of a name (string) and a value (JSON object).
/// </summary>
public Dictionary<string,object> Body;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// 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).
/// </summary>
public string EventName;
/// <summary>
/// The time (in UTC) associated with this event. The value defaults to the current time.
/// </summary>
public DateTime? Timestamp;
}
[Serializable]
public class XboxLiveAccountPlayFabIdPair : PlayFabBaseModel
{
/// <summary>
/// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Xbox Live identifier.
/// </summary>
public string PlayFabId;
/// <summary>
/// Unique Xbox Live identifier for a user.
/// </summary>
public string XboxLiveAccountId;
}
}
#endif