cloudscript-server
Version:
A local environment for cloudscript development
7,441 lines • 304 kB
TypeScript
/** Static object you add your CloudScript endpoints to */
declare var handlers: IPlayFabHandlers;
interface IPlayFabHandlers {
[handlerId: string]: (args?: any, context?: IPlayFabContext) => any;
}
/** The playfab id for the user who called into CloudScript */
declare var currentPlayerId: string;
/**
* Static object containing cloudscript logging functions
* debug(message: string, exc?: any): void,
* error(message: string, exc?: any): void,
* info(message: string, exc?: any): void,
*/
declare var log: Logger;
interface Logger {
debug(message: string, exc?: any): void;
error(message: string, exc?: any): void;
info(message: string, exc?: any): void;
}
/**
* Static object containing cloudscript external request functions
* request(url: string, method?: string, content?: string, contentType?: string): string
*/
declare var http: IPlayFabHttp;
interface IPlayFabHttp {
request(
url: string,
method?: string,
content?: string,
contentType?: string,
headers?: { [key: string]: string }
): string;
}
interface ITriggeredByTask {
Name: string;
Id: string;
}
interface IPlayFabContext {
playStreamEvent: any; // PlayStreamModels.IBasePlayStreamEvent;
playerProfile: IPlayFabPlayerProfile;
triggeredByTask: ITriggeredByTask;
}
interface IPlayFabPlayerProfile {
PlayerId: string;
DisplayName: string;
}
declare var script: IPlayFabEnvironment;
interface IPlayFabEnvironment {
revision: number;
titleId: string;
}
interface IPlayFabError {
cloudScriptErrorCode: string;
stack: string;
apiErrorInfo?: IApiErrorInfo;
}
interface IApiErrorInfo {
api: string;
request: any;
result: any;
apiError?: IApiError;
}
interface IApiError {
code: number;
status: string;
error: string;
errorCode: number;
errorMessage: string;
errorDetails?: { [index: string]: { message: string[] } };
}
/** Static object which allows access to PlayFab Classic Server API calls */
declare var server: IPlayFabServerAPI;
/** Static object which allows access to PlayFab Entity API calls */
declare var entity: IPlayFabEntityAPI;
/** ServerAPI.Models as interfaces */
declare namespace PlayFabServerModels {
interface AdCampaignAttribution {
/** UTC time stamp of attribution */
AttributedAt: string;
/** Attribution campaign identifier */
CampaignId?: string;
/** Attribution network name */
Platform?: string;
}
interface AdCampaignAttributionModel {
/** UTC time stamp of attribution */
AttributedAt: string;
/** Attribution campaign identifier */
CampaignId?: string;
/** Attribution network name */
Platform?: string;
}
interface AddCharacterVirtualCurrencyRequest {
/**
* Amount to be added to the character balance of the specified virtual currency. Maximum VC balance is Int32
* (2,147,483,647). Any increase over this value will be discarded.
*/
Amount: number;
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** PlayFab unique identifier of the user whose virtual currency balance is to be incremented. */
PlayFabId: string;
/** Name of the virtual currency which is to be incremented. */
VirtualCurrency: string;
}
interface AddFriendRequest {
/** Email address of the user being added. */
FriendEmail?: string;
/** The PlayFab identifier of the user being added. */
FriendPlayFabId?: string;
/** Title-specific display name of the user to being added. */
FriendTitleDisplayName?: string;
/** The PlayFab username of the user being added */
FriendUsername?: string;
/** PlayFab identifier of the player to add a new friend. */
PlayFabId: string;
}
interface AddGenericIDRequest {
/** Generic service identifier to add to the player account. */
GenericId: GenericServiceId;
/** PlayFabId of the user to link. */
PlayFabId: string;
}
/**
* This API will trigger a player_tag_added event and add a tag with the given TagName and PlayFabID to the corresponding
* player profile. TagName can be used for segmentation and it is limited to 256 characters. Also there is a limit on the
* number of tags a title can have.
*/
interface AddPlayerTagRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** Unique tag for player profile. */
TagName: string;
}
interface AddPlayerTagResult {}
interface AddSharedGroupMembersRequest {
/** An array of unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabIds: string[];
/** Unique identifier for the shared group. */
SharedGroupId: string;
}
interface AddSharedGroupMembersResult {}
interface AddUserVirtualCurrencyRequest {
/**
* Amount to be added to the user balance of the specified virtual currency. Maximum VC balance is Int32 (2,147,483,647).
* Any increase over this value will be discarded.
*/
Amount: number;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** PlayFab unique identifier of the user whose virtual currency balance is to be increased. */
PlayFabId: string;
/** Name of the virtual currency which is to be incremented. */
VirtualCurrency: string;
}
interface AdvancedPushPlatformMsg {
/**
* Stops GoogleCloudMessaging notifications from including both notification and data properties and instead only sends the
* data property.
*/
GCMDataOnly?: boolean;
/** The Json the platform should receive. */
Json: string;
/** The platform that should receive the Json. */
Platform: PushNotificationPlatform;
}
/**
* 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.
*/
interface AuthenticateSessionTicketRequest {
/** Session ticket as issued by a PlayFab client login API. */
SessionTicket: string;
}
interface AuthenticateSessionTicketResult {
/** Indicates if token was expired at request time. */
IsSessionTicketExpired?: boolean;
/** Account info for the user whose session ticket was supplied. */
UserInfo?: UserAccountInfo;
}
interface AwardSteamAchievementItem {
/** Unique Steam achievement name. */
AchievementName: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** Result of the award attempt (only valid on response, not on request). */
Result: boolean;
}
interface AwardSteamAchievementRequest {
/** Array of achievements to grant and the users to whom they are to be granted. */
Achievements: AwardSteamAchievementItem[];
}
interface AwardSteamAchievementResult {
/** Array of achievements granted. */
AchievementResults?: AwardSteamAchievementItem[];
}
interface AzureResourceSystemData {
/** The timestamp of resource creation (UTC) */
CreatedAt?: string;
/** The identity that created the resource */
CreatedBy?: string;
/** The type of identity that created the resource */
CreatedByType?: string;
/** The type of identity that last modified the resource */
LastModifiedAt?: string;
/** The identity that last modified the resource */
LastModifiedBy?: string;
/** The type of identity that last modified the resource */
LastModifiedByType?: string;
}
/** Contains information for a ban. */
interface BanInfo {
/** The active state of this ban. Expired bans may still have this value set to true but they will have no effect. */
Active: boolean;
/** The unique Ban Id associated with this ban. */
BanId?: string;
/** The time when this ban was applied. */
Created?: string;
/** The time when this ban expires. Permanent bans do not have expiration date. */
Expires?: string;
/** The IP address on which the ban was applied. May affect multiple players. */
IPAddress?: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId?: string;
/** The reason why this ban was applied. */
Reason?: string;
}
/** Represents a single ban request. */
interface BanRequest {
/** The duration in hours for the ban. Leave this blank for a permanent ban. */
DurationInHours?: number;
/** IP address to be banned. May affect multiple players. */
IPAddress?: string;
/** MAC address to be banned. May affect multiple players. */
MACAddress?: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** The reason for this ban. Maximum 140 characters. */
Reason?: string;
}
/**
* The existence of each user will not be verified. When banning by IP or MAC address, multiple players may be affected, so
* use this feature with caution. Returns information about the new bans.
*/
interface BanUsersRequest {
/** List of ban requests to be applied. Maximum 100. */
Bans: BanRequest[];
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
}
interface BanUsersResult {
/** Information on the bans that were applied */
BanData?: BanInfo[];
}
/** A purchasable item from the item catalog */
interface CatalogItem {
/**
* defines the bundle properties for the item - bundles are items which contain other items, including random drop tables
* and virtual currencies
*/
Bundle?: CatalogItemBundleInfo;
/** if true, then an item instance of this type can be used to grant a character to a user. */
CanBecomeCharacter: boolean;
/** catalog version for this item */
CatalogVersion?: string;
/** defines the consumable properties (number of uses, timeout) for the item */
Consumable?: CatalogItemConsumableInfo;
/**
* 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
*/
Container?: CatalogItemContainerInfo;
/** game specific custom data */
CustomData?: string;
/** text description of item, to show in-game */
Description?: string;
/** text name for the item, to show in-game */
DisplayName?: string;
/**
* 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.
*/
InitialLimitedEditionCount: number;
/** BETA: If true, then only a fixed number can ever be granted. */
IsLimitedEdition: boolean;
/**
* 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
*/
IsStackable: boolean;
/** if true, then an item instance of this type can be traded between players using the trading APIs */
IsTradable: boolean;
/** class to which the item belongs */
ItemClass?: string;
/** unique identifier for this item */
ItemId: string;
/**
* 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.
*/
ItemImageUrl?: string;
/** override prices for this item for specific currencies */
RealCurrencyPrices?: { [key: string]: number };
/** list of item tags */
Tags?: string[];
/** price of this item in virtual currencies and "RM" (the base Real Money purchase price, in USD pennies) */
VirtualCurrencyPrices?: { [key: string]: number };
}
interface CatalogItemBundleInfo {
/** unique ItemId values for all items which will be added to the player inventory when the bundle is added */
BundledItems?: string[];
/**
* 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)
*/
BundledResultTables?: string[];
/** virtual currency types and balances which will be added to the player inventory when the bundle is added */
BundledVirtualCurrencies?: { [key: string]: number };
}
interface CatalogItemConsumableInfo {
/** number of times this object can be used, after which it will be removed from the player inventory */
UsageCount?: number;
/**
* 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)
*/
UsagePeriod?: number;
/**
* 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
*/
UsagePeriodGroup?: string;
}
/**
* 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.
*/
interface CatalogItemContainerInfo {
/** unique ItemId values for all items which will be added to the player inventory, once the container has been unlocked */
ItemContents?: string[];
/**
* 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)
*/
KeyItemId?: string;
/**
* 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)
*/
ResultTableContents?: string[];
/** virtual currency types and balances which will be added to the player inventory when the container is unlocked */
VirtualCurrencyContents?: { [key: string]: number };
}
interface CharacterInventory {
/** The id of this character. */
CharacterId?: string;
/** The inventory of this character. */
Inventory?: ItemInstance[];
}
interface CharacterLeaderboardEntry {
/** PlayFab unique identifier of the character that belongs to the user for this leaderboard entry. */
CharacterId?: string;
/** Title-specific display name of the character for this leaderboard entry. */
CharacterName?: string;
/** Name of the character class for this entry. */
CharacterType?: string;
/** Title-specific display name of the user for this leaderboard entry. */
DisplayName?: string;
/** PlayFab unique identifier of the user for this leaderboard entry. */
PlayFabId?: string;
/** User's overall position in the leaderboard. */
Position: number;
/** Specific value of the user's statistic. */
StatValue: number;
}
interface CharacterResult {
/** The id for this character on this player. */
CharacterId?: string;
/** The name of this character. */
CharacterName?: string;
/** The type-string that was given to this character on creation. */
CharacterType?: string;
}
type CloudScriptRevisionOption = "Live" | "Latest" | "Specific";
interface ConsumeItemRequest {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId?: string;
/** Number of uses to consume from the item. */
ConsumeCount: number;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique instance identifier of the item to be consumed. */
ItemInstanceId: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface ConsumeItemResult {
/** Unique instance identifier of the item with uses consumed. */
ItemInstanceId?: string;
/** Number of uses remaining on the item. */
RemainingUses: number;
}
interface ContactEmailInfo {
/** The email address */
EmailAddress?: string;
/** The name of the email info data */
Name?: string;
/** The verification status of the email */
VerificationStatus?: EmailVerificationStatus;
}
interface ContactEmailInfoModel {
/** The email address */
EmailAddress?: string;
/** The name of the email info data */
Name?: string;
/** The verification status of the email */
VerificationStatus?: EmailVerificationStatus;
}
type ContinentCode = "AF" | "AN" | "AS" | "EU" | "NA" | "OC" | "SA";
type CountryCode =
| "AF"
| "AX"
| "AL"
| "DZ"
| "AS"
| "AD"
| "AO"
| "AI"
| "AQ"
| "AG"
| "AR"
| "AM"
| "AW"
| "AU"
| "AT"
| "AZ"
| "BS"
| "BH"
| "BD"
| "BB"
| "BY"
| "BE"
| "BZ"
| "BJ"
| "BM"
| "BT"
| "BO"
| "BQ"
| "BA"
| "BW"
| "BV"
| "BR"
| "IO"
| "BN"
| "BG"
| "BF"
| "BI"
| "KH"
| "CM"
| "CA"
| "CV"
| "KY"
| "CF"
| "TD"
| "CL"
| "CN"
| "CX"
| "CC"
| "CO"
| "KM"
| "CG"
| "CD"
| "CK"
| "CR"
| "CI"
| "HR"
| "CU"
| "CW"
| "CY"
| "CZ"
| "DK"
| "DJ"
| "DM"
| "DO"
| "EC"
| "EG"
| "SV"
| "GQ"
| "ER"
| "EE"
| "ET"
| "FK"
| "FO"
| "FJ"
| "FI"
| "FR"
| "GF"
| "PF"
| "TF"
| "GA"
| "GM"
| "GE"
| "DE"
| "GH"
| "GI"
| "GR"
| "GL"
| "GD"
| "GP"
| "GU"
| "GT"
| "GG"
| "GN"
| "GW"
| "GY"
| "HT"
| "HM"
| "VA"
| "HN"
| "HK"
| "HU"
| "IS"
| "IN"
| "ID"
| "IR"
| "IQ"
| "IE"
| "IM"
| "IL"
| "IT"
| "JM"
| "JP"
| "JE"
| "JO"
| "KZ"
| "KE"
| "KI"
| "KP"
| "KR"
| "KW"
| "KG"
| "LA"
| "LV"
| "LB"
| "LS"
| "LR"
| "LY"
| "LI"
| "LT"
| "LU"
| "MO"
| "MK"
| "MG"
| "MW"
| "MY"
| "MV"
| "ML"
| "MT"
| "MH"
| "MQ"
| "MR"
| "MU"
| "YT"
| "MX"
| "FM"
| "MD"
| "MC"
| "MN"
| "ME"
| "MS"
| "MA"
| "MZ"
| "MM"
| "NA"
| "NR"
| "NP"
| "NL"
| "NC"
| "NZ"
| "NI"
| "NE"
| "NG"
| "NU"
| "NF"
| "MP"
| "NO"
| "OM"
| "PK"
| "PW"
| "PS"
| "PA"
| "PG"
| "PY"
| "PE"
| "PH"
| "PN"
| "PL"
| "PT"
| "PR"
| "QA"
| "RE"
| "RO"
| "RU"
| "RW"
| "BL"
| "SH"
| "KN"
| "LC"
| "MF"
| "PM"
| "VC"
| "WS"
| "SM"
| "ST"
| "SA"
| "SN"
| "RS"
| "SC"
| "SL"
| "SG"
| "SX"
| "SK"
| "SI"
| "SB"
| "SO"
| "ZA"
| "GS"
| "SS"
| "ES"
| "LK"
| "SD"
| "SR"
| "SJ"
| "SZ"
| "SE"
| "CH"
| "SY"
| "TW"
| "TJ"
| "TZ"
| "TH"
| "TL"
| "TG"
| "TK"
| "TO"
| "TT"
| "TN"
| "TR"
| "TM"
| "TC"
| "TV"
| "UG"
| "UA"
| "AE"
| "GB"
| "US"
| "UM"
| "UY"
| "UZ"
| "VU"
| "VE"
| "VN"
| "VG"
| "VI"
| "WF"
| "EH"
| "YE"
| "ZM"
| "ZW";
/**
* If SharedGroupId is specified, the service will attempt to create a group with that identifier, and will return an error
* if it is already in use. If no SharedGroupId is specified, a random identifier will be assigned.
*/
interface CreateSharedGroupRequest {
/** Unique identifier for the shared group (a random identifier will be assigned, if one is not specified). */
SharedGroupId?: string;
}
interface CreateSharedGroupResult {
/** Unique identifier for the shared group. */
SharedGroupId?: string;
}
type 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";
/**
* This function will delete the specified character from the list allowed by the user, and will also delete any inventory
* or VC currently held by that character. It will NOT delete any statistics associated for this character, in order to
* preserve leaderboard integrity.
*/
interface DeleteCharacterFromUserRequest {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/**
* If true, the character's inventory will be transferred up to the owning user; otherwise, this request will purge those
* items.
*/
SaveCharacterInventory: boolean;
}
interface DeleteCharacterFromUserResult {}
/**
* Deletes all data associated with the player, including statistics, custom data, inventory, purchases, virtual currency
* balances, characters and shared group memberships. Removes the player from all leaderboards and player search indexes.
* Does not delete PlayStream event history associated with the player. Does not delete the publisher user account that
* created the player in the title nor associated data such as username, password, email address, account linkages, or
* friends list. Note, this API queues the player for deletion and returns immediately. It may take several minutes or more
* before all player data is fully deleted. Until the player data is fully deleted, attempts to recreate the player with
* the same user account in the same title will fail with the 'AccountDeleted' error. This API must be enabled for use as
* an option in the game manager website. It is disabled by default.
*/
interface DeletePlayerRequest {
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface DeletePlayerResult {}
/** Represents the request to delete a push notification template. */
interface DeletePushNotificationTemplateRequest {
/** Id of the push notification template to be deleted. */
PushNotificationTemplateId: string;
}
interface DeletePushNotificationTemplateResult {}
interface DeleteSharedGroupRequest {
/** Unique identifier for the shared group. */
SharedGroupId: string;
}
interface DeregisterGameRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique identifier for the Game Server Instance that is being deregistered. */
LobbyId: string;
}
interface DeregisterGameResponse {}
type EmailVerificationStatus = "Unverified" | "Pending" | "Confirmed";
interface EmptyResponse {}
interface EmptyResult {}
/** Combined entity type and ID structure which uniquely identifies a single entity. */
interface EntityKey {
/** Unique ID of the entity. */
Id: string;
/** Entity type. See https://docs.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types */
Type?: string;
}
interface EntityTokenResponse {
/** The entity id and type. */
Entity?: EntityKey;
/** The token used to set X-EntityToken for all entity based API calls. */
EntityToken?: string;
/** The time the token will expire, if it is an expiring token, in UTC. */
TokenExpiration?: string;
}
interface EvaluateRandomResultTableRequest {
/**
* Specifies the catalog version that should be used to evaluate the Random Result Table. If unspecified, uses
* default/primary catalog.
*/
CatalogVersion?: string;
/** The unique identifier of the Random Result Table to use. */
TableId: string;
}
/**
* Note that if the Random Result Table contains no entries, or does not exist for the catalog specified (the Primary
* catalog if one is not specified), an InvalidDropTable error will be returned.
*/
interface EvaluateRandomResultTableResult {
/** Unique identifier for the item returned from the Random Result Table evaluation, for the given catalog. */
ResultItemId?: string;
}
interface ExecuteCloudScriptResult {
/** Number of PlayFab API requests issued by the CloudScript function */
APIRequestsIssued: number;
/** Information about the error, if any, that occurred during execution */
Error?: ScriptExecutionError;
ExecutionTimeSeconds: number;
/** The name of the function that executed */
FunctionName?: string;
/** The object returned from the CloudScript function, if any */
FunctionResult?: any;
/**
* 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.
*/
FunctionResultTooLarge?: boolean;
/** Number of external HTTP requests issued by the CloudScript function */
HttpRequestsIssued: number;
/**
* 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.
*/
Logs?: LogStatement[];
/**
* 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.
*/
LogsTooLarge?: boolean;
MemoryConsumedBytes: number;
/**
* Processor time consumed while executing the function. This does not include time spent waiting on API calls or HTTP
* requests.
*/
ProcessorTimeSeconds: number;
/** The revision of the CloudScript that executed */
Revision: number;
}
interface ExecuteCloudScriptServerRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The name of the CloudScript function to execute */
FunctionName: string;
/** Object that is passed in to the function as the first argument */
FunctionParameter?: any;
/**
* 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.
*/
GeneratePlayStreamEvent?: boolean;
/** The unique user identifier for the player on whose behalf the script is being run */
PlayFabId: string;
/**
* 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'.
*/
RevisionSelection?: CloudScriptRevisionOption;
/** The specivic revision to execute, when RevisionSelection is set to 'Specific' */
SpecificRevision?: number;
}
interface FacebookInstantGamesPlayFabIdPair {
/** Unique Facebook Instant Games identifier for a user. */
FacebookInstantGamesId?: string;
/** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Facebook Instant Games identifier. */
PlayFabId?: string;
}
interface FacebookPlayFabIdPair {
/** Unique Facebook identifier for a user. */
FacebookId?: string;
/** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Facebook identifier. */
PlayFabId?: string;
}
interface FriendInfo {
/** Available Facebook information (if the user and PlayFab friend are also connected in Facebook). */
FacebookInfo?: UserFacebookInfo;
/** PlayFab unique identifier for this friend. */
FriendPlayFabId?: string;
/** Available Game Center information (if the user and PlayFab friend are also connected in Game Center). */
GameCenterInfo?: UserGameCenterInfo;
/** The profile of the user, if requested. */
Profile?: PlayerProfileModel;
/** Available PSN information, if the user and PlayFab friend are both connected to PSN. */
PSNInfo?: UserPsnInfo;
/** Available Steam information (if the user and PlayFab friend are also connected in Steam). */
SteamInfo?: UserSteamInfo;
/** Tags which have been associated with this friend. */
Tags?: string[];
/** Title-specific display name for this friend. */
TitleDisplayName?: string;
/** PlayFab unique username for this friend. */
Username?: string;
/** Available Xbox information, if the user and PlayFab friend are both connected to Xbox Live. */
XboxInfo?: UserXboxInfo;
}
type GameInstanceState = "Open" | "Closed";
type GenericErrorCodes =
| "Success"
| "UnkownError"
| "InvalidParams"
| "AccountNotFound"
| "AccountBanned"
| "InvalidUsernameOrPassword"
| "InvalidTitleId"
| "InvalidEmailAddress"
| "EmailAddressNotAvailable"
| "InvalidUsername"
| "InvalidPassword"
| "UsernameNotAvailable"
| "InvalidSteamTicket"
| "AccountAlreadyLinked"
| "LinkedAccountAlreadyClaimed"
| "InvalidFacebookToken"
| "AccountNotLinked"
| "FailedByPaymentProvider"
| "CouponCodeNotFound"
| "InvalidContainerItem"
| "ContainerNotOwned"
| "KeyNotOwned"
| "InvalidItemIdInTable"
| "InvalidReceipt"
| "ReceiptAlreadyUsed"
| "ReceiptCancelled"
| "GameNotFound"
| "GameModeNotFound"
| "InvalidGoogleToken"
| "UserIsNotPartOfDeveloper"
| "InvalidTitleForDeveloper"
| "TitleNameConflicts"
| "UserisNotValid"
| "ValueAlreadyExists"
| "BuildNotFound"
| "PlayerNotInGame"
| "InvalidTicket"
| "InvalidDeveloper"
| "InvalidOrderInfo"
| "RegistrationIncomplete"
| "InvalidPlatform"
| "UnknownError"
| "SteamApplicationNotOwned"
| "WrongSteamAccount"
| "TitleNotActivated"
| "RegistrationSessionNotFound"
| "NoSuchMod"
| "FileNotFound"
| "DuplicateEmail"
| "ItemNotFound"
| "ItemNotOwned"
| "ItemNotRecycleable"
| "ItemNotAffordable"
| "InvalidVirtualCurrency"
| "WrongVirtualCurrency"
| "WrongPrice"
| "NonPositiveValue"
| "InvalidRegion"
| "RegionAtCapacity"
| "ServerFailedToStart"
| "NameNotAvailable"
| "InsufficientFunds"
| "InvalidDeviceID"
| "InvalidPushNotificationToken"
| "NoRemainingUses"
| "InvalidPaymentProvider"
| "PurchaseInitializationFailure"
| "DuplicateUsername"
| "InvalidBuyerInfo"
| "NoGameModeParamsSet"
| "BodyTooLarge"
| "ReservedWordInBody"
| "InvalidTypeInBody"
| "InvalidRequest"
| "ReservedEventName"
| "InvalidUserStatistics"
| "NotAuthenticated"
| "StreamAlreadyExists"
| "ErrorCreatingStream"
| "StreamNotFound"
| "InvalidAccount"
| "PurchaseDoesNotExist"
| "InvalidPurchaseTransactionStatus"
| "APINotEnabledForGameClientAccess"
| "NoPushNotificationARNForTitle"
| "BuildAlreadyExists"
| "BuildPackageDoesNotExist"
| "CustomAnalyticsEventsNotEnabledForTitle"
| "InvalidSharedGroupId"
| "NotAuthorized"
| "MissingTitleGoogleProperties"
| "InvalidItemProperties"
| "InvalidPSNAuthCode"
| "InvalidItemId"
| "PushNotEnabledForAccount"
| "PushServiceError"
| "ReceiptDoesNotContainInAppItems"
| "ReceiptContainsMultipleInAppItems"
| "InvalidBundleID"
| "JavascriptException"
| "InvalidSessionTicket"
| "UnableToConnectToDatabase"
| "InternalServerError"
| "InvalidReportDate"
| "ReportNotAvailable"
| "DatabaseThroughputExceeded"
| "InvalidGameTicket"
| "ExpiredGameTicket"
| "GameTicketDoesNotMatchLobby"
| "LinkedDeviceAlreadyClaimed"
| "DeviceAlreadyLinked"
| "DeviceNotLinked"
| "PartialFailure"
| "PublisherNotSet"
| "ServiceUnavailable"
| "VersionNotFound"
| "RevisionNotFound"
| "InvalidPublisherId"
| "DownstreamServiceUnavailable"
| "APINotIncludedInTitleUsageTier"
| "DAULimitExceeded"
| "APIRequestLimitExceeded"
| "InvalidAPIEndpoint"
| "BuildNotAvailable"
| "ConcurrentEditError"
| "ContentNotFound"
| "CharacterNotFound"
| "CloudScriptNotFound"
| "ContentQuotaExceeded"
| "InvalidCharacterStatistics"
| "PhotonNotEnabledForTitle"
| "PhotonApplicationNotFound"
| "PhotonApplicationNotAssociatedWithTitle"
| "InvalidEmailOrPassword"
| "FacebookAPIError"
| "InvalidContentType"
| "KeyLengthExceeded"
| "DataLengthExceeded"
| "TooManyKeys"
| "FreeTierCannotHaveVirtualCurrency"
| "MissingAmazonSharedKey"
| "AmazonValidationError"
| "InvalidPSNIssuerId"
| "PSNInaccessible"
| "ExpiredAuthToken"
| "FailedToGetEntitlements"
| "FailedToConsumeEntitlement"
| "TradeAcceptingUserNotAllowed"
| "TradeInventoryItemIsAssignedToCharacter"
| "TradeInventoryItemIsBundle"
| "TradeStatusNotValidForCancelling"
| "TradeStatusNotValidForAccepting"
| "TradeDoesNotExist"
| "TradeCancelled"
| "TradeAlreadyFilled"
| "TradeWaitForStatusTimeout"
| "TradeInventoryItemExpired"
| "TradeMissingOfferedAndAcceptedItems"
| "TradeAcceptedItemIsBundle"
| "TradeAcceptedItemIsStackable"
| "TradeInventoryItemInvalidStatus"
| "TradeAcceptedCatalogItemInvalid"
| "TradeAllowedUsersInvalid"
| "TradeInventoryItemDoesNotExist"
| "TradeInventoryItemIsConsumed"
| "TradeInventoryItemIsStackable"
| "TradeAcceptedItemsMismatch"
| "InvalidKongregateToken"
| "FeatureNotConfiguredForTitle"
| "NoMatchingCatalogItemForReceipt"
| "InvalidCurrencyCode"
| "NoRealMoneyPriceForCatalogItem"
| "TradeInventoryItemIsNotTradable"
| "TradeAcceptedCatalogItemIsNotTradable"
| "UsersAlreadyFriends"
| "LinkedIdentifierAlreadyClaimed"
| "CustomIdNotLinked"
| "TotalDataSizeExceeded"
| "DeleteKeyConflict"
| "InvalidXboxLiveToken"
| "ExpiredXboxLiveToken"
| "ResettableStatisticVersionRequired"
| "NotAuthorizedByTitle"
| "NoPartnerEnabled"
| "InvalidPartnerResponse"
| "APINotEnabledForGameServerAccess"
| "StatisticNotFound"
| "StatisticNameConflict"
| "StatisticVersionClosedForWrites"
| "StatisticVersionInvalid"
| "APIClientRequestRateLimitExceeded"
| "InvalidJSONContent"
| "InvalidDropTable"
| "StatisticVersionAlreadyIncrementedForScheduledInterval"
| "StatisticCountLimitExceeded"
| "StatisticVersionIncrementRateExceeded"
| "ContainerKeyInvalid"
| "CloudScriptExecutionTimeLimitExceeded"
| "NoWritePermissionsForEvent"
| "CloudScriptFunctionArgumentSizeExceeded"
| "CloudScriptAPIRequestCountExceeded"
| "CloudScriptAPIRequestError"
| "CloudScriptHTTPRequestError"
| "InsufficientGuildRole"
| "GuildNotFound"
| "OverLimit"
| "EventNotFound"
| "InvalidEventField"
| "InvalidEventName"
| "CatalogNotConfigured"
| "OperationNotSupportedForPlatform"
| "SegmentNotFound"
| "StoreNotFound"
| "InvalidStatisticName"
| "TitleNotQualifiedForLimit"
| "InvalidServiceLimitLevel"
| "ServiceLimitLevelInTransition"
| "CouponAlreadyRedeemed"
| "GameServerBuildSizeLimitExceeded"
| "GameServerBuildCountLimitExceeded"
| "VirtualCurrencyCountLimitExceeded"
| "VirtualCurrencyCodeExists"
| "TitleNewsItemCountLimitExceeded"
| "InvalidTwitchToken"
| "TwitchResponseError"
| "ProfaneDisplayName"
| "UserAlreadyAdded"
| "InvalidVirtualCurrencyCode"
| "VirtualCurrencyCannotBeDeleted"
| "IdentifierAlreadyClaimed"
| "IdentifierNotLinked"
| "InvalidContinuationToken"
| "ExpiredContinuationToken"
| "InvalidSegment"
| "InvalidSessionId"
| "SessionLogNotFound"
| "InvalidSearchTerm"
| "TwoFactorAuthenticationTokenRequired"
| "GameServerHostCountLimitExceeded"
| "PlayerTagCountLimitExceeded"
| "RequestAlreadyRunning"
| "ActionGroupNotFound"
| "MaximumSegmentBulkActionJobsRunning"
| "NoActionsOnPlayersInSegmentJob"
| "DuplicateStatisticName"
| "ScheduledTaskNameConflict"
| "ScheduledTaskCreateConflict"
| "InvalidScheduledTaskName"
| "InvalidTaskSchedule"
| "SteamNotEnabledForTitle"
| "LimitNotAnUpgradeOption"
| "NoSecretKeyEnabledForCloudScript"
| "TaskNotFound"
| "TaskInstanceNotFound"
| "InvalidIdentityProviderId"
| "MisconfiguredIdentityProvider"
| "InvalidScheduledTaskType"
| "BillingInformationRequired"
| "LimitedEditionItemUnavailable"
| "InvalidAdPlacementAndReward"
| "AllAdPlacementViewsAlreadyConsumed"
| "GoogleOAuthNotConfiguredForTitle"
| "GoogleOAuthError"
| "UserNotFriend"
| "InvalidSignature"
| "InvalidPublicKey"
| "GoogleOAuthNoIdTokenIncludedInResponse"
| "StatisticUpdateInProgress"
| "LeaderboardVersionNotAvailable"
| "StatisticAlreadyHasPrizeTable"
| "PrizeTableHasOverlappingRanks"
| "PrizeTableHasMissingRanks"
| "PrizeTableRankStartsAtZero"
| "InvalidStatistic"
| "ExpressionParseFailure"
| "ExpressionInvokeFailure"
| "ExpressionTooLong"
| "DataUpdateRateExceeded"
| "RestrictedEmailDomain"
| "EncryptionKeyDisabled"
| "EncryptionKeyMissing"
| "EncryptionKeyBroken"
| "NoSharedSecretKeyConfigured"
| "SecretKeyNotFound"
| "PlayerSecretAlreadyConfigured"
| "APIRequestsDisabledForTitle"
| "InvalidSharedSecretKey"
| "PrizeTableHasNoRanks"
| "ProfileDoesNotExist"
| "ContentS3OriginBucketNotConfigured"
| "InvalidEnvironmentForReceipt"
| "EncryptedRequestNotAllowed"
| "SignedRequestNotAllowed"
| "RequestViewConstraintParamsNotAllowed"
| "BadPartnerConfiguration"
| "XboxBPCertificateFailure"
| "XboxXASSExchangeFailure"
| "InvalidEntityId"
| "StatisticValueAggregationOverflow"
| "EmailMessageFromAddressIsMissing"
| "EmailMessageToAddressIsMissing"
| "SmtpServerAuthenticationError"
| "SmtpServerLimitExceeded"
| "SmtpServerInsufficientStorage"
| "SmtpServerCommunicationError"
| "SmtpServerGeneralFailure"
| "EmailClientTimeout"
| "EmailClientCanceledTask"
| "EmailTemplateMissing"
| "InvalidHostForTitleId"
| "EmailConfirmationTokenDoesNotExist"
| "EmailConfirmationTokenExpired"
| "AccountDeleted"
| "PlayerSecretNotConfigured"
| "InvalidSignatureTime"
| "NoContactEmailAddressFound"
| "InvalidAuthToken"
| "AuthTokenDoesNotExist"
| "AuthTokenExpired"
| "AuthTokenAlreadyUsedToResetPassword"
| "MembershipNameTooLong"
| "MembershipNotFound"
| "GoogleServiceAccountInvalid"
| "GoogleServiceAccountParseFailure"
| "EntityTokenMissing"
| "EntityTokenInvalid"
| "EntityTokenExpired"
| "EntityTokenRevoked"
| "InvalidProductForSubscription"
| "XboxInaccessible"
| "SubscriptionAlreadyTaken"
| "SmtpAddonNotEnabled"
| "APIConcurrentRequestLimitExceeded"
| "XboxRejectedXSTSExchangeRequest"
| "VariableNotDefined"
| "TemplateVersionNotDefined"
| "FileTooLarge"
| "TitleDeleted"
| "TitleContainsUserAccounts"
| "TitleDeletionPlayerCleanupFailure"
| "EntityFileOperationPending"
| "NoEntityFileOperationPending"
| "EntityProfileVersionMismatch"
| "TemplateVersionTooOld"
| "MembershipDefinitionInUse"
| "PaymentPageNotConfigured"
| "FailedLoginAttemptRateLimitExceeded"
| "EntityBlockedByGroup"
| "RoleDoesNotExist"
| "EntityIsAlreadyMember"
| "DuplicateRoleId"
| "GroupInvitationNotFound"
| "GroupApplicationNotFound"
| "OutstandingInvitationAcceptedInstead"
| "OutstandingApplicationAcceptedInstead"
| "RoleIsGroupDefaultMember"
| "RoleIsGroupAdmin"
| "RoleNameNotAvailable"
| "GroupNameNotAvailable"
| "EmailReportAlreadySent"
| "EmailReportRecipientBlacklisted"
| "EventNamespaceNotAllowed"
| "EventEntityNotAllowed"
| "InvalidEntityType"
| "NullTokenResultFromAad"
| "InvalidTokenResultFromAad"
| "NoValidCertificateForAad"
| "InvalidCertificateForAad"
| "DuplicateDropTableId"
| "MultiplayerServerError"
| "MultiplayerServerTooManyRequests"
| "MultiplayerServerNoContent"
| "MultiplayerServerBadRequest"
| "MultiplayerServerUnauthorized"
| "MultiplayerServerForbidden"
| "MultiplayerServerNotFound"
| "MultiplayerServerConflict"
| "MultiplayerServerInternalServerError"
| "MultiplayerServerUnavailable"
| "ExplicitContentDetected"
| "PIIContentDetected"
| "InvalidScheduledTaskParameter"
| "PerEntityEventRateLimitExceeded"
| "TitleDefaultLanguageNotSet"
| "EmailTemplateMissingDefaultVersion"
| "FacebookInstantGamesIdNotLinked"
| "InvalidFacebookInstantGamesSignature"
| "FacebookInstantGamesAuthNotConfiguredForTitle"
| "EntityProfileConstraintValidationFailed"
| "TelemetryIngestionKeyPending"
| "TelemetryIngestionKeyNotFound"
| "StatisticChildNameInvalid"
| "DataIntegrityError"
| "VirtualCurrencyCannotBeSetToOlderVersion"
| "VirtualCurrencyMustBeWithinIntegerRange"
| "EmailTemplateInvalidSyntax"
| "EmailTemplateMissingCallback"
| "PushNotificationTemplateInvalidPayload"
| "InvalidLocalizedPushNotificationLanguage"
| "MissingLocalizedPushNotificationMessage"
| "PushNotificationTemplateMissingPlatformPayload"
| "PushNotificationTemplatePayloadContainsInvalidJson"
| "PushNotificationTemplateContainsInvalidIosPayload"
| "PushNotificationTemplateContainsInvalidAndroidPayload"
| "PushNotificationTemplateIosPayloadMissingNotificationBody"
| "PushNotificationTemplateAndroidPayloadMissingNotificationBody"
| "PushNotificationTemplateNotFound"
| "PushNotificationTemplateMissingDefaultVersion"
| "PushNotificationTemplateInvalidSyntax"
| "PushNotificationTemplateNoCustomPayloadForV1"
| "NoLeaderboardForStatistic"
| "TitleNewsMissingDefaultLanguage"
| "TitleNewsNotFound"
| "TitleNewsDuplicateLanguage"
| "TitleNewsMissingTitleOrBody"
| "TitleNewsInvalidLanguage"
| "EmailRecipientBlacklisted"
| "InvalidGameCenterAuthRequest"
| "GameCenterAuthenticationFailed"
| "CannotEnablePartiesForTitle"
| "PartyError"
| "PartyRequests"
| "PartyNoContent"
| "PartyBadRequest"
| "PartyUnauthorized"
| "PartyForbidden"
| "PartyNotFound"
| "PartyConflict"
| "PartyInternalServerError"
| "PartyUnavailable"
| "PartyTooManyRequests"
| "PushNotificationTemplateMissingName"
| "CannotEnableMultiplayerServersForTitle"
| "WriteAttemptedDuringExport"
| "MultiplayerServerTitleQuotaCoresExceeded"
| "AutomationRuleNotFound"
| "EntityAPIKeyLimitExceeded"
| "EntityAPIKeyNotFound"
| "EntityAPIKeyOrSecretInvalid"
| "EconomyServiceUnavailable"
| "EconomyServiceInternalError"
| "QueryRateLimitExceeded"
| "EntityAPIKeyCreationDisabledForEntity"
| "ForbiddenByEntityPolicy"
| "UpdateInventoryRateLimitExceeded"
| "StudioCreationRateLimited"
| "StudioCreationInProgress"
| "DuplicateStudioName"
| "StudioNotFound"
| "StudioDeleted"
| "StudioDeactivated"
| "StudioActivated"
| "TitleCreationRateLimited"
| "TitleCreationInProgress"
| "DuplicateTitleName"
| "TitleActivationRateLimited"
| "TitleActivationInProgress"
| "TitleDeactivated"
| "TitleActivated"
| "CloudScriptAzureFunctionsExecutionTimeLimitExceeded"
| "CloudScriptAzureFunctionsArgumentSizeExceeded"
| "CloudScriptAzureFunctionsReturnSizeExceeded"
| "CloudScriptAzureFunctionsHTTPRequestError"
| "VirtualCurrencyBetaGetError"
| "VirtualCurrencyBetaCreateError"
| "VirtualCurrencyBetaInitialDepositSaveError"
| "VirtualCurrencyBetaSaveError"
| "VirtualCurrencyBetaDeleteError"
| "VirtualCurrencyBetaRestoreError"
| "VirtualCurrencyBetaSaveConflict"
| "VirtualCurrencyBetaUpdateError"
| "InsightsManagementDatabaseNotFound"
| "InsightsManagementOperationNotFound"
| "InsightsManagementErrorPendingOperationExists"
| "InsightsManagementSetPerformanceLevelInvalidParameter"
| "InsightsManagementSetStorageRetentionInvalidParameter"
| "InsightsManagementGetStorageUsageInvalidParameter"
| "InsightsManagementGetOperationStatusInvalidParameter"
| "DuplicatePurchaseTransactionId"
| "EvaluationModePlayerCountExceeded"
| "GetPlayersInSegmentRateLimitExceeded"
| "CloudScriptFunctionNameSizeExceeded"
| "PaidInsightsFeaturesNotEnabled"
| "CloudScriptAzureFunctionsQueueRequestError"
| "EvaluationModeTitleCountExceeded"
| "InsightsManagementTitleNotInFlight"
| "LimitNotFound"
| "LimitNotAvailableViaAPI"
| "InsightsManagementSetStorageRetentionBelowMinimum"
| "InsightsManagementSetStorageRetentionAboveMaximum"
| "AppleNotEnabledForTitle"
| "InsightsManagementNewActiveEventExportLimitInvalid"
| "InsightsManagementSetPerformanceRateLimited"
| "PartyRequestsThrottledFromRateLimiter"
| "XboxServiceTooManyRequests"
| "NintendoSwitchNotEnabledForTitle"
| "RequestMultiplayerServersThrottledFromRateLimiter"
| "TitleDataOverrideNotFound"
| "DuplicateKeys"
| "WasNotCreatedWithCloudRoot"
| "LegacyMultiplayerServersDeprecated"
| "VirtualCurrencyCurrentlyUnavailable"
| "SteamUserNotFound"
| "ElasticSearchOperationFailed"
| "NotImplemented"
| "PublisherNotFound"
| "PublisherDeleted"
| "ApiDisabledForMigration"
| "ResourceNameUpdateNotAllowed"
| "ApiNotEnabledForTitle"
| "DuplicateTitleNameForPublisher"
| "AzureTitleCreationInProgress"
| "TitleConstraintsPublisherDeletion"
| "InvalidPlayerAccountPoolId"
| "PlayerAccountPoolNotFound"
| "PlayerAccountPoolDeleted"
| "TitleCleanupInProgress"
| "AzureResourceConcurrentOperationInProgress"
| "TitlePublisherUpdateNotAllowed"
| "AzureResourceManagerNotSupportedInStamp"
| "ApiNotIncludedInAzurePlayFabFeatureSet"
| "GoogleServiceAccountFailedAuth"
| "GoogleAPIServiceUnavailable"
| "GoogleAPIServiceUnknownError"
| "NoValidIdentityForAad"
| "PlayerIdentityLinkNotFound"
| "MatchmakingEntityInvalid"
| "MatchmakingPlayerAttributesInvalid"
| "MatchmakingQueueNotFound"
| "MatchmakingMatchNotFound"
| "MatchmakingTicketNotFound"
| "MatchmakingAlreadyJoinedTicket"
| "MatchmakingTicketAlreadyCompleted"
| "MatchmakingQueueConfigInvalid"
| "MatchmakingMemberProfileInvalid"
| "NintendoSwitchDeviceIdNotLinked"
| "MatchmakingNotEnabled"
| "MatchmakingPlayerAttributesTooLarge"
| "MatchmakingNumberOfPlayersInTicketTooLarge"
| "MatchmakingAttributeInvalid"
| "MatchmakingPlayerHasNotJoinedTicket"
| "MatchmakingRateLimitExceeded"
| "MatchmakingTicketMembershipLimitExceeded"
| "MatchmakingUnauthorized"
| "MatchmakingQueueLimitExceeded"
| "MatchmakingRequestTypeMismatch"
| "MatchmakingBadRequest"
| "PubSubFeatureNotEnabledForTitle"
| "PubSubTooManyRequests"
| "PubSubConnectionNotFoundForEntity"
| "PubSubConnectionHandleInvalid"
| "PubSubSubscriptionLimitExceeded"
| "TitleConfigNotFound"
| "TitleConfigUpdateConflict"
| "TitleConfigSerializationError"
| "CatalogApiNotImplemented"
| "CatalogEntityInvalid"
| "CatalogTitleIdMissing"
| "CatalogPlayerIdMissing"
| "CatalogClientIdentityInvalid"
| "CatalogOneOrMoreFilesInvalid"
| "CatalogItemMetadataInvalid"
| "CatalogItemIdInvalid"
| "CatalogSearchParameterInvalid"
| "CatalogFeatureDisabled"
| "CatalogConfigInvalid"
| "CatalogItemTypeInvalid"
| "CatalogBadRequest"
| "CatalogTooManyRequests"
| "ExportInvalidStatusUpdate"
| "ExportInvalidPrefix"
| "ExportBlobContainerDoesNotExist"
| "ExportNotFound"
| "ExportCouldNotUpdate"
| "ExportInvalidStorageType"
| "ExportAmazonBucketDoesNotExist"
| "ExportInvalidBlobStorage"
| "ExportKustoException"
| "ExportKustoConnectionFailed"
| "ExportUnknownError"
| "ExportCantEditPendingExport"
| "ExportLimitExports"
| "ExportLimitEvents"
| "ExportInvalidPartitionStatusModification"
| "ExportCouldNotCreate"
| "ExportNoBackingDatabaseFound"
| "ExportCouldNotDelete"
| "ExportCannotDetermineEventQuery"
| "ExportInvalidQuerySchemaModification"
| "ExportQuerySchemaMissingRequiredColumns"
| "ExportCannotParseQuery"
| "ExportControlCommandsNotAllowed"
| "ExportQueryMissingTableReference"
| "ExplorerBasicInvalidQueryName"
| "ExplorerBasicInvalidQueryDescription"
| "ExplorerBasicInvalidQueryConditions"
| "ExplorerBasicInvalidQueryStartDate"
| "ExplorerBasicInvalidQueryEndDate"
| "ExplorerBasicInvalidQueryGroupBy"
| "ExplorerBasicInvalidQueryAggregateType"
| "ExplorerBasicInvalidQueryAggregateProperty"
| "ExplorerBasicLoadQueriesError"
| "ExplorerBasicLoadQueryError"
| "ExplorerBasicCreateQueryError"
| "ExplorerBasicDeleteQueryError"
| "ExplorerBasicUpdateQueryError"
| "ExplorerBasicSavedQueriesLimit"
| "ExplorerBasicSavedQueryNotFound"
| "TenantShardMapperShardNotFound"
| "TitleNotEnabledForParty"
| "PartyVersionNotFound"
| "MultiplayerServerBuildReferencedByMatchmakingQueue"
| "MultiplayerServerBuildReferencedByBuildAlias"
| "ExperimentationExperimentStopped"
| "ExperimentationExperimentRunning"
| "ExperimentationExperimentNotFound"
| "ExperimentationExperimentNeverStarted"
| "ExperimentationExperimentDeleted"
| "ExperimentationClientTimeout"
| "ExperimentationInvalidVariantConfiguration"
| "ExperimentationInvalidVariableConfiguration"
| "ExperimentInvalidId"
| "ExperimentationNoScorecard"
| "ExperimentationTreatmentAssignmentFailed"
| "ExperimentationTreatmentAssignmentDisabled"
| "ExperimentationInvalidDuration"
| "ExperimentationMaxExperimentsReached"
| "ExperimentationExperimentSchedulingInProgress"
| "ExperimentationInvalidEndDate"
| "ExperimentationInvalidStartDate"
| "ExperimentationMaxDurationExceeded"
| "ExperimentationExclusionGroupNotFound"
| "ExperimentationExclusionGroupInsufficientCapacity"
| "ExperimentationExclusionGroupCannotDelete"
| "ExperimentationExclusionGroupInvalidTrafficAllocation"
| "ExperimentationExclusionGroupInvalidName"
| "MaxActionDepthExceeded"
| "TitleNotOnUpdatedPricingPlan"
| "SegmentManagementTitleNotInFlight"
| "SegmentManagementNoExpressionTree"
| "SegmentManagementTriggerActionCountOverLimit"
| "SegmentManagementSegmentCountOverLimit"
| "SegmentManagementInvalidSegmentId"
| "SegmentManagementInvalidInput"
| "SegmentManagementInvalidSegmentName"
| "DeleteSegmentRateLimitExceeded"
| "CreateSegmentRateLimitExceeded"
| "UpdateSegmentRateLimitExceeded"
| "GetSegmentsRateLimitExceeded"
| "AsyncExportNotInFlight"
| "AsyncExportNotFound"
| "AsyncExportRateLimitExceeded"
| "SnapshotNotFound"
| "InventoryApiNotImplemented"
| "LobbyDoesNotExist"
| "LobbyRateLimitExceeded"
| "LobbyPlayerAlreadyJoined"
| "LobbyNotJoinable"
| "LobbyMemberCannotRejoin"
| "LobbyCurrentPlayersMoreThanMaxPlayers"
| "LobbyPlayerNotPresent"
| "LobbyBadRequest"
| "LobbyPlayerMaxLobbyLimitExceeded"
| "LobbyNewOwnerMustBeConnected"
| "LobbyCurrentOwnerStillConnected"
| "LobbyMemberIsNotOwner"
| "EventSamplingInvalidRatio"
| "EventSamplingInvalidEventNamespace"
| "EventSamplingInvalidEventName"
| "EventSamplingRatioNotFound"
| "EventSinkConnectionInvalid"
| "EventSinkConnectionUnauthorized"
| "EventSinkRegionInvalid"
| "OperationCanceled"
| "InvalidDisplayNameRandomSuffixLength"
| "AllowNonUniquePlayerDisplayNamesDisableNotAllowed";
interface GenericPlayFabIdPair {
/** Unique generic service identifier for a user. */
GenericId?: GenericServiceId;
/** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the given generic identifier. */
PlayFabId?: string;
}
interface GenericServiceId {
/** Name of the service for which the player has a unique identifier. */
ServiceName: string;
/** Unique identifier of the player in that service. */
UserId: string;
}
/** Request has no paramaters. */
interface GetAllSegmentsRequest {}
interface GetAllSegmentsResult {
/** Array of segments for this title. */
Segments?: GetSegmentResult[];
}
interface GetCatalogItemsRequest {
/** Which catalog is being requested. If null, uses the default catalog. */
CatalogVersion?: string;
}
interface GetCatalogItemsResult {
/** Array of items which can be purchased. */
Catalog?: CatalogItem[];
}
/**
* 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 user data will be returned.
*/
interface GetCharacterDataRequest {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/**
* 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.
*/
IfChangedFromDataVersion?: number;
/** Specific keys to search for in the custom user data. */
Keys?: string[];
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface GetCharacterDataResult {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId?: string;
/** User specific data for this title. */
Data?: { [key: string]: UserDataRecord };
/**
* 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.
*/
DataVersion: number;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId?: string;
}
/**
* 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.
*/
interface GetCharacterInventoryRequest {
/** Used to limit results to only those from a specific catalog version. */
CatalogVersion?: string;
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface GetCharacterInventoryResult {
/** Unique identifier of the character for this inventory. */
CharacterId?: string;
/** Array of inventory items belonging to the character. */
Inventory?: ItemInstance[];
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId?: string;
/** Array of virtual currency balance(s) belonging to the character. */
VirtualCurrency?: { [key: string]: number };
/** Array of remaining times and timestamps for virtual currencies. */
VirtualCurrencyRechargeTimes?: {
[key: string]: VirtualCurrencyRechargeTime;
};
}
interface GetCharacterLeaderboardRequest {
/** Optional character type on which to filter the leaderboard entries. */
CharacterType?: string;
/** Maximum number of entries to retrieve. */
MaxResultsCount: number;
/** First entry in the leaderboard to be retrieved. */
StartPosition: number;
/** Unique identifier for the title-specific statistic for the leaderboard. */
StatisticName: string;
}
/** Note that the Position of the character in the results is for the overall leaderboard. */
interface GetCharacterLeaderboardResult {
/** Ordered list of leaderboard entries. */
Leaderboard?: CharacterLeaderboardEntry[];
}
/**
* Character statistics are similar to user statistics in that they are numeric values which may only be updated by a
* server operation, in order to minimize the opportunity for unauthorized changes. In addition to being available for use
* by the title, the statistics are used for all leaderboard operations in PlayFab.
*/
interface GetCharacterStatisticsRequest {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface GetCharacterStatisticsResult {
/** Unique identifier of the character for the statistics. */
CharacterId?: string;
/** Character statistics for the requested user. */
CharacterStatistics?: { [key: string]: number };
/** PlayFab unique identifier of the user whose character statistics are being returned. */
PlayFabId?: string;
}
interface GetContentDownloadUrlRequest {
/** HTTP method to fetch item - GET or HEAD. Use HEAD when only fetching metadata. Default is GET. */
HttpMethod?: string;
/** Key of the content item to fetch, usually formatted as a path, e.g. images/a.png */
Key: string;
/**
* 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.
*/
ThruCDN?: boolean;
}
interface GetContentDownloadUrlResult {
/** URL for downloading content via HTTP GET or HEAD method. The URL will expire in approximately one hour. */
URL?: string;
}
interface GetFriendLeaderboardRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Indicates whether Facebook friends should be included in the response. Default is true. */
IncludeFacebookFriends?: boolean;
/** Indicates whether Steam service friends should be included in the response. Default is true. */
IncludeSteamFriends?: boolean;
/** Maximum number of entries to retrieve. */
MaxResultsCount: number;
/** The player whose friend leaderboard to get */
PlayFabId: string;
/**
* 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.
*/
ProfileConstraints?: PlayerProfileViewConstraints;
/** Position in the leaderboard to start this listing (defaults to the first entry). */
StartPosition: number;
/** Statistic used to rank friends for this leaderboard. */
StatisticName: string;
/** The version of the leaderboard to get. */
Version?: number;
/** Xbox token if Xbox friends should be included. Requires Xbox be configured on PlayFab. */
XboxToken?: string;
}
interface GetFriendsListRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Indicates whether Facebook friends should be included in the response. Default is true. */
IncludeFacebookFriends?: boolean;
/** Indicates whether Steam service friends should be included in the response. Default is true. */
IncludeSteamFriends?: boolean;
/** PlayFab identifier of the player whose friend list to get. */
PlayFabId: string;
/**
* 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.
*/
ProfileConstraints?: PlayerProfileViewConstraints;
/** Xbox token if Xbox friends should be included. Requires Xbox be configured on PlayFab. */
XboxToken?: string;
}
/**
* If any additional services are queried for the user's friends, those friends who also have a PlayFab account registered
* for the title will be returned in the results. For Facebook, user has to have logged into the title's Facebook app
* recently, and only friends who also plays this game will be included. For Xbox Live, user has to have logged into the
* Xbox Live recently, and only friends who also play this game will be included.
*/
interface GetFriendsListResult {
/** Array of friends found. */
Friends?: FriendInfo[];
}
interface GetLeaderboardAroundCharacterRequest {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** Optional character type on which to filter the leaderboard entries. */
CharacterType?: string;
/** Maximum number of entries to retrieve. */
MaxResultsCount: number;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** Unique identifier for the title-specific statistic for the leaderboard. */
StatisticName: string;
}
/**
* Note: When calling 'GetLeaderboardAround...' APIs, the position of the character defaults to 0 when the character does
* not have the corresponding statistic.
*/
interface GetLeaderboardAroundCharacterResult {
/** Ordered list of leaderboard entries. */
Leaderboard?: CharacterLeaderboardEntry[];
}
interface GetLeaderboardAroundUserRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Maximum number of entries to retrieve. */
MaxResultsCount: number;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/**
* 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.
*/
ProfileConstraints?: PlayerProfileViewConstraints;
/** Unique identifier for the title-specific statistic for the leaderboard. */
StatisticName: string;
/** The version of the leaderboard to get. */
Version?: number;
}
/**
* Note: When calling 'GetLeaderboardAround...' APIs, the position of the user defaults to 0 when the user does not have
* the corresponding statistic.
*/
interface GetLeaderboardAroundUserResult {
/** Ordered listing of users and their positions in the requested leaderboard. */
Leaderboard?: PlayerLeaderboardEntry[];
/** The time the next scheduled reset will occur. Null if the leaderboard does not reset on a schedule. */
NextReset?: string;
/** The version of the leaderboard returned. */
Version: number;
}
interface GetLeaderboardForUsersCharactersRequest {
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** Unique identifier for the title-specific statistic for the leaderboard. */
StatisticName: string;
}
/**
* 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.
*/
interface GetLeaderboardForUsersCharactersResult {
/** Ordered list of leaderboard entries. */
Leaderboard?: CharacterLeaderboardEntry[];
}
interface GetLeaderboardRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Maximum number of entries to retrieve. */
MaxResultsCount: number;
/**
* 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.
*/
ProfileConstraints?: PlayerProfileViewConstraints;
/** First entry in the leaderboard to be retrieved. */
StartPosition: number;
/** Unique identifier for the title-specific statistic for the leaderboard. */
StatisticName: string;
/** The version of the leaderboard to get. */
Version?: number;
}
/** Note that the Position of the user in the results is for the overall leaderboard. */
interface GetLeaderboardResult {
/** Ordered listing of users and their positions in the requested leaderboard. */
Leaderboard?: PlayerLeaderboardEntry[];
/** The time the next scheduled reset will occur. Null if the leaderboard does not reset on a schedule. */
NextReset?: string;
/** The version of the leaderboard returned. */
Version: number;
}
interface GetPlayerCombinedInfoRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Flags for which pieces of info to return for the user. */
InfoRequestParameters: GetPlayerCombinedInfoRequestParams;
/** PlayFabId of the user whose data will be returned */
PlayFabId: string;
}
interface GetPlayerCombinedInfoRequestParams {
/** Whether to get character inventories. Defaults to false. */
GetCharacterInventories: boolean;
/** Whether to get the list of characters. Defaults to false. */
GetCharacterList: boolean;
/** Whether to get player profile. Defaults to false. Has no effect for a new player. */
GetPlayerProfile: boolean;
/** Whether to get player statistics. Defaults to false. */
GetPlayerStatistics: boolean;
/** Whether to get title data. Defaults to false. */
GetTitleData: boolean;
/** Whether to get the player's account Info. Defaults to false */
GetUserAccountInfo: boolean;
/** Whether to get the player's custom data. Defaults to false */
GetUserData: boolean;
/** Whether to get the player's inventory. Defaults to false */
GetUserInventory: boolean;
/** Whether to get the player's read only data. Defaults to false */
GetUserReadOnlyData: boolean;
/** Whether to get the player's virtual currency balances. Defaults to false */
GetUserVirtualCurrency: boolean;
/** Specific statistics to retrieve. Leave null to get all keys. Has no effect if GetPlayerStatistics is false */
PlayerStatisticNames?: string[];
/** Specifies the properties to return from the player profile. Defaults to returning the player's display name. */
ProfileConstraints?: PlayerProfileViewConstraints;
/** Specific keys to search for in the custom data. Leave null to get all keys. Has no effect if GetTitleData is false */
TitleDataKeys?: string[];
/** Specific keys to search for in the custom data. Leave null to get all keys. Has no effect if GetUserData is false */
UserDataKeys?: string[];
/**
* Specific keys to search for in the custom data. Leave null to get all keys. Has no effect if GetUserReadOnlyData is
* false
*/
UserReadOnlyDataKeys?: string[];
}
interface GetPlayerCombinedInfoResult {
/** Results for requested info. */
InfoResultPayload?: GetPlayerCombinedInfoResultPayload;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId?: string;
}
interface GetPlayerCombinedInfoResultPayload {
/** Account information for the user. This is always retrieved. */
AccountInfo?: UserAccountInfo;
/** Inventories for each character for the user. */
CharacterInventories?: CharacterInventory[];
/** List of characters for the user. */
CharacterList?: CharacterResult[];
/**
* The profile of the players. This profile is not guaranteed to be up-to-date. For a new player, this profile will not
* exist.
*/
PlayerProfile?: PlayerProfileModel;
/** List of statistics for this player. */
PlayerStatistics?: StatisticValue[];
/** Title data for this title. */
TitleData?: { [key: string]: string | null };
/** User specific custom data. */
UserData?: { [key: string]: UserDataRecord };
/** The version of the UserData that was returned. */
UserDataVersion: number;
/** Array of inventory items in the user's current inventory. */
UserInventory?: ItemInstance[];
/** User specific read-only data. */
UserReadOnlyData?: { [key: string]: UserDataRecord };
/** The version of the Read-Only UserData that was returned. */
UserReadOnlyDataVersion: number;
/** Dictionary of virtual currency balance(s) belonging to the user. */
UserVirtualCurrency?: { [key: string]: number };
/** Dictionary of remaining times and timestamps for virtual currencies. */
UserVirtualCurrencyRechargeTimes?: {
[key: string]: VirtualCurrencyRechargeTime;
};
}
/**
* 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.
*/
interface GetPlayerProfileRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/**
* 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.
*/
ProfileConstraints?: Partial<PlayerProfileViewConstraints>;
}
interface GetPlayerProfileResult {
/**
* The profile of the player. This profile is not guaranteed to be up-to-date. For a new player, this profile will not
* exist.
*/
PlayerProfile?: PlayerProfileModel;
}
interface GetPlayerSegmentsResult {
/** Array of segments the requested player currently belongs to. */
Segments?: GetSegmentResult[];
}
/**
* Initial request must contain at least a Segment ID. Subsequent requests must contain the Segment ID as well as the
* Continuation Token. Failure to send the Continuation Token will result in a new player segment list being generated.
* Each time the Continuation Token is passed in the length of the Total Seconds to Live is refreshed. If too much time
* passes between requests to the point that a subsequent request is past the Total Seconds to Live an error will be
* returned and paging will be terminated. This API is resource intensive and should not be used in scenarios which might
* generate high request volumes. Only one request to this API at a time should be made per title. Concurrent requests to
* the API may be rejected with the APIConcurrentRequestLimitExceeded error.
*/
interface GetPlayersInSegmentRequest {
/** Continuation token if retrieving subsequent pages of results. */
ContinuationToken?: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Maximum number of profiles to load. Default is 1,000. Maximum is 10,000. */
MaxBatchSize?: number;
/**
* Number of seconds to keep the continuation token active. After token expiration it is not possible to continue paging
* results. Default is 300 (5 minutes). Maximum is 1,800 (30 minutes).
*/
SecondsToLive?: number;
/** Unique identifier for this segment. */
SegmentId: string;
}
interface GetPlayersInSegmentResult {
/** Continuation token to use to retrieve subsequent pages of results. If token returns null there are no more results. */
ContinuationToken?: string;
/** Array of player profiles in this segment. */
PlayerProfiles?: PlayerProfile[];
/** Count of profiles matching this segment. */
ProfilesInSegment: number;
}
interface GetPlayersSegmentsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface UpdateUserStatisticsRequest {
PlayFabId: string;
UserStatistics: UserStatistics;
}
interface GetUserStatisticsRequest {
PlayFabId: string;
StatisticNames?: string[];
}
interface GetUserStatisticsResult {
UserStatistics: UserStatistics;
}
interface UpdatePlayerStatisticsRequest {
PlayFabId: string;
UserStatistics: StatisticUpdate[];
}
interface UpdatePlayerStatisticsResult {}
interface GetPlayerStatisticsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** user for whom statistics are being requested */
PlayFabId: string;
/** statistics to return */
StatisticNames?: string[];
/**
* statistics to return, if StatisticNames is not set (only statistics which have a version matching that provided will be
* returned)
*/
StatisticNameVersions?: StatisticNameVersion[];
}
/** In addition to being available for use by the title, the statistics are used for all leaderboard operations in PlayFab. */
interface GetPlayerStatisticsResult {
/** PlayFab unique identifier of the user whose statistics are being returned */
PlayFabId?: string;
/** User statistics for the requested user. */
Statistics?: StatisticValue[];
}
interface GetPlayerStatisticVersionsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** unique name of the statistic */
StatisticName?: string;
}
interface GetPlayerStatisticVersionsResult {
/** version change history of the statistic */
StatisticVersions?: PlayerStatisticVersion[];
}
/**
* 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.
*/
interface GetPlayerTagsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Optional namespace to filter results by */
Namespace?: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface GetPlayerTagsResult {
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** Canonical tags (including namespace and tag's name) for the requested user */
Tags: string[];
}
interface GetPlayFabIDsFromFacebookIDsRequest {
/** Array of unique Facebook identifiers for which the title needs to get PlayFab identifiers. */
FacebookIDs: string[];
}
/** For Facebook identifiers which have not been linked to PlayFab accounts, null will be returned. */
interface GetPlayFabIDsFromFacebookIDsResult {
/** Mapping of Facebook identifiers to PlayFab identifiers. */
Data?: FacebookPlayFabIdPair[];
}
interface GetPlayFabIDsFromFacebookInstantGamesIdsRequest {
/** Array of unique Facebook Instant Games identifiers for which the title needs to get PlayFab identifiers. */
FacebookInstantGamesIds: string[];
}
/** For Facebook Instant Games identifiers which have not been linked to PlayFab accounts, null will be returned. */
interface GetPlayFabIDsFromFacebookInstantGamesIdsResult {
/** Mapping of Facebook Instant Games identifiers to PlayFab identifiers. */
Data?: FacebookInstantGamesPlayFabIdPair[];
}
interface GetPlayFabIDsFromGenericIDsRequest {
/**
* Array of unique generic service identifiers for which the title needs to get PlayFab identifiers. Currently limited to a
* maximum of 10 in a single request.
*/
GenericIDs: GenericServiceId[];
}
/** For generic service identifiers which have not been linked to PlayFab accounts, null will be returned. */
interface GetPlayFabIDsFromGenericIDsResult {
/** Mapping of generic service identifiers to PlayFab identifiers. */
Data?: GenericPlayFabIdPair[];
}
interface GetPlayFabIDsFromNintendoSwitchDeviceIdsRequest {
/** Array of unique Nintendo Switch Device identifiers for which the title needs to get PlayFab identifiers. */
NintendoSwitchDeviceIds: string[];
}
/** For Nintendo Switch Device identifiers which have not been linked to PlayFab accounts, null will be returned. */
interface GetPlayFabIDsFromNintendoSwitchDeviceIdsResult {
/** Mapping of Nintendo Switch Device identifiers to PlayFab identifiers. */
Data?: NintendoSwitchPlayFabIdPair[];
}
interface GetPlayFabIDsFromPSNAccountIDsRequest {
/** Id of the PSN issuer environment. If null, defaults to production environment. */
IssuerId?: number;
/** Array of unique PlayStation Network identifiers for which the title needs to get PlayFab identifiers. */
PSNAccountIDs: string[];
}
/** For PlayStation Network identifiers which have not been linked to PlayFab accounts, null will be returned. */
interface GetPlayFabIDsFromPSNAccountIDsResult {
/** Mapping of PlayStation Network identifiers to PlayFab identifiers. */
Data?: PSNAccountPlayFabIdPair[];
}
interface GetPlayFabIDsFromSteamIDsRequest {
/** Array of unique Steam identifiers (Steam profile IDs) for which the title needs to get PlayFab identifiers. */
SteamStringIDs?: string[];
}
/** For Steam identifiers which have not been linked to PlayFab accounts, null will be returned. */
interface GetPlayFabIDsFromSteamIDsResult {
/** Mapping of Steam identifiers to PlayFab identifiers. */
Data?: SteamPlayFabIdPair[];
}
interface GetPlayFabIDsFromXboxLiveIDsRequest {
/** The ID of Xbox Live sandbox. */
Sandbox?: string;
/** Array of unique Xbox Live account identifiers for which the title needs to get PlayFab identifiers. */
XboxLiveAccountIDs: string[];
}
/** For XboxLive identifiers which have not been linked to PlayFab accounts, null will be returned. */
interface GetPlayFabIDsFromXboxLiveIDsResult {
/** Mapping of PlayStation Network identifiers to PlayFab identifiers. */
Data?: XboxLiveAccountPlayFabIdPair[];
}
/**
* 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.
*/
interface GetPublisherDataRequest {
/** array of keys to get back data from the Publisher data blob, set by the admin tools */
Keys: string[];
}
interface GetPublisherDataResult {
/** a dictionary object of key / value pairs */
Data?: { [key: string]: string | null };
}
interface GetRandomResultTablesRequest {
/**
* Specifies the catalog version that should be used to retrieve the Random Result Tables. If unspecified, uses
* default/primary catalog.
*/
CatalogVersion?: string;
/** The unique identifier of the Random Result Table to use. */
TableIDs: string[];
}
/**
* Note that if a specified Random Result Table contains no entries, or does not exist in the catalog, an InvalidDropTable
* error will be returned.
*/
interface GetRandomResultTablesResult {
/** array of random result tables currently available */
Tables?: { [key: string]: RandomResultTableListing };
}
interface GetSegmentResult {
/** Identifier of the segments AB Test, if it is attached to one. */
ABTestParent?: string;
/** Unique identifier for this segment. */
Id: string;
/** Segment name. */
Name?: string;
}
interface GetServerCustomIDsFromPlayFabIDsRequest {
/**
* Array of unique PlayFab player identifiers for which the title needs to get server custom identifiers. Cannot contain
* more than 25 identifiers.
*/
PlayFabIDs: string[];
}
/** For a PlayFab account that isn't associated with a server custom identity, ServerCustomId will be null. */
interface GetServerCustomIDsFromPlayFabIDsResult {
/** Mapping of server custom player identifiers to PlayFab identifiers. */
Data?: ServerCustomIDPlayFabIDPair[];
}
interface GetSharedGroupDataRequest {
/** If true, return the list of all members of the shared group. */
GetMembers?: boolean;
/**
* 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).
*/
Keys?: string[];
/** Unique identifier for the shared group. */
SharedGroupId: string;
}
interface GetSharedGroupDataResult {
/** Data for the requested keys. */
Data?: { [key: string]: SharedGroupDataRecord };
/** List of PlayFabId identifiers for the members of this group, if requested. */
Members?: string[];
}
interface GetStoreItemsResult {
/** The base catalog that this store is a part of. */
CatalogVersion?: string;
/** Additional data about the store. */
MarketingData?: StoreMarketingModel;
/** How the store was last updated (Admin or a third party). */
Source?: SourceType;
/** Array of items which can be purchased from this store. */
Store?: StoreItem[];
/** The ID of this store. */
StoreId?: string;
}
/**
* 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.
*/
interface GetStoreItemsServerRequest {
/** Catalog version to store items from. Use default catalog version if null */
CatalogVersion?: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* Optional identifier for the player to use in requesting the store information - if used, segment overrides will be
* applied
*/
PlayFabId?: string;
/** Unqiue identifier for the store which is being requested */
StoreId: string;
}
/**
* 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.
*/
interface GetTimeRequest {}
/** Time is always returned as Coordinated Universal Time (UTC). */
interface GetTimeResult {
/** Current server time when the request was received, in UTC */
Time: string;
}
/**
* 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 an override label is specified in the request, 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.
*/
interface GetTitleDataRequest {
/** Specific keys to search for in the title data (leave null to get all keys) */
Keys?: string[];
/**
* 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.
*/
OverrideLabel?: string;
}
interface GetTitleDataResult {
/** a dictionary object of key / value pairs */
Data?: { [key: string]: string | null };
}
interface GetTitleNewsRequest {
/** Limits the results to the last n entries. Defaults to 10 if not set. */
Count?: number;
}
interface GetTitleNewsResult {
/** Array of localized news items. */
News?: TitleNewsItem[];
}
/**
* 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.
*/
interface GetUserAccountInfoRequest {
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface GetUserAccountInfoResult {
/** Account details for the user whose information was requested. */
UserInfo?: UserAccountInfo;
}
/** Get all bans for a user, including inactive and expired bans. */
interface GetUserBansRequest {
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface GetUserBansResult {
/** Information about the bans */
BanData?: BanInfo[];
}
/**
* 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 user data will be returned.
*/
interface GetUserDataRequest {
/**
* The version that currently exists according to the caller. The call will return the data for all of the keys if the
* version in the system is greater than this.
*/
IfChangedFromDataVersion?: number;
/** Specific keys to search for in the custom user data. */
Keys?: string[];
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface GetUserDataResult {
/** User specific data for this title. */
Data?: { [key: string]: UserDataRecord };
/**
* 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.
*/
DataVersion: number;
/** PlayFab unique identifier of the user whose custom data is being returned. */
PlayFabId?: string;
}
/**
* 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.
*/
interface GetUserInventoryRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface GetUserInventoryResult {
/** Array of inventory items belonging to the user. */
Inventory?: ItemInstance[];
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId?: string;
/** Array of virtual currency balance(s) belonging to the user. */
VirtualCurrency?: { [key: string]: number };
/** Array of remaining times and timestamps for virtual currencies. */
VirtualCurrencyRechargeTimes?: {
[key: string]: VirtualCurrencyRechargeTime;
};
}
/** Grants a character to the user of the type and name specified in the request. */
interface GrantCharacterToUserRequest {
/** Non-unique display name of the character being granted (1-40 characters in length). */
CharacterName: string;
/** Type of the character being granted; statistics can be sliced based on this value. */
CharacterType: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface GrantCharacterToUserResult {
/** Unique identifier tagged to this character. */
CharacterId?: string;
}
/**
* Result of granting an item to a user. 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.
*/
interface GrantedItemInstance {
/** Game specific comment associated with this instance when it was added to the user inventory. */
Annotation?: string;
/** Array of unique items that were awarded when this catalog item was purchased. */
BundleContents?: string[];
/**
* Unique identifier for the parent inventory item, as defined in the catalog, for object which were added from a bundle or
* container.
*/
BundleParent?: string;
/** Catalog version for the inventory item, when this instance was created. */
CatalogVersion?: string;
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId?: string;
/**
* 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.
*/
CustomData?: { [key: string]: string | null };
/** CatalogItem.DisplayName at the time this item was purchased. */
DisplayName?: string;
/** Timestamp for when this instance will expire. */
Expiration?: string;
/** Class name for the inventory item, as defined in the catalog. */
ItemClass?: string;
/** Unique identifier for the inventory item, as defined in the catalog. */
ItemId?: string;
/** Unique item identifier for this specific instance of the item. */
ItemInstanceId?: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId?: string;
/** Timestamp for when this instance was purchased. */
PurchaseDate?: string;
/** Total number of remaining uses, if this is a consumable item. */
RemainingUses?: number;
/** Result of this operation. */
Result: boolean;
/** Currency type for the cost of the catalog item. Not available when granting items. */
UnitCurrency?: string;
/** Cost of the catalog item in the given currency. Not available when granting items. */
UnitPrice: number;
/** The number of uses that were added or removed to this item in this call. */
UsesIncrementedBy?: number;
}
/**
* This function directly adds inventory items to the character's inventories. As a result of this operations, the user
* will not be charged any transaction fee, regardless of the inventory item catalog definition. 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.
*/
interface GrantItemsToCharacterRequest {
/** String detailing any additional information concerning this operation. */
Annotation?: string;
/** Catalog version from which items are to be granted. */
CatalogVersion?: string;
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Array of itemIds to grant to the user. */
ItemIds?: string[];
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface GrantItemsToCharacterResult {
/** Array of items granted to users. */
ItemGrantResults?: GrantedItemInstance[];
}
/**
* This function directly adds inventory items to the user's inventories. As a result of this operations, the user will not
* be charged any transaction fee, regardless of the inventory item catalog definition. 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.
*/
interface GrantItemsToUserRequest {
/** String detailing any additional information concerning this operation. */
Annotation?: string;
/** Catalog version from which items are to be granted. */
CatalogVersion?: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Array of itemIds to grant to the user. */
ItemIds: string[];
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
/** Please note that the order of the items in the response may not match the order of items in the request. */
interface GrantItemsToUserResult {
/** Array of items granted to users. */
ItemGrantResults?: GrantedItemInstance[];
}
/**
* This function directly adds inventory items to user inventories. As a result of this operations, the user will not be
* charged any transaction fee, regardless of the inventory item catalog definition. 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.
*/
interface GrantItemsToUsersRequest {
/** Catalog version from which items are to be granted. */
CatalogVersion?: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Array of items to grant and the users to whom the items are to be granted. */
ItemGrants: ItemGrant[];
}
/** Please note that the order of the items in the response may not match the order of items in the request. */
interface GrantItemsToUsersResult {
/** Array of items granted to users. */
ItemGrantResults?: GrantedItemInstance[];
}
interface ItemGrant {
/** String detailing any additional information concerning this operation. */
Annotation?: string;
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId?: string;
/**
* 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.
*/
Data?: { [key: string]: string | null };
/** Unique identifier of the catalog item to be granted to the user. */
ItemId: string;
/**
* 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.
*/
KeysToRemove?: string[];
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
/**
* 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.
*/
interface ItemInstance {
/** Game specific comment associated with this instance when it was added to the user inventory. */
Annotation?: string;
/** Array of unique items that were awarded when this catalog item was purchased. */
BundleContents?: string[];
/**
* Unique identifier for the parent inventory item, as defined in the catalog, for object which were added from a bundle or
* container.
*/
BundleParent?: string;
/** Catalog version for the inventory item, when this instance was created. */
CatalogVersion?: string;
/**
* 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.
*/
CustomData?: { [key: string]: string | null };
/** CatalogItem.DisplayName at the time this item was purchased. */
DisplayName?: string;
/** Timestamp for when this instance will expire. */
Expiration?: string;
/** Class name for the inventory item, as defined in the catalog. */
ItemClass?: string;
/** Unique identifier for the inventory item, as defined in the catalog. */
ItemId?: string;
/** Unique item identifier for this specific instance of the item. */
ItemInstanceId?: string;
/** Timestamp for when this instance was purchased. */
PurchaseDate?: string;
/** Total number of remaining uses, if this is a consumable item. */
RemainingUses?: number;
/** Currency type for the cost of the catalog item. Not available when granting items. */
UnitCurrency?: string;
/** Cost of the catalog item in the given currency. Not available when granting items. */
UnitPrice: number;
/** The number of uses that were added or removed to this item in this call. */
UsesIncrementedBy?: number;
}
interface LinkedPlatformAccountModel {
/** Linked account email of the user on the platform, if available */
Email?: string;
/** Authentication platform */
Platform?: LoginIdentityProvider;
/** Unique account identifier of the user on the platform */
PlatformUserId?: string;
/** Linked account username of the user on the platform, if available */
Username?: string;
}
interface LinkPSNAccountRequest {
/** Authentication code provided by the PlayStation Network. */
AuthCode: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** If another user is already linked to the account, unlink the other user and re-link. */
ForceLink?: boolean;
/** Id of the PSN issuer environment. If null, defaults to production environment. */
IssuerId?: number;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** Redirect URI supplied to PSN when requesting an auth code */
RedirectUri: string;
}
interface LinkPSNAccountResult {}
interface LinkServerCustomIdRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** If another user is already linked to the custom ID, unlink the other user and re-link. */
ForceLink?: boolean;
/** Unique PlayFab identifier. */
PlayFabId: string;
/** Unique server custom identifier for this player. */
ServerCustomId: string;
}
interface LinkServerCustomIdResult {}
interface LinkXboxAccountRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** If another user is already linked to the account, unlink the other user and re-link. */
ForceLink?: boolean;
/** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Xbox Live identifier. */
PlayFabId: string;
/** Token provided by the Xbox Live SDK/XDK method GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", ""). */
XboxToken: string;
}
interface LinkXboxAccountResult {}
/** Returns a list of every character that currently belongs to a user. */
interface ListUsersCharactersRequest {
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface ListUsersCharactersResult {
/** The requested list of characters. */
Characters?: CharacterResult[];
}
/** Contains the localized push notification content. */
interface LocalizedPushNotificationProperties {
/** Message of the localized push notification template. */
Message?: string;
/** Subject of the localized push notification template. */
Subject?: string;
}
interface LocationModel {
/** City name. */
City?: string;
/** The two-character continent code for this location */
ContinentCode?: ContinentCode;
/** The two-character ISO 3166-1 country code for the country associated with the location */
CountryCode?: CountryCode;
/** Latitude coordinate of the geographic location. */
Latitude?: number;
/** Longitude coordinate of the geographic location. */
Longitude?: number;
}
type LoginIdentityProvider =
| "Unknown"
| "PlayFab"
| "Custom"
| "GameCenter"
| "GooglePlay"
| "Steam"
| "XBoxLive"
| "PSN"
| "Kongregate"
| "Facebook"
| "IOSDevice"
| "AndroidDevice"
| "Twitch"
| "WindowsHello"
| "GameServer"
| "CustomServer"
| "NintendoSwitch"
| "FacebookInstantGames"
| "OpenIdConnect"
| "Apple"
| "NintendoSwitchAccount";
interface LoginWithServerCustomIdRequest {
/** Automatically create a PlayFab account if one is not currently linked to this ID. */
CreateAccount?: boolean;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Flags for which pieces of info to return for the user. */
InfoRequestParameters?: GetPlayerCombinedInfoRequestParams;
/** Player secret that is used to verify API request signatures (Enterprise Only). */
PlayerSecret?: string;
/** The backend server identifier for this player. */
ServerCustomId?: string;
}
/**
* If this is the first time a user has signed in with the Steam ID and CreateAccount is set to true, a new PlayFab account
* will be created and linked to the Steam account. 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. Steam users that are not logged into the Steam
* Client app will only have their Steam username synced, other data, such as currency and country will not be available
* until they login while the Client is open.
*/
interface LoginWithSteamIdRequest {
/** Automatically create a PlayFab account if one is not currently linked to this ID. */
CreateAccount?: boolean;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Flags for which pieces of info to return for the user. */
InfoRequestParameters?: GetPlayerCombinedInfoRequestParams;
/** Unique Steam identifier for a user */
SteamId: string;
}
/**
* If this is the first time a user has signed in with the Xbox ID 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.
*/
interface LoginWithXboxIdRequest {
/** Automatically create a PlayFab account if one is not currently linked to this ID. */
CreateAccount?: boolean;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Flags for which pieces of info to return for the user. */
InfoRequestParameters?: GetPlayerCombinedInfoRequestParams;
/** The id of Xbox Live sandbox. */
Sandbox: string;
/** Unique Xbox identifier for a user */
XboxId: string;
}
/**
* 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.
*/
interface LoginWithXboxRequest {
/** Automatically create a PlayFab account if one is not currently linked to this ID. */
CreateAccount?: boolean;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Flags for which pieces of info to return for the user. */
InfoRequestParameters?: GetPlayerCombinedInfoRequestParams;
/** Token provided by the Xbox Live SDK/XDK method GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", ""). */
XboxToken: string;
}
interface LogStatement {
/** Optional object accompanying the message as contextual information */
Data?: any;
/** 'Debug', 'Info', or 'Error' */
Level?: string;
Message?: string;
}
interface MembershipModel {
/** Whether this membership is active. That is, whether the MembershipExpiration time has been reached. */
IsActive: boolean;
/** The time this membership expires */
MembershipExpiration: string;
/** The id of the membership */
MembershipId?: string;
/**
* 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.
*/
OverrideExpiration?: string;
/** The list of subscriptions that this player has for this membership */
Subscriptions?: SubscriptionModel[];
}
interface ModifyCharacterVirtualCurrencyResult {
/** Balance of the virtual currency after modification. */
Balance: number;
/** Name of the virtual currency which was modified. */
VirtualCurrency?: string;
}
/**
* This function can both add and remove uses of an inventory item. If the number of uses drops below zero, the item will
* be removed from active inventory.
*/
interface ModifyItemUsesRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique instance identifier of the item to be modified. */
ItemInstanceId: string;
/** PlayFab unique identifier of the user whose item is being modified. */
PlayFabId: string;
/** Number of uses to add to the item. Can be negative to remove uses. */
UsesToAdd: number;
}
interface ModifyItemUsesResult {
/** Unique instance identifier of the item with uses consumed. */
ItemInstanceId?: string;
/** Number of uses remaining on the item. */
RemainingUses: number;
}
interface ModifyUserVirtualCurrencyResult {
/** Balance of the virtual currency after modification. */
Balance: number;
/**
* 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.
*/
BalanceChange: number;
/** User currency was subtracted from. */
PlayFabId?: string;
/** Name of the virtual currency which was modified. */
VirtualCurrency?: string;
}
/**
* Transfers an item from a character to another character that is owned by the same user. This will remove the item from
* the character's inventory (until and unless it is moved back), and will enable the other character to make use of the
* item instead.
*/
interface MoveItemToCharacterFromCharacterRequest {
/** Unique identifier of the character that currently has the item. */
GivingCharacterId: string;
/** Unique PlayFab assigned instance identifier of the item */
ItemInstanceId: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** Unique identifier of the character that will be receiving the item. */
ReceivingCharacterId: string;
}
interface MoveItemToCharacterFromCharacterResult {}
/**
* Transfers an item from a user to a character she owns. This will remove the item from the user's inventory (until and
* unless it is moved back), and will enable the character to make use of the item instead.
*/
interface MoveItemToCharacterFromUserRequest {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** Unique PlayFab assigned instance identifier of the item */
ItemInstanceId: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface MoveItemToCharacterFromUserResult {}
/**
* Transfers an item from a character to the owning user. This will remove the item from the character's inventory (until
* and unless it is moved back), and will enable the user to make use of the item instead.
*/
interface MoveItemToUserFromCharacterRequest {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** Unique PlayFab assigned instance identifier of the item */
ItemInstanceId: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface MoveItemToUserFromCharacterResult {}
interface NintendoSwitchPlayFabIdPair {
/** Unique Nintendo Switch Device identifier for a user. */
NintendoSwitchDeviceId?: string;
/** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Nintendo Switch Device identifier. */
PlayFabId?: string;
}
interface NotifyMatchmakerPlayerLeftRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique identifier of the Game Instance the user is leaving. */
LobbyId: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface NotifyMatchmakerPlayerLeftResult {
/** State of user leaving the Game Server Instance. */
PlayerState?: PlayerConnectionState;
}
type PlayerConnectionState =
| "Unassigned"
| "Connecting"
| "Participating"
| "Participated";
interface PlayerLeaderboardEntry {
/** Title-specific display name of the user for this leaderboard entry. */
DisplayName?: string;
/** PlayFab unique identifier of the user for this leaderboard entry. */
PlayFabId?: string;
/** User's overall position in the leaderboard. */
Position: number;
/** The profile of the user, if requested. */
Profile?: PlayerProfileModel;
/** Specific value of the user's statistic. */
StatValue: number;
}
interface PlayerLinkedAccount {
/** Linked account's email */
Email?: string;
/** Authentication platform */
Platform?: LoginIdentityProvider;
/** Platform user identifier */
PlatformUserId?: string;
/** Linked account's username */
Username?: string;
}
interface PlayerLocation {
/** City of the player's geographic location. */
City?: string;
/** The two-character continent code for this location */
ContinentCode: ContinentCode;
/** The two-character ISO 3166-1 country code for the country associated with the location */
CountryCode: CountryCode;
/** Latitude coordinate of the player's geographic location. */
Latitude?: number;
/** Longitude coordinate of the player's geographic location. */
Longitude?: number;
}
interface PlayerProfile {
/** Array of ad campaigns player has been attributed to */
AdCampaignAttributions?: AdCampaignAttribution[];
/** Image URL of the player's avatar. */
AvatarUrl?: string;
/** Banned until UTC Date. If permanent ban this is set for 20 years after the original ban date. */
BannedUntil?: string;
/** Array of contact email addresses associated with the player */
ContactEmailAddresses?: ContactEmailInfo[];
/** Player record created */
Created?: string;
/** Player Display Name */
DisplayName?: string;
/** Last login */
LastLogin?: string;
/** Array of third party accounts linked to this player */
LinkedAccounts?: PlayerLinkedAccount[];
/** Dictionary of player's locations by type. */
Locations?: { [key: string]: PlayerLocation };
/** Player account origination */
Origination?: LoginIdentityProvider;
/** List of player variants for experimentation */
PlayerExperimentVariants?: string[];
/** PlayFab Player ID */
PlayerId?: string;
/** Array of player statistics */
PlayerStatistics?: PlayerStatistic[];
/** Publisher this player belongs to */
PublisherId?: string;
/** Array of configured push notification end points */
PushNotificationRegistrations?: PushNotificationRegistration[];
/** Dictionary of player's statistics using only the latest version's value */
Statistics?: { [key: string]: number };
/** List of player's tags for segmentation. */
Tags?: string[];
/** Title ID this profile applies to */
TitleId?: string;
/** A sum of player's total purchases in USD across all currencies. */
TotalValueToDateInUSD?: number;
/** Dictionary of player's total purchases by currency. */
ValuesToDate?: { [key: string]: number };
/** Dictionary of player's virtual currency balances */
VirtualCurrencyBalances?: { [key: string]: number };
}
interface PlayerProfileModel {
/** List of advertising campaigns the player has been attributed to */
AdCampaignAttributions?: AdCampaignAttributionModel[];
/** URL of the player's avatar image */
AvatarUrl?: string;
/** If the player is currently banned, the UTC Date when the ban expires */
BannedUntil?: string;
/** List of all contact email info associated with the player account */
ContactEmailAddresses?: ContactEmailInfoModel[];
/** Player record created */
Created?: string;
/** Player display name */
DisplayName?: string;
/**
* 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.
*/
ExperimentVariants?: string[];
/** UTC time when the player most recently logged in to the title */
LastLogin?: string;
/** List of all authentication systems linked to this player account */
LinkedAccounts?: LinkedPlatformAccountModel[];
/** List of geographic locations from which the player has logged in to the title */
Locations?: LocationModel[];
/** List of memberships for the player, along with whether are expired. */
Memberships?: MembershipModel[];
/** Player account origination */
Origination?: LoginIdentityProvider;
/** PlayFab player account unique identifier */
PlayerId?: string;
/** Publisher this player belongs to */
PublisherId?: string;
/** List of configured end points registered for sending the player push notifications */
PushNotificationRegistrations?: PushNotificationRegistrationModel[];
/** List of leaderboard statistic values for the player */
Statistics?: StatisticModel[];
/** List of player's tags for segmentation */
Tags?: TagModel[];
/** Title ID this player profile applies to */
TitleId?: string;
/**
* 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.
*/
TotalValueToDateInUSD?: number;
/** List of the player's lifetime purchase totals, summed by real-money currency */
ValuesToDate?: ValueToDateModel[];
}
interface PlayerProfileViewConstraints {
/** Whether to show player's avatar URL. Defaults to false */
ShowAvatarUrl: boolean;
/** Whether to show the banned until time. Defaults to false */
ShowBannedUntil: boolean;
/** Whether to show campaign attributions. Defaults to false */
ShowCampaignAttributions: boolean;
/** Whether to show contact email addresses. Defaults to false */
ShowContactEmailAddresses: boolean;
/** Whether to show the created date. Defaults to false */
ShowCreated: boolean;
/** Whether to show the display name. Defaults to false */
ShowDisplayName: boolean;
/** Whether to show player's experiment variants. Defaults to false */
ShowExperimentVariants: boolean;
/** Whether to show the last login time. Defaults to false */
ShowLastLogin: boolean;
/** Whether to show the linked accounts. Defaults to false */
ShowLinkedAccounts: boolean;
/** Whether to show player's locations. Defaults to false */
ShowLocations: boolean;
/** Whether to show player's membership information. Defaults to false */
ShowMemberships: boolean;
/** Whether to show origination. Defaults to false */
ShowOrigination: boolean;
/** Whether to show push notification registrations. Defaults to false */
ShowPushNotificationRegistrations: boolean;
/** Reserved for future development */
ShowStatistics: boolean;
/** Whether to show tags. Defaults to false */
ShowTags: boolean;
/** Whether to show the total value to date in usd. Defaults to false */
ShowTotalValueToDateInUsd: boolean;
/** Whether to show the values to date. Defaults to false */
ShowValuesToDate: boolean;
}
interface PlayerStatistic {
/** Statistic ID */
Id?: string;
/** Statistic name */
Name?: string;
/** Current statistic value */
StatisticValue: number;
/** Statistic version (0 if not a versioned statistic) */
StatisticVersion: number;
}
interface PlayerStatisticVersion {
/** time when the statistic version became active */
ActivationTime: string;
/** time when the statistic version became inactive due to statistic version incrementing */
DeactivationTime?: string;
/** time at which the statistic version was scheduled to become active, based on the configured ResetInterval */
ScheduledActivationTime?: string;
/** time at which the statistic version was scheduled to become inactive, based on the configured ResetInterval */
ScheduledDeactivationTime?: string;
/** name of the statistic when the version became active */
StatisticName?: string;
/** version of the statistic */
Version: number;
}
interface PSNAccountPlayFabIdPair {
/** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the PlayStation Network identifier. */
PlayFabId?: string;
/** Unique PlayStation Network identifier for a user. */
PSNAccountId?: string;
}
interface PushNotificationPackage {
/** Numerical badge to display on App icon (iOS only) */
Badge: number;
/** This must be a JSON formatted object. For use with developer-created custom Push Notification plugins */
CustomData?: string;
/** Icon file to display with the message (Not supported for iOS) */
Icon?: string;
/** Content of the message (all platforms) */
Message: string;
/** Sound file to play with the message (all platforms) */
Sound?: string;
/** Title/Subject of the message. Not supported for iOS */
Title: string;
}
type PushNotificationPlatform =
| "ApplePushNotificationService"
| "GoogleCloudMessaging";
interface PushNotificationRegistration {
/** Notification configured endpoint */
NotificationEndpointARN?: string;
/** Push notification platform */
Platform?: PushNotificationPlatform;
}
interface PushNotificationRegistrationModel {
/** Notification configured endpoint */
NotificationEndpointARN?: string;
/** Push notification platform */
Platform?: PushNotificationPlatform;
}
interface RandomResultTableListing {
/** Catalog version this table is associated with */
CatalogVersion?: string;
/** Child nodes that indicate what kind of drop table item this actually is. */
Nodes: ResultTableNode[];
/** Unique name for this drop table */
TableId: string;
}
/**
* 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.
*/
interface RedeemCouponRequest {
/** Catalog version of the coupon. */
CatalogVersion?: string;
/** Optional identifier for the Character that should receive the item. If null, item is added to the player */
CharacterId?: string;
/** Generated coupon code to redeem. */
CouponCode: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface RedeemCouponResult {
/** Items granted to the player as a result of redeeming the coupon. */
GrantedItems?: ItemInstance[];
}
/**
* This function is used by a Game Server Instance to validate with the PlayFab service that a user has been registered as
* connected to the server. The Ticket is provided to the client either as a result of a call to StartGame or Matchmake,
* each of which return a Ticket specific to the Game Server Instance. This function will fail in any case where the Ticket
* presented is not valid for the specific Game Server Instance making the call. 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.
*/
interface RedeemMatchmakerTicketRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique identifier of the Game Server Instance that is asking for validation of the authorization ticket. */
LobbyId: string;
/** Server authorization ticket passed back from a call to Matchmake or StartGame. */
Ticket: string;
}
interface RedeemMatchmakerTicketResult {
/** Error value if the ticket was not validated. */
Error?: string;
/** Boolean indicating whether the ticket was validated by the PlayFab service. */
TicketIsValid: boolean;
/** User account information for the user validated. */
UserInfo?: UserAccountInfo;
}
interface RefreshGameServerInstanceHeartbeatRequest {
/** Unique identifier of the Game Server Instance for which the heartbeat is updated. */
LobbyId: string;
}
interface RefreshGameServerInstanceHeartbeatResult {}
type Region =
| "USCentral"
| "USEast"
| "EUWest"
| "Singapore"
| "Japan"
| "Brazil"
| "Australia";
interface RegisterGameRequest {
/** Unique identifier of the build running on the Game Server Instance. */
Build: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* Game Mode the Game Server instance is running. Note that this must be defined in the Game Modes tab in the PlayFab Game
* Manager, along with the Build ID (the same Game Mode can be defined for multiple Build IDs).
*/
GameMode: string;
/** Previous lobby id if re-registering an existing game. */
LobbyId?: string;
/**
* Region in which the Game Server Instance is running. For matchmaking using non-AWS region names, set this to any AWS
* region and use Tags (below) to specify your custom region.
*/
Region: Region;
/** IPV4 address of the game server instance. */
ServerIPV4Address?: string;
/** IPV6 address (if any) of the game server instance. */
ServerIPV6Address?: string;
/** Port number for communication with the Game Server Instance. */
ServerPort: string;
/** Public DNS name (if any) of the server */
ServerPublicDNSName?: string;
/** Tags for the Game Server Instance */
Tags?: { [key: string]: string | null };
}
interface RegisterGameResponse {
/**
* Unique identifier generated for the Game Server Instance that is registered. If LobbyId is specified in request and the
* game still exists in PlayFab, the LobbyId in request is returned. Otherwise a new lobby id will be returned.
*/
LobbyId?: string;
}
interface RemoveFriendRequest {
/** PlayFab identifier of the friend account which is to be removed. */
FriendPlayFabId: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface RemoveGenericIDRequest {
/** Generic service identifier to be removed from the player. */
GenericId: GenericServiceId;
/** PlayFabId of the user to remove. */
PlayFabId: string;
}
/**
* This API will trigger a player_tag_removed event and remove a tag with the given TagName and PlayFabID from the
* corresponding player profile. TagName can be used for segmentation and it is limited to 256 characters
*/
interface RemovePlayerTagRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** Unique tag for player profile. */
TagName: string;
}
interface RemovePlayerTagResult {}
interface RemoveSharedGroupMembersRequest {
/** An array of unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabIds: string[];
/** Unique identifier for the shared group. */
SharedGroupId: string;
}
interface RemoveSharedGroupMembersResult {}
interface ReportPlayerServerRequest {
/** Optional additional comment by reporting player. */
Comment?: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab identifier of the reported player. */
ReporteeId: string;
/** PlayFabId of the reporting player. */
ReporterId: string;
}
/**
* 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.
*/
interface ReportPlayerServerResult {
/** The number of remaining reports which may be filed today by this reporting player. */
SubmissionsRemaining: number;
}
interface ResultTableNode {
/** Either an ItemId, or the TableId of another random result table */
ResultItem: string;
/** Whether this entry in the table is an item or a link to another table */
ResultItemType: ResultTableNodeType;
/** How likely this is to be rolled - larger numbers add more weight */
Weight: number;
}
type ResultTableNodeType = "ItemId" | "TableId";
/**
* Setting the active state of all non-expired bans for a user to Inactive. Expired bans with an Active state will be
* ignored, however. Returns information about applied updates only.
*/
interface RevokeAllBansForUserRequest {
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface RevokeAllBansForUserResult {
/** Information on the bans that were revoked. */
BanData?: BanInfo[];
}
/**
* Setting the active state of all bans requested to Inactive regardless of whether that ban has already expired. BanIds
* that do not exist will be skipped. Returns information about applied updates only.
*/
interface RevokeBansRequest {
/** Ids of the bans to be revoked. Maximum 100. */
BanIds: string[];
}
interface RevokeBansResult {
/** Information on the bans that were revoked */
BanData?: BanInfo[];
}
interface RevokeInventoryItem {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId?: string;
/** Unique PlayFab assigned instance identifier of the item */
ItemInstanceId: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
/**
* In cases where the inventory item in question is a "crate", and the items it contained have already been dispensed, this
* will not revoke access or otherwise remove the items which were dispensed.
*/
interface RevokeInventoryItemRequest {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId?: string;
/** Unique PlayFab assigned instance identifier of the item */
ItemInstanceId: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
/**
* In cases where the inventory item in question is a "crate", and the items it contained have already been dispensed, this
* will not revoke access or otherwise remove the items which were dispensed.
*/
interface RevokeInventoryItemsRequest {
/** Array of player items to revoke, between 1 and 25 items. */
Items: RevokeInventoryItem[];
}
interface RevokeInventoryItemsResult {
/** Collection of any errors that occurred during processing. */
Errors?: RevokeItemError[];
}
interface RevokeInventoryResult {}
interface RevokeItemError {
/** Specific error that was encountered. */
Error?: GenericErrorCodes;
/** Item information that failed to be revoked. */
Item?: RevokeInventoryItem;
}
/** Represents the save push notification template request. */
interface SavePushNotificationTemplateRequest {
/** Android JSON for the notification template. */
AndroidPayload?: string;
/** Id of the push notification template. */
Id?: string;
/** IOS JSON for the notification template. */
IOSPayload?: string;
/** Dictionary of localized push notification templates with the language as the key. */
LocalizedPushNotificationTemplates?: {
[key: string]: LocalizedPushNotificationProperties;
};
/** Name of the push notification template. */
Name: string;
}
/** Represents the save push notification template result. */
interface SavePushNotificationTemplateResult {
/** Id of the push notification template that was saved. */
PushNotificationTemplateId?: string;
}
interface ScriptExecutionError {
/**
* Error code, such as CloudScriptNotFound, JavascriptException, CloudScriptFunctionArgumentSizeExceeded,
* CloudScriptAPIRequestCountExceeded, CloudScriptAPIRequestError, or CloudScriptHTTPRequestError
*/
Error?: string;
/** Details about the error */
Message?: string;
/** Point during the execution of the script at which the error occurred, if any */
StackTrace?: string;
}
/**
* PlayFab accounts which have valid email address or username will be able to receive a password reset email using this
* API.The email sent must be an account recovery email template. The username or email can be passed in to send the email
*/
interface SendCustomAccountRecoveryEmailRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** User email address attached to their account */
Email?: string;
/** The email template id of the account recovery email template to send. */
EmailTemplateId: string;
/** The user's username requesting an account recovery. */
Username?: string;
}
interface SendCustomAccountRecoveryEmailResult {}
/**
* Sends an email for only players that have contact emails associated with them. Takes in an email template ID
* specifyingthe email template to send.
*/
interface SendEmailFromTemplateRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The email template id of the email template to send. */
EmailTemplateId: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface SendEmailFromTemplateResult {}
/** Represents the request for sending a push notification template to a recipient. */
interface SendPushNotificationFromTemplateRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Id of the push notification template. */
PushNotificationTemplateId: string;
/** PlayFabId of the push notification recipient. */
Recipient: string;
}
interface SendPushNotificationRequest {
/**
* Allows you to provide precisely formatted json to target devices. This is an advanced feature, allowing you to deliver
* to custom plugin logic, fields, or functionality not natively supported by PlayFab.
*/
AdvancedPlatformDelivery?: AdvancedPushPlatformMsg[];
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Text of message to send. */
Message?: string;
/**
* Defines all possible push attributes like message, title, icon, etc. Some parameters are device specific - please see
* the PushNotificationPackage documentation for details.
*/
Package?: PushNotificationPackage;
/** PlayFabId of the recipient of the push notification. */
Recipient: string;
/** Subject of message to send (may not be displayed in all platforms) */
Subject?: string;
/** Target Platforms that should receive the Message or Package. If omitted, we will send to all available platforms. */
TargetPlatforms?: PushNotificationPlatform[];
}
interface SendPushNotificationResult {}
interface ServerCustomIDPlayFabIDPair {
/** Unique PlayFab identifier. */
PlayFabId?: string;
/** Unique server custom identifier for this player. */
ServerCustomId?: string;
}
interface ServerLoginResult {
/**
* If LoginTitlePlayerAccountEntity flag is set on the login request the title_player_account will also be logged in and
* returned.
*/
EntityToken?: EntityTokenResponse;
/** Results for requested info. */
InfoResultPayload?: GetPlayerCombinedInfoResultPayload;
/** The time of this user's previous login. If there was no previous login, then it's DateTime.MinValue */
LastLoginTime?: string;
/** True if the account was newly created on this login. */
NewlyCreated: boolean;
/** Player's unique PlayFabId. */
PlayFabId?: string;
/** Unique token authorizing the user and game at the server level, for the current session. */
SessionTicket?: string;
/** Settings specific to this user. */
SettingsForUser?: UserSettings;
/** The experimentation treatments for this user at the time of login. */
TreatmentAssignment?: TreatmentAssignment;
}
/**
* 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.
*/
interface SetFriendTagsRequest {
/** PlayFab identifier of the friend account to which the tag(s) should be applied. */
FriendPlayFabId: string;
/** PlayFab identifier of the player whose friend is to be updated. */
PlayFabId: string;
/** Array of tags to set on the friend account. */
Tags: string[];
}
interface SetGameServerInstanceDataRequest {
/** Custom data to set for the specified game server instance. */
GameServerData: string;
/** Unique identifier of the Game Instance to be updated, in decimal format. */
LobbyId: string;
}
interface SetGameServerInstanceDataResult {}
interface SetGameServerInstanceStateRequest {
/** Unique identifier of the Game Instance to be updated, in decimal format. */
LobbyId: string;
/** State to set for the specified game server instance. */
State: GameInstanceState;
}
interface SetGameServerInstanceStateResult {}
interface SetGameServerInstanceTagsRequest {
/** Unique identifier of the Game Server Instance to be updated. */
LobbyId: string;
/**
* Tags to set for the specified Game Server Instance. Note that this is the complete list of tags to be associated with
* the Game Server Instance.
*/
Tags: { [key: string]: string | null };
}
interface SetGameServerInstanceTagsResult {}
/**
* 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.
*/
interface SetPlayerSecretRequest {
/** Player secret that is used to verify API request signatures (Enterprise Only). */
PlayerSecret?: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface SetPlayerSecretResult {}
/**
* This API is designed to store 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. This operation is additive. If a Key does not exist in the current dataset, it
* will be added with the specified Value. If it already exists, the Value for that key will be overwritten with the new
* Value. For more information email helloplayfab@microsoft.com
*/
interface SetPublisherDataRequest {
/**
* key we want to set a value on (note, this is additive - will only replace an existing key's value if they are the same
* name.) Keys are trimmed of whitespace. Keys may not begin with the '!' character.
*/
Key: string;
/** new value to set. Set to null to remove a value */
Value?: string;
}
interface SetPublisherDataResult {}
/**
* This API is designed to store 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. This operation is additive. If a Key does not exist in the current dataset, it will be added with the specified
* Value. If it already exists, the Value for that key will be overwritten with the new Value.
*/
interface SetTitleDataRequest {
/** Id of azure resource */
AzureResourceId?: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* key we want to set a value on (note, this is additive - will only replace an existing key's value if they are the same
* name.) Keys are trimmed of whitespace. Keys may not begin with the '!' character.
*/
Key: string;
/** System Data of the Azure Resource */
SystemData?: AzureResourceSystemData;
/**
* Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a
* title has been selected.
*/
TitleId?: string;
/** new value to set. Set to null to remove a value */
Value?: string;
}
interface SetTitleDataResult {
/** Id of azure resource */
AzureResourceId?: string;
}
interface SharedGroupDataRecord {
/** Timestamp for when this data was last updated. */
LastUpdated: string;
/** PlayFabId of the user to last update this value. */
LastUpdatedBy?: string;
/** Indicates whether this data can be read by all users (public) or only members of the group (private). */
Permission?: UserDataPermission;
/** Data stored for the specified group data key. */
Value?: string;
}
type SourceType =
| "Admin"
| "BackEnd"
| "GameClient"
| "GameServer"
| "Partner"
| "Custom"
| "API";
interface StatisticModel {
/** Statistic name */
Name?: string;
/** Statistic value */
Value: number;
/** Statistic version (0 if not a versioned statistic) */
Version: number;
}
interface StatisticNameVersion {
/** unique name of the statistic */
StatisticName: string;
/** the version of the statistic to be returned */
Version: number;
}
interface StatisticUpdate {
/** unique name of the statistic */
StatisticName: string;
/** statistic value for the player */
Value: number;
/**
* 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.
*/
Version?: number;
}
interface UserStatistics {
[key: string]: number;
}
interface StatisticValue {
/** unique name of the statistic */
StatisticName?: string;
/** statistic value for the player */
Value: number;
/** for updates to an existing statistic value for a player, the version of the statistic when it was loaded */
Version: number;
}
interface SteamPlayFabIdPair {
/** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Steam identifier. */
PlayFabId?: string;
/** Unique Steam identifier for a user. */
SteamStringId?: string;
}
/** A store entry that list a catalog item at a particular price */
interface StoreItem {
/** Store specific custom data. The data only exists as part of this store; it is not transferred to item instances */
CustomData?: any;
/** Intended display position for this item. Note that 0 is the first position */
DisplayPosition?: number;
/**
* Unique identifier of the item as it exists in the catalog - note that this must exactly match the ItemId from the
* catalog
*/
ItemId: string;
/** Override prices for this item for specific currencies */
RealCurrencyPrices?: { [key: string]: number };
/** Override prices for this item in virtual currencies and "RM" (the base Real Money purchase price, in USD pennies) */
VirtualCurrencyPrices?: { [key: string]: number };
}
/** Marketing data about a specific store */
interface StoreMarketingModel {
/** Tagline for a store. */
Description?: string;
/** Display name of a store as it will appear to users. */
DisplayName?: string;
/** Custom data about a store. */
Metadata?: any;
}
interface SubscriptionModel {
/** When this subscription expires. */
Expiration: string;
/** The time the subscription was orignially purchased */
InitialSubscriptionTime: string;
/** Whether this subscription is currently active. That is, if Expiration > now. */
IsActive: boolean;
/** The status of this subscription, according to the subscription provider. */
Status?: SubscriptionProviderStatus;
/** The id for this subscription */
SubscriptionId?: string;
/** The item id for this subscription from the primary catalog */
SubscriptionItemId?: string;
/** The provider for this subscription. Apple or Google Play are supported today. */
SubscriptionProvider?: string;
}
type SubscriptionProviderStatus =
| "NoError"
| "Cancelled"
| "UnknownError"
| "BillingError"
| "ProductUnavailable"
| "CustomerDidNotAcceptPriceChange"
| "FreeTrial"
| "PaymentPending";
interface SubtractCharacterVirtualCurrencyRequest {
/** Amount to be subtracted from the user balance of the specified virtual currency. */
Amount: number;
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** Name of the virtual currency which is to be decremented. */
VirtualCurrency: string;
}
interface SubtractUserVirtualCurrencyRequest {
/** Amount to be subtracted from the user balance of the specified virtual currency. */
Amount: number;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** PlayFab unique identifier of the user whose virtual currency balance is to be decreased. */
PlayFabId: string;
/** Name of the virtual currency which is to be decremented. */
VirtualCurrency: string;
}
interface TagModel {
/** Full value of the tag, including namespace */
TagValue?: string;
}
type TitleActivationStatus =
| "None"
| "ActivatedTitleKey"
| "PendingSteam"
| "ActivatedSteam"
| "RevokedSteam";
interface TitleNewsItem {
/** News item body. */
Body?: string;
/** Unique identifier of news item. */
NewsId?: string;
/** Date and time when the news item was posted. */
Timestamp: string;
/** Title of the news item. */
Title?: string;
}
interface TreatmentAssignment {
/** List of the experiment variables. */
Variables?: Variable[];
/** List of the experiment variants. */
Variants?: string[];
}
interface UnlinkPSNAccountRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface UnlinkPSNAccountResult {}
interface UnlinkServerCustomIdRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab identifier. */
PlayFabId: string;
/** Unique server custom identifier for this player. */
ServerCustomId: string;
}
interface UnlinkServerCustomIdResult {}
interface UnlinkXboxAccountRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Xbox Live identifier. */
PlayFabId: string;
}
interface UnlinkXboxAccountResult {}
/** Specify the container and optionally the catalogVersion for the container to open */
interface UnlockContainerInstanceRequest {
/**
* Specifies the catalog version that should be used to determine container contents. If unspecified, uses catalog
* associated with the item instance.
*/
CatalogVersion?: string;
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId?: string;
/** ItemInstanceId of the container to unlock. */
ContainerItemInstanceId: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* ItemInstanceId of the key that will be consumed by unlocking this container. If the container requires a key, this
* parameter is required.
*/
KeyItemInstanceId?: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
/** Specify the type of container to open and optionally the catalogVersion for the container to open */
interface UnlockContainerItemRequest {
/**
* Specifies the catalog version that should be used to determine container contents. If unspecified, uses default/primary
* catalog.
*/
CatalogVersion?: string;
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId?: string;
/** Catalog ItemId of the container type to unlock. */
ContainerItemId: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
/** The items and vc found within the container. These will be added and stacked in your inventory as appropriate. */
interface UnlockContainerItemResult {
/** Items granted to the player as a result of unlocking the container. */
GrantedItems?: ItemInstance[];
/** Unique instance identifier of the container unlocked. */
UnlockedItemInstanceId?: string;
/** Unique instance identifier of the key used to unlock the container, if applicable. */
UnlockedWithItemInstanceId?: string;
/** Virtual currency granted to the player as a result of unlocking the container. */
VirtualCurrency?: { [key: string]: number };
}
interface UpdateAvatarUrlRequest {
/** URL of the avatar image. If empty, it removes the existing avatar URL. */
ImageUrl: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
/** Represents a single update ban request. */
interface UpdateBanRequest {
/** The updated active state for the ban. Null for no change. */
Active?: boolean;
/** The id of the ban to be updated. */
BanId: string;
/** The updated expiration date for the ban. Null for no change. */
Expires?: string;
/** The updated IP address for the ban. Null for no change. */
IPAddress?: string;
/** The updated MAC address for the ban. Null for no change. */
MACAddress?: string;
/** Whether to make this ban permanent. Set to true to make this ban permanent. This will not modify Active state. */
Permanent?: boolean;
/** The updated reason for the ban to be updated. Maximum 140 characters. Null for no change. */
Reason?: string;
}
/**
* For each ban, only updates the values that are set. Leave any value to null for no change. If a ban could not be found,
* the rest are still applied. Returns information about applied updates only.
*/
interface UpdateBansRequest {
/** List of bans to be updated. Maximum 100. */
Bans: UpdateBanRequest[];
}
interface UpdateBansResult {
/** Information on the bans that were updated */
BanData?: BanInfo[];
}
/**
* This function performs an additive update of the arbitrary JSON object 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. No other key-value pairs will be changed apart from those specified in the call.
*/
interface UpdateCharacterDataRequest {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* 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.
*/
Data?: { [key: string]: string | null };
/**
* 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.
*/
KeysToRemove?: string[];
/** Permission to be applied to all user data keys written in this request. Defaults to "private" if not set. */
Permission?: UserDataPermission;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface UpdateCharacterDataResult {
/**
* Indicates the current version of the data that has been set. This is incremented with every set call for that type of
* data (read-only, internal, etc). This version can be provided in Get calls to find updated data.
*/
DataVersion: number;
}
/**
* Character statistics are similar to user statistics in that they are numeric values which may only be updated by a
* server operation, in order to minimize the opportunity for unauthorized changes. In addition to being available for use
* by the title, the statistics are used for all leaderboard operations in PlayFab.
*/
interface UpdateCharacterStatisticsRequest {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** Statistics to be updated with the provided values. */
CharacterStatistics?: { [key: string]: number };
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface UpdateCharacterStatisticsResult {}
/**
* 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.
*/
interface UpdatePlayerStatisticsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* Indicates whether the statistics provided should be set, regardless of the aggregation method set on the statistic.
* Default is false.
*/
ForceUpdate?: boolean;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** Statistics to be updated with the provided values */
Statistics: StatisticUpdate[];
}
interface UpdatePlayerStatisticsResult {}
/**
* Note that in the case of multiple calls to write to the same shared group data keys, the last write received by the
* PlayFab service will determine the value available to subsequent read operations. For scenarios requiring coordination
* of data updates, it is recommended that titles make use of user data with read permission set to public, or a
* combination of user data and shared group data.
*/
interface UpdateSharedGroupDataRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* 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.
*/
Data?: { [key: string]: string | null };
/**
* 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.
*/
KeysToRemove?: string[];
/** Permission to be applied to all user data keys in this request. */
Permission?: UserDataPermission;
/** Unique identifier for the shared group. */
SharedGroupId: string;
}
interface UpdateSharedGroupDataResult {}
/**
* This function performs an additive update of the arbitrary JSON object 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. No other key-value pairs will be changed apart from those specified in the call.
*/
interface UpdateUserDataRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* 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.
*/
Data?: { [key: string]: string | null };
/**
* 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.
*/
KeysToRemove?: string[];
/** Permission to be applied to all user data keys written in this request. Defaults to "private" if not set. */
Permission?: UserDataPermission;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface UpdateUserDataResult {
/**
* Indicates the current version of the data that has been set. This is incremented with every set call for that type of
* data (read-only, internal, etc). This version can be provided in Get calls to find updated data.
*/
DataVersion: number;
}
/**
* This function performs an additive update of the arbitrary JSON object 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, keys with
* null values will be removed. No other key-value pairs will be changed apart from those specified in the call.
*/
interface UpdateUserInternalDataRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* 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.
*/
Data?: { [key: string]: string | null };
/**
* 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.
*/
KeysToRemove?: string[];
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
/**
* This function performs an additive update of the arbitrary JSON object containing the custom data for the item instance
* which belongs to the specified 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. No other key-value pairs will be changed
* apart from those specified in the call.
*/
interface UpdateUserInventoryItemDataRequest {
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId?: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* 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.
*/
Data?: { [key: string]: string | null };
/** Unique PlayFab assigned instance identifier of the item */
ItemInstanceId: string;
/**
* 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.
*/
KeysToRemove?: string[];
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
}
interface UserAccountInfo {
/** User Android device information, if an Android device has been linked */
AndroidDeviceInfo?: UserAndroidDeviceInfo;
/** Sign in with Apple account information, if an Apple account has been linked */
AppleAccountInfo?: UserAppleIdInfo;
/** Timestamp indicating when the user account was created */
Created: string;
/** Custom ID information, if a custom ID has been assigned */
CustomIdInfo?: UserCustomIdInfo;
/** User Facebook information, if a Facebook account has been linked */
FacebookInfo?: UserFacebookInfo;
/** Facebook Instant Games account information, if a Facebook Instant Games account has been linked */
FacebookInstantGamesIdInfo?: UserFacebookInstantGamesIdInfo;
/** User Gamecenter information, if a Gamecenter account has been linked */
GameCenterInfo?: UserGameCenterInfo;
/** User Google account information, if a Google account has been linked */
GoogleInfo?: UserGoogleInfo;
/** User iOS device information, if an iOS device has been linked */
IosDeviceInfo?: UserIosDeviceInfo;
/** User Kongregate account information, if a Kongregate account has been linked */
KongregateInfo?: UserKongregateInfo;
/** Nintendo Switch account information, if a Nintendo Switch account has been linked */
NintendoSwitchAccountInfo?: UserNintendoSwitchAccountIdInfo;
/** Nintendo Switch device information, if a Nintendo Switch device has been linked */
NintendoSwitchDeviceIdInfo?: UserNintendoSwitchDeviceIdInfo;
/** OpenID Connect information, if any OpenID Connect accounts have been linked */
OpenIdInfo?: UserOpenIdInfo[];
/** Unique identifier for the user account */
PlayFabId?: string;
/** Personal information for the user which is considered more sensitive */
PrivateInfo?: UserPrivateAccountInfo;
/** User PSN account information, if a PSN account has been linked */
PsnInfo?: UserPsnInfo;
/** User Steam information, if a Steam account has been linked */
SteamInfo?: UserSteamInfo;
/** Title-specific information for the user account */
TitleInfo?: UserTitleInfo;
/** User Twitch account information, if a Twitch account has been linked */
TwitchInfo?: UserTwitchInfo;
/** User account name in the PlayFab service */
Username?: string;
/** User XBox account information, if a XBox account has been linked */
XboxInfo?: UserXboxInfo;
}
interface UserAndroidDeviceInfo {
/** Android device ID */
AndroidDeviceId?: string;
}
interface UserAppleIdInfo {
/** Apple subject ID */
AppleSubjectId?: string;
}
interface UserCustomIdInfo {
/** Custom ID */
CustomId?: string;
}
/**
* 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.
*/
type UserDataPermission = "Private" | "Public";
interface UserDataRecord {
/** Timestamp for when this data was last updated. */
LastUpdated: string;
/**
* 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.
*/
Permission?: UserDataPermission;
/** Data stored for the specified user data key. */
Value?: string;
}
interface UserFacebookInfo {
/** Facebook identifier */
FacebookId?: string;
/** Facebook full name */
FullName?: string;
}
interface UserFacebookInstantGamesIdInfo {
/** Facebook Instant Games ID */
FacebookInstantGamesId?: string;
}
interface UserGameCenterInfo {
/** Gamecenter identifier */
GameCenterId?: string;
}
interface UserGoogleInfo {
/** Email address of the Google account */
GoogleEmail?: string;
/** Gender information of the Google account */
GoogleGender?: string;
/** Google ID */
GoogleId?: string;
/** Locale of the Google account */
GoogleLocale?: string;
/** Name of the Google account user */
GoogleName?: string;
}
interface UserIosDeviceInfo {
/** iOS device ID */
IosDeviceId?: string;
}
interface UserKongregateInfo {
/** Kongregate ID */
KongregateId?: string;
/** Kongregate Username */
KongregateName?: string;
}
interface UserNintendoSwitchAccountIdInfo {
/** Nintendo Switch account subject ID */
NintendoSwitchAccountSubjectId?: string;
}
interface UserNintendoSwitchDeviceIdInfo {
/** Nintendo Switch Device ID */
NintendoSwitchDeviceId?: string;
}
interface UserOpenIdInfo {
/** OpenID Connection ID */
ConnectionId?: string;
/** OpenID Issuer */
Issuer?: string;
/** OpenID Subject */
Subject?: string;
}
type UserOrigination =
| "Organic"
| "Steam"
| "Google"
| "Amazon"
| "Facebook"
| "Kongregate"
| "GamersFirst"
| "Unknown"
| "IOS"
| "LoadTest"
| "Android"
| "PSN"
| "GameCenter"
| "CustomId"
| "XboxLive"
| "Parse"
| "Twitch"
| "ServerCustomId"
| "NintendoSwitchDeviceId"
| "FacebookInstantGamesId"
| "OpenIdConnect"
| "Apple"
| "NintendoSwitchAccount";
interface UserPrivateAccountInfo {
/** user email address */
Email?: string;
}
interface UserPsnInfo {
/** PSN account ID */
PsnAccountId?: string;
/** PSN online ID */
PsnOnlineId?: string;
}
interface UserSettings {
/** Boolean for whether this player is eligible for gathering device info. */
GatherDeviceInfo: boolean;
/** Boolean for whether this player should report OnFocus play-time tracking. */
GatherFocusInfo: boolean;
/** Boolean for whether this player is eligible for ad tracking. */
NeedsAttribution: boolean;
}
interface UserSteamInfo {
/** what stage of game ownership the user is listed as being in, from Steam */
SteamActivationStatus?: TitleActivationStatus;
/** the country in which the player resides, from Steam data */
SteamCountry?: string;
/** currency type set in the user Steam account */
SteamCurrency?: Currency;
/** Steam identifier */
SteamId?: string;
/** Steam display name */
SteamName?: string;
}
interface UserTitleInfo {
/** URL to the player's avatar. */
AvatarUrl?: string;
/**
* timestamp indicating when the user was first associated with this game (this can differ significantly from when the user
* first registered with PlayFab)
*/
Created: string;
/** name of the user, as it is displayed in-game */
DisplayName?: string;
/**
* 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)
*/
FirstLogin?: string;
/** boolean indicating whether or not the user is currently banned for a title */
isBanned?: boolean;
/** timestamp for the last user login for this title */
LastLogin?: string;
/** source by which the user first joined the game, if known */
Origination?: UserOrigination;
/** Title player account entity for this user */
TitlePlayerAccount?: EntityKey;
}
interface UserTwitchInfo {
/** Twitch ID */
TwitchId?: string;
/** Twitch Username */
TwitchUserName?: string;
}
interface UserXboxInfo {
/** XBox user ID */
XboxUserId?: string;
}
interface ValueToDateModel {
/** ISO 4217 code of the currency used in the purchases */
Currency?: string;
/**
* 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')
*/
TotalValue: number;
/**
* 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'.
*/
TotalValueAsDecimal?: string;
}
interface Variable {
/** Name of the variable. */
Name: string;
/** Value of the variable. */
Value?: string;
}
interface VirtualCurrencyRechargeTime {
/**
* Maximum value to which the regenerating currency will automatically increment. Note that it can exceed this value
* through use of the AddUserVirtualCurrency API call. However, it will not regenerate automatically until it has fallen
* below this value.
*/
RechargeMax: number;
/** Server timestamp in UTC indicating the next time the virtual currency will be incremented. */
RechargeTime: string;
/** Time remaining (in seconds) before the next recharge increment of the virtual currency. */
SecondsToRecharge: number;
}
interface WriteEventResponse {
/**
* The unique identifier of the event. The values of this identifier consist of ASCII characters and are not constrained to
* any particular format.
*/
EventId?: string;
}
/**
* 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 character-based event. The created event will be locked to the
* authenticated title.
*/
interface WriteServerCharacterEventRequest {
/** Custom event properties. Each property consists of a name (string) and a value (JSON object). */
Body?: { [key: string]: any };
/** Unique PlayFab assigned ID for a specific character owned by a user */
CharacterId: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* 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).
*/
EventName: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** The time (in UTC) associated with this event. The value defaults to the current time. */
Timestamp?: string;
}
/**
* 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.
*/
interface WriteServerPlayerEventRequest {
/** Custom data properties associated with the event. Each property consists of a name (string) and a value (JSON object). */
Body?: { [key: string]: any };
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* 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).
*/
EventName: string;
/** Unique PlayFab assigned ID of the user on whom the operation will be performed. */
PlayFabId: string;
/** The time (in UTC) associated with this event. The value defaults to the current time. */
Timestamp?: string;
}
/**
* 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 title-based event. The created event will be locked to the
* authenticated title.
*/
interface WriteTitleEventRequest {
/** Custom event properties. Each property consists of a name (string) and a value (JSON object). */
Body?: { [key: string]: any };
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* 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).
*/
EventName: string;
/** The time (in UTC) associated with this event. The value defaults to the current time. */
Timestamp?: string;
}
interface XboxLiveAccountPlayFabIdPair {
/** Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Xbox Live identifier. */
PlayFabId?: string;
/** Unique Xbox Live identifier for a user. */
XboxLiveAccountId?: string;
}
}
/** Server interface methods */
interface IPlayFabServerAPI {
/**
* Increments the character's balance of the specified virtual currency by the stated amount
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/addcharactervirtualcurrency
*/
AddCharacterVirtualCurrency(
request: PlayFabServerModels.AddCharacterVirtualCurrencyRequest
): PlayFabServerModels.ModifyCharacterVirtualCurrencyResult;
/**
* Adds the Friend user to the friendlist of the user with PlayFabId. At least one of
* FriendPlayFabId,FriendUsername,FriendEmail, or FriendTitleDisplayName should be initialized.
* https://docs.microsoft.com/rest/api/playfab/server/friend-list-management/addfriend
*/
AddFriend(
request: PlayFabServerModels.AddFriendRequest
): PlayFabServerModels.EmptyResponse;
/**
* Adds the specified generic service identifier to the player's PlayFab account. This is designed to allow for a PlayFab
* ID lookup of any arbitrary service identifier a title wants to add. This identifier should never be used as
* authentication credentials, as the intent is that it is easily accessible by other players.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/addgenericid
*/
AddGenericID(
request: PlayFabServerModels.AddGenericIDRequest
): PlayFabServerModels.EmptyResult;
/**
* Adds a given tag to a player profile. The tag's namespace is automatically generated based on the source of the tag.
* https://docs.microsoft.com/rest/api/playfab/server/playstream/addplayertag
*/
AddPlayerTag(
request: PlayFabServerModels.AddPlayerTagRequest
): PlayFabServerModels.AddPlayerTagResult;
/**
* Adds users to the set of those able to update both the shared data, as well as the set of users in the group. Only users
* in the group (and the server) can add new members. Shared Groups are designed for sharing data between a very small
* number of players, please see our guide:
* https://docs.microsoft.com/gaming/playfab/features/social/groups/using-shared-group-data
* https://docs.microsoft.com/rest/api/playfab/server/shared-group-data/addsharedgroupmembers
*/
AddSharedGroupMembers(
request: PlayFabServerModels.AddSharedGroupMembersRequest
): PlayFabServerModels.AddSharedGroupMembersResult;
/**
* Increments the user's balance of the specified virtual currency by the stated amount
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/adduservirtualcurrency
*/
AddUserVirtualCurrency(
request: PlayFabServerModels.AddUserVirtualCurrencyRequest
): PlayFabServerModels.ModifyUserVirtualCurrencyResult;
/**
* Validated a client's session ticket, and if successful, returns details for that user
* https://docs.microsoft.com/rest/api/playfab/server/authentication/authenticatesessionticket
*/
AuthenticateSessionTicket(
request: PlayFabServerModels.AuthenticateSessionTicketRequest
): PlayFabServerModels.AuthenticateSessionTicketResult;
/**
* Awards the specified users the specified Steam achievements
* https://docs.microsoft.com/rest/api/playfab/server/platform-specific-methods/awardsteamachievement
*/
AwardSteamAchievement(
request: PlayFabServerModels.AwardSteamAchievementRequest
): PlayFabServerModels.AwardSteamAchievementResult;
/**
* Bans users by PlayFab ID with optional IP address, or MAC address for the provided game.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/banusers
*/
BanUsers(
request: PlayFabServerModels.BanUsersRequest
): PlayFabServerModels.BanUsersResult;
/**
* Consume uses of a consumable item. When all uses are consumed, it will be removed from the player's inventory.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/consumeitem
*/
ConsumeItem(
request: PlayFabServerModels.ConsumeItemRequest
): PlayFabServerModels.ConsumeItemResult;
/**
* Requests the creation of a shared group object, containing key/value pairs which may be updated by all members of the
* group. When created by a server, the group will initially have no members. Shared Groups are designed for sharing data
* between a very small number of players, please see our guide:
* https://docs.microsoft.com/gaming/playfab/features/social/groups/using-shared-group-data
* https://docs.microsoft.com/rest/api/playfab/server/shared-group-data/createsharedgroup
*/
CreateSharedGroup(
request: PlayFabServerModels.CreateSharedGroupRequest
): PlayFabServerModels.CreateSharedGroupResult;
/**
* Deletes the specific character ID from the specified user.
* https://docs.microsoft.com/rest/api/playfab/server/characters/deletecharacterfromuser
*/
DeleteCharacterFromUser(
request: PlayFabServerModels.DeleteCharacterFromUserRequest
): PlayFabServerModels.DeleteCharacterFromUserResult;
/**
* Removes a user's player account from a title and deletes all associated data
* https://docs.microsoft.com/rest/api/playfab/server/account-management/deleteplayer
*/
DeletePlayer(
request: PlayFabServerModels.DeletePlayerRequest
): PlayFabServerModels.DeletePlayerResult;
/**
* Deletes push notification template for title
* https://docs.microsoft.com/rest/api/playfab/server/account-management/deletepushnotificationtemplate
*/
DeletePushNotificationTemplate(
request: PlayFabServerModels.DeletePushNotificationTemplateRequest
): PlayFabServerModels.DeletePushNotificationTemplateResult;
/**
* Deletes a shared group, freeing up the shared group ID to be reused for a new group. Shared Groups are designed for
* sharing data between a very small number of players, please see our guide:
* https://docs.microsoft.com/gaming/playfab/features/social/groups/using-shared-group-data
* https://docs.microsoft.com/rest/api/playfab/server/shared-group-data/deletesharedgroup
*/
DeleteSharedGroup(
request: PlayFabServerModels.DeleteSharedGroupRequest
): PlayFabServerModels.EmptyResponse;
/**
* Inform the matchmaker that a Game Server Instance is removed.
* https://docs.microsoft.com/rest/api/playfab/server/matchmaking/deregistergame
*/
DeregisterGame(
request: PlayFabServerModels.DeregisterGameRequest
): PlayFabServerModels.DeregisterGameResponse;
/**
* Returns the result of an evaluation of a Random Result Table - the ItemId from the game Catalog which would have been
* added to the player inventory, if the Random Result Table were added via a Bundle or a call to UnlockContainer.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/evaluaterandomresulttable
*/
EvaluateRandomResultTable(
request: PlayFabServerModels.EvaluateRandomResultTableRequest
): PlayFabServerModels.EvaluateRandomResultTableResult;
/**
* Executes a CloudScript function, with the 'currentPlayerId' variable set to the specified PlayFabId parameter value.
* https://docs.microsoft.com/rest/api/playfab/server/server-side-cloud-script/executecloudscript
*/
ExecuteCloudScript(
request: PlayFabServerModels.ExecuteCloudScriptServerRequest
): PlayFabServerModels.ExecuteCloudScriptResult;
/**
* Retrieves an array of player segment definitions. Results from this can be used in subsequent API calls such as
* GetPlayersInSegment which requires a Segment ID. While segment names can change the ID for that segment will not change.
* https://docs.microsoft.com/rest/api/playfab/server/playstream/getallsegments
*/
GetAllSegments(
request: PlayFabServerModels.GetAllSegmentsRequest
): PlayFabServerModels.GetAllSegmentsResult;
/**
* Lists all of the characters that belong to a specific user. CharacterIds are not globally unique; characterId must be
* evaluated with the parent PlayFabId to guarantee uniqueness.
* https://docs.microsoft.com/rest/api/playfab/server/characters/getalluserscharacters
*/
GetAllUsersCharacters(
request: PlayFabServerModels.ListUsersCharactersRequest
): PlayFabServerModels.ListUsersCharactersResult;
/**
* Retrieves the specified version of the title's catalog of virtual goods, including all defined properties
* https://docs.microsoft.com/rest/api/playfab/server/title-wide-data-management/getcatalogitems
*/
GetCatalogItems(
request: PlayFabServerModels.GetCatalogItemsRequest
): PlayFabServerModels.GetCatalogItemsResult;
/**
* Retrieves the title-specific custom data for the user which is readable and writable by the client
* https://docs.microsoft.com/rest/api/playfab/server/character-data/getcharacterdata
*/
GetCharacterData(
request: PlayFabServerModels.GetCharacterDataRequest
): PlayFabServerModels.GetCharacterDataResult;
/**
* Retrieves the title-specific custom data for the user's character which cannot be accessed by the client
* https://docs.microsoft.com/rest/api/playfab/server/character-data/getcharacterinternaldata
*/
GetCharacterInternalData(
request: PlayFabServerModels.GetCharacterDataRequest
): PlayFabServerModels.GetCharacterDataResult;
/**
* Retrieves the specified character's current inventory of virtual goods
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/getcharacterinventory
*/
GetCharacterInventory(
request: PlayFabServerModels.GetCharacterInventoryRequest
): PlayFabServerModels.GetCharacterInventoryResult;
/**
* Retrieves a list of ranked characters for the given statistic, starting from the indicated point in the leaderboard
* https://docs.microsoft.com/rest/api/playfab/server/characters/getcharacterleaderboard
*/
GetCharacterLeaderboard(
request: PlayFabServerModels.GetCharacterLeaderboardRequest
): PlayFabServerModels.GetCharacterLeaderboardResult;
/**
* Retrieves the title-specific custom data for the user's character which can only be read by the client
* https://docs.microsoft.com/rest/api/playfab/server/character-data/getcharacterreadonlydata
*/
GetCharacterReadOnlyData(
request: PlayFabServerModels.GetCharacterDataRequest
): PlayFabServerModels.GetCharacterDataResult;
/**
* Retrieves the details of all title-specific statistics for the specific character
* https://docs.microsoft.com/rest/api/playfab/server/characters/getcharacterstatistics
*/
GetCharacterStatistics(
request: PlayFabServerModels.GetCharacterStatisticsRequest
): PlayFabServerModels.GetCharacterStatisticsResult;
/**
* This API retrieves a pre-signed URL for accessing a content file for the title. A subsequent HTTP GET to the returned
* URL will attempt to download the content. A HEAD query to the returned URL will attempt to retrieve the metadata of the
* content. Note that a successful result does not guarantee the existence of this content - if it has not been uploaded,
* the query to retrieve the data will fail. See this post for more information:
* https://community.playfab.com/hc/community/posts/205469488-How-to-upload-files-to-PlayFab-s-Content-Service. Also,
* please be aware that the Content service is specifically PlayFab's CDN offering, for which standard CDN rates apply.
* https://docs.microsoft.com/rest/api/playfab/server/content/getcontentdownloadurl
*/
GetContentDownloadUrl(
request: PlayFabServerModels.GetContentDownloadUrlRequest
): PlayFabServerModels.GetContentDownloadUrlResult;
/**
* Retrieves a list of ranked friends of the given player for the given statistic, starting from the indicated point in the
* leaderboard
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getfriendleaderboard
*/
GetFriendLeaderboard(
request: PlayFabServerModels.GetFriendLeaderboardRequest
): PlayFabServerModels.GetLeaderboardResult;
/**
* Retrieves the current friends for the user with PlayFabId, constrained to users who have PlayFab accounts. Friends from
* linked accounts (Facebook, Steam) are also included. You may optionally exclude some linked services' friends.
* https://docs.microsoft.com/rest/api/playfab/server/friend-list-management/getfriendslist
*/
GetFriendsList(
request: PlayFabServerModels.GetFriendsListRequest
): PlayFabServerModels.GetFriendsListResult;
/**
* Retrieves a list of ranked users for the given statistic, starting from the indicated point in the leaderboard
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getleaderboard
*/
GetLeaderboard(
request: PlayFabServerModels.GetLeaderboardRequest
): PlayFabServerModels.GetLeaderboardResult;
/**
* Retrieves a list of ranked characters for the given statistic, centered on the requested user
* https://docs.microsoft.com/rest/api/playfab/server/characters/getleaderboardaroundcharacter
*/
GetLeaderboardAroundCharacter(
request: PlayFabServerModels.GetLeaderboardAroundCharacterRequest
): PlayFabServerModels.GetLeaderboardAroundCharacterResult;
/**
* Retrieves a list of ranked users for the given statistic, centered on the currently signed-in user
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getleaderboardarounduser
*/
GetLeaderboardAroundUser(
request: PlayFabServerModels.GetLeaderboardAroundUserRequest
): PlayFabServerModels.GetLeaderboardAroundUserResult;
/**
* Retrieves a list of all of the user's characters for the given statistic.
* https://docs.microsoft.com/rest/api/playfab/server/characters/getleaderboardforusercharacters
*/
GetLeaderboardForUserCharacters(
request: PlayFabServerModels.GetLeaderboardForUsersCharactersRequest
): PlayFabServerModels.GetLeaderboardForUsersCharactersResult;
/**
* Returns whatever info is requested in the response for the user. Note that PII (like email address, facebook id) may be
* returned. All parameters default to false.
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getplayercombinedinfo
*/
GetPlayerCombinedInfo(
request: PlayFabServerModels.GetPlayerCombinedInfoRequest
): PlayFabServerModels.GetPlayerCombinedInfoResult;
/**
* Retrieves the player's profile
* https://docs.microsoft.com/rest/api/playfab/server/account-management/getplayerprofile
*/
GetPlayerProfile(
request: PlayFabServerModels.GetPlayerProfileRequest
): PlayFabServerModels.GetPlayerProfileResult;
/**
* List all segments that a player currently belongs to at this moment in time.
* https://docs.microsoft.com/rest/api/playfab/server/playstream/getplayersegments
*/
GetPlayerSegments(
request: PlayFabServerModels.GetPlayersSegmentsRequest
): PlayFabServerModels.GetPlayerSegmentsResult;
/**
* Allows for paging through all players in a given segment. This API creates a snapshot of all player profiles that match
* the segment definition at the time of its creation and lives through the Total Seconds to Live, refreshing its life span
* on each subsequent use of the Continuation Token. Profiles that change during the course of paging will not be reflected
* in the results. AB Test segments are currently not supported by this operation. NOTE: This API is limited to being
* called 30 times in one minute. You will be returned an error if you exceed this threshold.
* https://docs.microsoft.com/rest/api/playfab/server/playstream/getplayersinsegment
*/
GetPlayersInSegment(
request: PlayFabServerModels.GetPlayersInSegmentRequest
): PlayFabServerModels.GetPlayersInSegmentResult;
/**
* Retrieves the current version and values for the indicated statistics, for the local player.
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getplayerstatistics
*/
GetPlayerStatistics(
request: PlayFabServerModels.GetPlayerStatisticsRequest
): PlayFabServerModels.GetPlayerStatisticsResult;
GetUserStatistics(
request: PlayFabServerModels.GetUserStatisticsRequest
): PlayFabServerModels.GetUserStatisticsResult;
/**
* Retrieves the information on the available versions of the specified statistic.
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getplayerstatisticversions
*/
GetPlayerStatisticVersions(
request: PlayFabServerModels.GetPlayerStatisticVersionsRequest
): PlayFabServerModels.GetPlayerStatisticVersionsResult;
/**
* Get all tags with a given Namespace (optional) from a player profile.
* https://docs.microsoft.com/rest/api/playfab/server/playstream/getplayertags
*/
GetPlayerTags(
request: PlayFabServerModels.GetPlayerTagsRequest
): PlayFabServerModels.GetPlayerTagsResult;
/**
* Retrieves the unique PlayFab identifiers for the given set of Facebook identifiers.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/getplayfabidsfromfacebookids
*/
GetPlayFabIDsFromFacebookIDs(
request: PlayFabServerModels.GetPlayFabIDsFromFacebookIDsRequest
): PlayFabServerModels.GetPlayFabIDsFromFacebookIDsResult;
/**
* Retrieves the unique PlayFab identifiers for the given set of Facebook Instant Games identifiers.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/getplayfabidsfromfacebookinstantgamesids
*/
GetPlayFabIDsFromFacebookInstantGamesIds(
request: PlayFabServerModels.GetPlayFabIDsFromFacebookInstantGamesIdsRequest
): PlayFabServerModels.GetPlayFabIDsFromFacebookInstantGamesIdsResult;
/**
* Retrieves the unique PlayFab identifiers for the given set of generic service identifiers. A generic identifier is the
* service name plus the service-specific ID for the player, as specified by the title when the generic identifier was
* added to the player account.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/getplayfabidsfromgenericids
*/
GetPlayFabIDsFromGenericIDs(
request: PlayFabServerModels.GetPlayFabIDsFromGenericIDsRequest
): PlayFabServerModels.GetPlayFabIDsFromGenericIDsResult;
/**
* Retrieves the unique PlayFab identifiers for the given set of Nintendo Switch Device identifiers.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/getplayfabidsfromnintendoswitchdeviceids
*/
GetPlayFabIDsFromNintendoSwitchDeviceIds(
request: PlayFabServerModels.GetPlayFabIDsFromNintendoSwitchDeviceIdsRequest
): PlayFabServerModels.GetPlayFabIDsFromNintendoSwitchDeviceIdsResult;
/**
* Retrieves the unique PlayFab identifiers for the given set of PlayStation Network identifiers.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/getplayfabidsfrompsnaccountids
*/
GetPlayFabIDsFromPSNAccountIDs(
request: PlayFabServerModels.GetPlayFabIDsFromPSNAccountIDsRequest
): PlayFabServerModels.GetPlayFabIDsFromPSNAccountIDsResult;
/**
* Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are the profile
* IDs for the user accounts, available as SteamId in the Steamworks Community API calls.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/getplayfabidsfromsteamids
*/
GetPlayFabIDsFromSteamIDs(
request: PlayFabServerModels.GetPlayFabIDsFromSteamIDsRequest
): PlayFabServerModels.GetPlayFabIDsFromSteamIDsResult;
/**
* Retrieves the unique PlayFab identifiers for the given set of XboxLive identifiers.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/getplayfabidsfromxboxliveids
*/
GetPlayFabIDsFromXboxLiveIDs(
request: PlayFabServerModels.GetPlayFabIDsFromXboxLiveIDsRequest
): PlayFabServerModels.GetPlayFabIDsFromXboxLiveIDsResult;
/**
* Retrieves the key-value store of custom publisher settings
* https://docs.microsoft.com/rest/api/playfab/server/title-wide-data-management/getpublisherdata
*/
GetPublisherData(
request: PlayFabServerModels.GetPublisherDataRequest
): PlayFabServerModels.GetPublisherDataResult;
/**
* Retrieves the configuration information for the specified random results tables for the title, including all ItemId
* values and weights
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/getrandomresulttables
*/
GetRandomResultTables(
request: PlayFabServerModels.GetRandomResultTablesRequest
): PlayFabServerModels.GetRandomResultTablesResult;
/**
* Retrieves the associated PlayFab account identifiers for the given set of server custom identifiers.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/getservercustomidsfromplayfabids
*/
GetServerCustomIDsFromPlayFabIDs(
request: PlayFabServerModels.GetServerCustomIDsFromPlayFabIDsRequest
): PlayFabServerModels.GetServerCustomIDsFromPlayFabIDsResult;
/**
* Retrieves data stored in a shared group object, as well as the list of members in the group. The server can access all
* public and private group data. Shared Groups are designed for sharing data between a very small number of players,
* please see our guide: https://docs.microsoft.com/gaming/playfab/features/social/groups/using-shared-group-data
* https://docs.microsoft.com/rest/api/playfab/server/shared-group-data/getsharedgroupdata
*/
GetSharedGroupData(
request: PlayFabServerModels.GetSharedGroupDataRequest
): PlayFabServerModels.GetSharedGroupDataResult;
/**
* Retrieves the set of items defined for the specified store, including all prices defined, for the specified player
* https://docs.microsoft.com/rest/api/playfab/server/title-wide-data-management/getstoreitems
*/
GetStoreItems(
request: PlayFabServerModels.GetStoreItemsServerRequest
): PlayFabServerModels.GetStoreItemsResult;
/**
* Retrieves the current server time
* https://docs.microsoft.com/rest/api/playfab/server/title-wide-data-management/gettime
*/
GetTime(
request: PlayFabServerModels.GetTimeRequest
): PlayFabServerModels.GetTimeResult;
/**
* Retrieves the key-value store of custom title settings
* https://docs.microsoft.com/rest/api/playfab/server/title-wide-data-management/gettitledata
*/
GetTitleData(
request: PlayFabServerModels.GetTitleDataRequest
): PlayFabServerModels.GetTitleDataResult;
/**
* Retrieves the key-value store of custom internal title settings
* https://docs.microsoft.com/rest/api/playfab/server/title-wide-data-management/gettitleinternaldata
*/
GetTitleInternalData(
request: PlayFabServerModels.GetTitleDataRequest
): PlayFabServerModels.GetTitleDataResult;
/**
* Retrieves the title news feed, as configured in the developer portal
* https://docs.microsoft.com/rest/api/playfab/server/title-wide-data-management/gettitlenews
*/
GetTitleNews(
request: PlayFabServerModels.GetTitleNewsRequest
): PlayFabServerModels.GetTitleNewsResult;
/**
* Retrieves the relevant details for a specified user
* https://docs.microsoft.com/rest/api/playfab/server/account-management/getuseraccountinfo
*/
GetUserAccountInfo(
request: PlayFabServerModels.GetUserAccountInfoRequest
): PlayFabServerModels.GetUserAccountInfoResult;
/**
* Gets all bans for a user.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/getuserbans
*/
GetUserBans(
request: PlayFabServerModels.GetUserBansRequest
): PlayFabServerModels.GetUserBansResult;
/**
* Retrieves the title-specific custom data for the user which is readable and writable by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getuserdata
*/
GetUserData(
request: PlayFabServerModels.GetUserDataRequest
): PlayFabServerModels.GetUserDataResult;
/**
* Retrieves the title-specific custom data for the user which cannot be accessed by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getuserinternaldata
*/
GetUserInternalData(
request: PlayFabServerModels.GetUserDataRequest
): PlayFabServerModels.GetUserDataResult;
/**
* Retrieves the specified user's current inventory of virtual goods
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/getuserinventory
*/
GetUserInventory(
request: PlayFabServerModels.GetUserInventoryRequest
): PlayFabServerModels.GetUserInventoryResult;
/**
* Retrieves the publisher-specific custom data for the user which is readable and writable by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getuserpublisherdata
*/
GetUserPublisherData(
request: PlayFabServerModels.GetUserDataRequest
): PlayFabServerModels.GetUserDataResult;
/**
* Retrieves the publisher-specific custom data for the user which cannot be accessed by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getuserpublisherinternaldata
*/
GetUserPublisherInternalData(
request: PlayFabServerModels.GetUserDataRequest
): PlayFabServerModels.GetUserDataResult;
/**
* Retrieves the publisher-specific custom data for the user which can only be read by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getuserpublisherreadonlydata
*/
GetUserPublisherReadOnlyData(
request: PlayFabServerModels.GetUserDataRequest
): PlayFabServerModels.GetUserDataResult;
/**
* Retrieves the title-specific custom data for the user which can only be read by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/getuserreadonlydata
*/
GetUserReadOnlyData(
request: PlayFabServerModels.GetUserDataRequest
): PlayFabServerModels.GetUserDataResult;
/**
* Grants the specified character type to the user. CharacterIds are not globally unique; characterId must be evaluated
* with the parent PlayFabId to guarantee uniqueness.
* https://docs.microsoft.com/rest/api/playfab/server/characters/grantcharactertouser
*/
GrantCharacterToUser(
request: PlayFabServerModels.GrantCharacterToUserRequest
): PlayFabServerModels.GrantCharacterToUserResult;
/**
* Adds the specified items to the specified character's inventory
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/grantitemstocharacter
*/
GrantItemsToCharacter(
request: PlayFabServerModels.GrantItemsToCharacterRequest
): PlayFabServerModels.GrantItemsToCharacterResult;
/**
* Adds the specified items to the specified user's inventory
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/grantitemstouser
*/
GrantItemsToUser(
request: PlayFabServerModels.GrantItemsToUserRequest
): PlayFabServerModels.GrantItemsToUserResult;
/**
* Adds the specified items to the specified user inventories
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/grantitemstousers
*/
GrantItemsToUsers(
request: PlayFabServerModels.GrantItemsToUsersRequest
): PlayFabServerModels.GrantItemsToUsersResult;
/**
* Links the PlayStation Network account associated with the provided access code to the user's PlayFab account
* https://docs.microsoft.com/rest/api/playfab/server/account-management/linkpsnaccount
*/
LinkPSNAccount(
request: PlayFabServerModels.LinkPSNAccountRequest
): PlayFabServerModels.LinkPSNAccountResult;
/**
* Links the custom server identifier, generated by the title, to the user's PlayFab account.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/linkservercustomid
*/
LinkServerCustomId(
request: PlayFabServerModels.LinkServerCustomIdRequest
): PlayFabServerModels.LinkServerCustomIdResult;
/**
* Links the Xbox Live account associated with the provided access code to the user's PlayFab account
* https://docs.microsoft.com/rest/api/playfab/server/account-management/linkxboxaccount
*/
LinkXboxAccount(
request: PlayFabServerModels.LinkXboxAccountRequest
): PlayFabServerModels.LinkXboxAccountResult;
/**
* Securely login a game client from an external server backend using a custom identifier for that player. Server Custom ID
* and Client Custom ID are mutually exclusive and cannot be used to retrieve the same player account.
* https://docs.microsoft.com/rest/api/playfab/server/authentication/loginwithservercustomid
*/
LoginWithServerCustomId(
request: PlayFabServerModels.LoginWithServerCustomIdRequest
): PlayFabServerModels.ServerLoginResult;
/**
* Signs the user in using an Steam ID, returning a session identifier that can subsequently be used for API calls which
* require an authenticated user
* https://docs.microsoft.com/rest/api/playfab/server/authentication/loginwithsteamid
*/
LoginWithSteamId(
request: PlayFabServerModels.LoginWithSteamIdRequest
): PlayFabServerModels.ServerLoginResult;
/**
* Signs the user in using a Xbox Live Token from an external server backend, returning a session identifier that can
* subsequently be used for API calls which require an authenticated user
* https://docs.microsoft.com/rest/api/playfab/server/authentication/loginwithxbox
*/
LoginWithXbox(
request: PlayFabServerModels.LoginWithXboxRequest
): PlayFabServerModels.ServerLoginResult;
/**
* Signs the user in using an Xbox ID and Sandbox ID, returning a session identifier that can subsequently be used for API
* calls which require an authenticated user
* https://docs.microsoft.com/rest/api/playfab/server/authentication/loginwithxboxid
*/
LoginWithXboxId(
request: PlayFabServerModels.LoginWithXboxIdRequest
): PlayFabServerModels.ServerLoginResult;
/**
* Modifies the number of remaining uses of a player's inventory item
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/modifyitemuses
*/
ModifyItemUses(
request: PlayFabServerModels.ModifyItemUsesRequest
): PlayFabServerModels.ModifyItemUsesResult;
/**
* Moves an item from a character's inventory into another of the users's character's inventory.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/moveitemtocharacterfromcharacter
*/
MoveItemToCharacterFromCharacter(
request: PlayFabServerModels.MoveItemToCharacterFromCharacterRequest
): PlayFabServerModels.MoveItemToCharacterFromCharacterResult;
/**
* Moves an item from a user's inventory into their character's inventory.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/moveitemtocharacterfromuser
*/
MoveItemToCharacterFromUser(
request: PlayFabServerModels.MoveItemToCharacterFromUserRequest
): PlayFabServerModels.MoveItemToCharacterFromUserResult;
/**
* Moves an item from a character's inventory into the owning user's inventory.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/moveitemtouserfromcharacter
*/
MoveItemToUserFromCharacter(
request: PlayFabServerModels.MoveItemToUserFromCharacterRequest
): PlayFabServerModels.MoveItemToUserFromCharacterResult;
/**
* Informs the PlayFab match-making service that the user specified has left the Game Server Instance
* https://docs.microsoft.com/rest/api/playfab/server/matchmaking/notifymatchmakerplayerleft
*/
NotifyMatchmakerPlayerLeft(
request: PlayFabServerModels.NotifyMatchmakerPlayerLeftRequest
): PlayFabServerModels.NotifyMatchmakerPlayerLeftResult;
/**
* Adds the virtual goods associated with the coupon to the user's inventory. Coupons can be generated via the
* Economy->Catalogs tab in the PlayFab Game Manager.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/redeemcoupon
*/
RedeemCoupon(
request: PlayFabServerModels.RedeemCouponRequest
): PlayFabServerModels.RedeemCouponResult;
/**
* Validates a Game Server session ticket and returns details about the user
* https://docs.microsoft.com/rest/api/playfab/server/matchmaking/redeemmatchmakerticket
*/
RedeemMatchmakerTicket(
request: PlayFabServerModels.RedeemMatchmakerTicketRequest
): PlayFabServerModels.RedeemMatchmakerTicketResult;
/**
* Set the state of the indicated Game Server Instance. Also update the heartbeat for the instance.
* https://docs.microsoft.com/rest/api/playfab/server/matchmaking/refreshgameserverinstanceheartbeat
*/
RefreshGameServerInstanceHeartbeat(
request: PlayFabServerModels.RefreshGameServerInstanceHeartbeatRequest
): PlayFabServerModels.RefreshGameServerInstanceHeartbeatResult;
/**
* Inform the matchmaker that a new Game Server Instance is added.
* https://docs.microsoft.com/rest/api/playfab/server/matchmaking/registergame
*/
RegisterGame(
request: PlayFabServerModels.RegisterGameRequest
): PlayFabServerModels.RegisterGameResponse;
/**
* Removes the specified friend from the the user's friend list
* https://docs.microsoft.com/rest/api/playfab/server/friend-list-management/removefriend
*/
RemoveFriend(
request: PlayFabServerModels.RemoveFriendRequest
): PlayFabServerModels.EmptyResponse;
/**
* Removes the specified generic service identifier from the player's PlayFab account.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/removegenericid
*/
RemoveGenericID(
request: PlayFabServerModels.RemoveGenericIDRequest
): PlayFabServerModels.EmptyResult;
/**
* Remove a given tag from a player profile. The tag's namespace is automatically generated based on the source of the tag.
* https://docs.microsoft.com/rest/api/playfab/server/playstream/removeplayertag
*/
RemovePlayerTag(
request: PlayFabServerModels.RemovePlayerTagRequest
): PlayFabServerModels.RemovePlayerTagResult;
/**
* Removes users from the set of those able to update the shared data and the set of users in the group. Only users in the
* group can remove members. If as a result of the call, zero users remain with access, the group and its associated data
* will be deleted. Shared Groups are designed for sharing data between a very small number of players, please see our
* guide: https://docs.microsoft.com/gaming/playfab/features/social/groups/using-shared-group-data
* https://docs.microsoft.com/rest/api/playfab/server/shared-group-data/removesharedgroupmembers
*/
RemoveSharedGroupMembers(
request: PlayFabServerModels.RemoveSharedGroupMembersRequest
): PlayFabServerModels.RemoveSharedGroupMembersResult;
/**
* Submit a report about a player (due to bad bahavior, etc.) on behalf of another player, so that customer service
* representatives for the title can take action concerning potentially toxic players.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/reportplayer
*/
ReportPlayer(
request: PlayFabServerModels.ReportPlayerServerRequest
): PlayFabServerModels.ReportPlayerServerResult;
/**
* Revoke all active bans for a user.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/revokeallbansforuser
*/
RevokeAllBansForUser(
request: PlayFabServerModels.RevokeAllBansForUserRequest
): PlayFabServerModels.RevokeAllBansForUserResult;
/**
* Revoke all active bans specified with BanId.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/revokebans
*/
RevokeBans(
request: PlayFabServerModels.RevokeBansRequest
): PlayFabServerModels.RevokeBansResult;
/**
* Revokes access to an item in a user's inventory
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/revokeinventoryitem
*/
RevokeInventoryItem(
request: PlayFabServerModels.RevokeInventoryItemRequest
): PlayFabServerModels.RevokeInventoryResult;
/**
* Revokes access for up to 25 items across multiple users and characters.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/revokeinventoryitems
*/
RevokeInventoryItems(
request: PlayFabServerModels.RevokeInventoryItemsRequest
): PlayFabServerModels.RevokeInventoryItemsResult;
/**
* Saves push notification template for title
* https://docs.microsoft.com/rest/api/playfab/server/account-management/savepushnotificationtemplate
*/
SavePushNotificationTemplate(
request: PlayFabServerModels.SavePushNotificationTemplateRequest
): PlayFabServerModels.SavePushNotificationTemplateResult;
/**
* Forces an email to be sent to the registered contact email address for the user's account based on an account recovery
* email template
* https://docs.microsoft.com/rest/api/playfab/server/account-management/sendcustomaccountrecoveryemail
*/
SendCustomAccountRecoveryEmail(
request: PlayFabServerModels.SendCustomAccountRecoveryEmailRequest
): PlayFabServerModels.SendCustomAccountRecoveryEmailResult;
/**
* Sends an email based on an email template to a player's contact email
* https://docs.microsoft.com/rest/api/playfab/server/account-management/sendemailfromtemplate
*/
SendEmailFromTemplate(
request: PlayFabServerModels.SendEmailFromTemplateRequest
): PlayFabServerModels.SendEmailFromTemplateResult;
/**
* Sends an iOS/Android Push Notification to a specific user, if that user's device has been configured for Push
* Notifications in PlayFab. If a user has linked both Android and iOS devices, both will be notified.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/sendpushnotification
*/
SendPushNotification(
request: PlayFabServerModels.SendPushNotificationRequest
): PlayFabServerModels.SendPushNotificationResult;
/**
* Sends an iOS/Android Push Notification template to a specific user, if that user's device has been configured for Push
* Notifications in PlayFab. If a user has linked both Android and iOS devices, both will be notified.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/sendpushnotificationfromtemplate
*/
SendPushNotificationFromTemplate(
request: PlayFabServerModels.SendPushNotificationFromTemplateRequest
): PlayFabServerModels.SendPushNotificationResult;
/**
* Updates the tag list for a specified user in the friend list of another user
* https://docs.microsoft.com/rest/api/playfab/server/friend-list-management/setfriendtags
*/
SetFriendTags(
request: PlayFabServerModels.SetFriendTagsRequest
): PlayFabServerModels.EmptyResponse;
/**
* Sets the custom data of the indicated Game Server Instance
* https://docs.microsoft.com/rest/api/playfab/server/matchmaking/setgameserverinstancedata
*/
SetGameServerInstanceData(
request: PlayFabServerModels.SetGameServerInstanceDataRequest
): PlayFabServerModels.SetGameServerInstanceDataResult;
/**
* Set the state of the indicated Game Server Instance.
* https://docs.microsoft.com/rest/api/playfab/server/matchmaking/setgameserverinstancestate
*/
SetGameServerInstanceState(
request: PlayFabServerModels.SetGameServerInstanceStateRequest
): PlayFabServerModels.SetGameServerInstanceStateResult;
/**
* Set custom tags for the specified Game Server Instance
* https://docs.microsoft.com/rest/api/playfab/server/matchmaking/setgameserverinstancetags
*/
SetGameServerInstanceTags(
request: PlayFabServerModels.SetGameServerInstanceTagsRequest
): PlayFabServerModels.SetGameServerInstanceTagsResult;
/**
* Sets the player's secret if it is not already set. Player secrets are used to sign API requests. To reset a player's
* secret use the Admin or Server API method SetPlayerSecret.
* https://docs.microsoft.com/rest/api/playfab/server/authentication/setplayersecret
*/
SetPlayerSecret(
request: PlayFabServerModels.SetPlayerSecretRequest
): PlayFabServerModels.SetPlayerSecretResult;
/**
* Updates the key-value store of custom publisher settings
* https://docs.microsoft.com/rest/api/playfab/server/title-wide-data-management/setpublisherdata
*/
SetPublisherData(
request: PlayFabServerModels.SetPublisherDataRequest
): PlayFabServerModels.SetPublisherDataResult;
/**
* Updates the key-value store of custom title settings
* https://docs.microsoft.com/rest/api/playfab/server/title-wide-data-management/settitledata
*/
SetTitleData(
request: PlayFabServerModels.SetTitleDataRequest
): PlayFabServerModels.SetTitleDataResult;
/**
* Updates the key-value store of custom title settings
* https://docs.microsoft.com/rest/api/playfab/server/title-wide-data-management/settitleinternaldata
*/
SetTitleInternalData(
request: PlayFabServerModels.SetTitleDataRequest
): PlayFabServerModels.SetTitleDataResult;
/**
* Decrements the character's balance of the specified virtual currency by the stated amount. It is possible to make a VC
* balance negative with this API.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/subtractcharactervirtualcurrency
*/
SubtractCharacterVirtualCurrency(
request: PlayFabServerModels.SubtractCharacterVirtualCurrencyRequest
): PlayFabServerModels.ModifyCharacterVirtualCurrencyResult;
/**
* Decrements the user's balance of the specified virtual currency by the stated amount. It is possible to make a VC
* balance negative with this API.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/subtractuservirtualcurrency
*/
SubtractUserVirtualCurrency(
request: PlayFabServerModels.SubtractUserVirtualCurrencyRequest
): PlayFabServerModels.ModifyUserVirtualCurrencyResult;
/**
* Unlinks the related PSN account from the user's PlayFab account
* https://docs.microsoft.com/rest/api/playfab/server/account-management/unlinkpsnaccount
*/
UnlinkPSNAccount(
request: PlayFabServerModels.UnlinkPSNAccountRequest
): PlayFabServerModels.UnlinkPSNAccountResult;
/**
* Unlinks the custom server identifier from the user's PlayFab account.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/unlinkservercustomid
*/
UnlinkServerCustomId(
request: PlayFabServerModels.UnlinkServerCustomIdRequest
): PlayFabServerModels.UnlinkServerCustomIdResult;
/**
* Unlinks the related Xbox Live account from the user's PlayFab account
* https://docs.microsoft.com/rest/api/playfab/server/account-management/unlinkxboxaccount
*/
UnlinkXboxAccount(
request: PlayFabServerModels.UnlinkXboxAccountRequest
): PlayFabServerModels.UnlinkXboxAccountResult;
/**
* Opens a specific container (ContainerItemInstanceId), with a specific key (KeyItemInstanceId, when required), and
* returns the contents of the opened container. If the container (and key when relevant) are consumable (RemainingUses >
* 0), their RemainingUses will be decremented, consistent with the operation of ConsumeItem.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/unlockcontainerinstance
*/
UnlockContainerInstance(
request: PlayFabServerModels.UnlockContainerInstanceRequest
): PlayFabServerModels.UnlockContainerItemResult;
/**
* Searches Player or Character inventory for any ItemInstance matching the given CatalogItemId, if necessary unlocks it
* using any appropriate key, and returns the contents of the opened container. If the container (and key when relevant)
* are consumable (RemainingUses > 0), their RemainingUses will be decremented, consistent with the operation of
* ConsumeItem.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/unlockcontaineritem
*/
UnlockContainerItem(
request: PlayFabServerModels.UnlockContainerItemRequest
): PlayFabServerModels.UnlockContainerItemResult;
/**
* Update the avatar URL of the specified player
* https://docs.microsoft.com/rest/api/playfab/server/account-management/updateavatarurl
*/
UpdateAvatarUrl(
request: PlayFabServerModels.UpdateAvatarUrlRequest
): PlayFabServerModels.EmptyResponse;
/**
* Updates information of a list of existing bans specified with Ban Ids.
* https://docs.microsoft.com/rest/api/playfab/server/account-management/updatebans
*/
UpdateBans(
request: PlayFabServerModels.UpdateBansRequest
): PlayFabServerModels.UpdateBansResult;
/**
* Updates the title-specific custom data for the user's character which is readable and writable by the client
* https://docs.microsoft.com/rest/api/playfab/server/character-data/updatecharacterdata
*/
UpdateCharacterData(
request: PlayFabServerModels.UpdateCharacterDataRequest
): PlayFabServerModels.UpdateCharacterDataResult;
/**
* Updates the title-specific custom data for the user's character which cannot be accessed by the client
* https://docs.microsoft.com/rest/api/playfab/server/character-data/updatecharacterinternaldata
*/
UpdateCharacterInternalData(
request: PlayFabServerModels.UpdateCharacterDataRequest
): PlayFabServerModels.UpdateCharacterDataResult;
/**
* Updates the title-specific custom data for the user's character which can only be read by the client
* https://docs.microsoft.com/rest/api/playfab/server/character-data/updatecharacterreadonlydata
*/
UpdateCharacterReadOnlyData(
request: PlayFabServerModels.UpdateCharacterDataRequest
): PlayFabServerModels.UpdateCharacterDataResult;
/**
* Updates the values of the specified title-specific statistics for the specific character
* https://docs.microsoft.com/rest/api/playfab/server/characters/updatecharacterstatistics
*/
UpdateCharacterStatistics(
request: PlayFabServerModels.UpdateCharacterStatisticsRequest
): PlayFabServerModels.UpdateCharacterStatisticsResult;
/**
* Updates the values of the specified title-specific statistics for the user
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/updateplayerstatistics
*/
UpdatePlayerStatistics(
request: PlayFabServerModels.UpdatePlayerStatisticsRequest
): PlayFabServerModels.UpdatePlayerStatisticsResult;
UpdateUserStatistics(
request: PlayFabServerModels.UpdateUserStatisticsRequest
): PlayFabServerModels.UpdatePlayerStatisticsResult;
/**
* Adds, updates, and removes data keys for a shared group object. If the permission is set to Public, all fields updated
* or added in this call will be readable by users not in the group. By default, data permissions are set to Private.
* Regardless of the permission setting, only members of the group (and the server) can update the data. Shared Groups are
* designed for sharing data between a very small number of players, please see our guide:
* https://docs.microsoft.com/gaming/playfab/features/social/groups/using-shared-group-data
* https://docs.microsoft.com/rest/api/playfab/server/shared-group-data/updatesharedgroupdata
*/
UpdateSharedGroupData(
request: PlayFabServerModels.UpdateSharedGroupDataRequest
): PlayFabServerModels.UpdateSharedGroupDataResult;
/**
* Updates the title-specific custom data for the user which is readable and writable by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/updateuserdata
*/
UpdateUserData(
request: PlayFabServerModels.UpdateUserDataRequest
): PlayFabServerModels.UpdateUserDataResult;
/**
* Updates the title-specific custom data for the user which cannot be accessed by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/updateuserinternaldata
*/
UpdateUserInternalData(
request: PlayFabServerModels.UpdateUserInternalDataRequest
): PlayFabServerModels.UpdateUserDataResult;
/**
* Updates the key-value pair data tagged to the specified item, which is read-only from the client.
* https://docs.microsoft.com/rest/api/playfab/server/player-item-management/updateuserinventoryitemcustomdata
*/
UpdateUserInventoryItemCustomData(
request: PlayFabServerModels.UpdateUserInventoryItemDataRequest
): PlayFabServerModels.EmptyResponse;
/**
* Updates the publisher-specific custom data for the user which is readable and writable by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/updateuserpublisherdata
*/
UpdateUserPublisherData(
request: PlayFabServerModels.UpdateUserDataRequest
): PlayFabServerModels.UpdateUserDataResult;
/**
* Updates the publisher-specific custom data for the user which cannot be accessed by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/updateuserpublisherinternaldata
*/
UpdateUserPublisherInternalData(
request: PlayFabServerModels.UpdateUserInternalDataRequest
): PlayFabServerModels.UpdateUserDataResult;
/**
* Updates the publisher-specific custom data for the user which can only be read by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/updateuserpublisherreadonlydata
*/
UpdateUserPublisherReadOnlyData(
request: PlayFabServerModels.UpdateUserDataRequest
): PlayFabServerModels.UpdateUserDataResult;
/**
* Updates the title-specific custom data for the user which can only be read by the client
* https://docs.microsoft.com/rest/api/playfab/server/player-data-management/updateuserreadonlydata
*/
UpdateUserReadOnlyData(
request: PlayFabServerModels.UpdateUserDataRequest
): PlayFabServerModels.UpdateUserDataResult;
/**
* Writes a character-based event into PlayStream.
* https://docs.microsoft.com/rest/api/playfab/server/analytics/writecharacterevent
*/
WriteCharacterEvent(
request: PlayFabServerModels.WriteServerCharacterEventRequest
): PlayFabServerModels.WriteEventResponse;
/**
* Writes a player-based event into PlayStream.
* https://docs.microsoft.com/rest/api/playfab/server/analytics/writeplayerevent
*/
WritePlayerEvent(
request: PlayFabServerModels.WriteServerPlayerEventRequest
): PlayFabServerModels.WriteEventResponse;
/**
* Writes a title-based event into PlayStream.
* https://docs.microsoft.com/rest/api/playfab/server/analytics/writetitleevent
*/
WriteTitleEvent(
request: PlayFabServerModels.WriteTitleEventRequest
): PlayFabServerModels.WriteEventResponse;
}
/** AuthenticationAPI.Models as interfaces */
declare namespace PlayFabAuthenticationModels {
/** Combined entity type and ID structure which uniquely identifies a single entity. */
interface EntityKey {
/** Unique ID of the entity. */
Id: string;
/** Entity type. See https://docs.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types */
Type?: string;
}
interface EntityLineage {
/** The Character Id of the associated entity. */
CharacterId?: string;
/** The Group Id of the associated entity. */
GroupId?: string;
/** The Master Player Account Id of the associated entity. */
MasterPlayerAccountId?: string;
/** The Namespace Id of the associated entity. */
NamespaceId?: string;
/** The Title Id of the associated entity. */
TitleId?: string;
/** The Title Player Account Id of the associated entity. */
TitlePlayerAccountId?: string;
}
/**
* This API must be called with X-SecretKey, X-Authentication or X-EntityToken headers. An optional EntityKey may be
* included to attempt to set the resulting EntityToken to a specific entity, however the entity must be a relation of the
* caller, such as the master_player_account of a character. If sending X-EntityToken the account will be marked as freshly
* logged in and will issue a new token. If using X-Authentication or X-EntityToken the header must still be valid and
* cannot be expired or revoked.
*/
interface GetEntityTokenRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity?: EntityKey;
}
interface GetEntityTokenResponse {
/** The entity id and type. */
Entity?: EntityKey;
/** The token used to set X-EntityToken for all entity based API calls. */
EntityToken?: string;
/** The time the token will expire, if it is an expiring token, in UTC. */
TokenExpiration?: string;
}
type IdentifiedDeviceType = "Unknown" | "XboxOne" | "Scarlett";
type LoginIdentityProvider =
| "Unknown"
| "PlayFab"
| "Custom"
| "GameCenter"
| "GooglePlay"
| "Steam"
| "XBoxLive"
| "PSN"
| "Kongregate"
| "Facebook"
| "IOSDevice"
| "AndroidDevice"
| "Twitch"
| "WindowsHello"
| "GameServer"
| "CustomServer"
| "NintendoSwitch"
| "FacebookInstantGames"
| "OpenIdConnect"
| "Apple"
| "NintendoSwitchAccount";
/** Given an entity token, validates that it hasn't expired or been revoked and will return details of the owner. */
interface ValidateEntityTokenRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Client EntityToken */
EntityToken: string;
}
interface ValidateEntityTokenResponse {
/** The entity id and type. */
Entity?: EntityKey;
/** The authenticated device for this entity, for the given login */
IdentifiedDeviceType?: IdentifiedDeviceType;
/** The identity provider for this entity, for the given login */
IdentityProvider?: LoginIdentityProvider;
/** The ID issued by the identity provider, e.g. a XUID on Xbox Live */
IdentityProviderIssuedId?: string;
/** The lineage of this profile. */
Lineage?: EntityLineage;
}
}
/** DataAPI.Models as interfaces */
declare namespace PlayFabDataModels {
/** Aborts the pending upload of the requested files. */
interface AbortFileUploadsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/** Names of the files to have their pending uploads aborted. */
FileNames: string[];
/**
* The expected version of the profile, if set and doesn't match the current version of the profile the operation will not
* be performed.
*/
ProfileVersion?: number;
}
interface AbortFileUploadsResponse {
/** The entity id and type. */
Entity?: EntityKey;
/** The current version of the profile, can be used for concurrency control during updates. */
ProfileVersion: number;
}
/** Deletes the requested files from the entity's profile. */
interface DeleteFilesRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/** Names of the files to be deleted. */
FileNames: string[];
/**
* The expected version of the profile, if set and doesn't match the current version of the profile the operation will not
* be performed.
*/
ProfileVersion?: number;
}
interface DeleteFilesResponse {
/** The entity id and type. */
Entity?: EntityKey;
/** The current version of the profile, can be used for concurrency control during updates. */
ProfileVersion: number;
}
/** Combined entity type and ID structure which uniquely identifies a single entity. */
interface EntityKey {
/** Unique ID of the entity. */
Id: string;
/** Entity type. See https://docs.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types */
Type?: string;
}
/**
* Finalizes the upload of the requested files. Verifies that the files have been successfully uploaded and moves the file
* pointers from pending to live.
*/
interface FinalizeFileUploadsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/** Names of the files to be finalized. Restricted to a-Z, 0-9, '(', ')', '_', '-' and '.' */
FileNames: string[];
/** The current version of the profile, can be used for concurrency control during updates. */
ProfileVersion: number;
}
interface FinalizeFileUploadsResponse {
/** The entity id and type. */
Entity?: EntityKey;
/** Collection of metadata for the entity's files */
Metadata?: { [key: string]: GetFileMetadata };
/** The current version of the profile, can be used for concurrency control during updates. */
ProfileVersion: number;
}
interface GetFileMetadata {
/** Checksum value for the file, can be used to check if the file on the server has changed. */
Checksum?: string;
/** Download URL where the file can be retrieved */
DownloadUrl?: string;
/** Name of the file */
FileName?: string;
/** Last UTC time the file was modified */
LastModified: string;
/** Storage service's reported byte count */
Size: number;
}
/**
* Returns URLs that may be used to download the files for a profile for a limited length of time. Only returns files that
* have been successfully uploaded, files that are still pending will either return the old value, if it exists, or
* nothing.
*/
interface GetFilesRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
}
interface GetFilesResponse {
/** The entity id and type. */
Entity?: EntityKey;
/** Collection of metadata for the entity's files */
Metadata?: { [key: string]: GetFileMetadata };
/** The current version of the profile, can be used for concurrency control during updates. */
ProfileVersion: number;
}
/** Gets JSON objects from an entity profile and returns it. */
interface GetObjectsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/**
* Determines whether the object will be returned as an escaped JSON string or as a un-escaped JSON object. Default is JSON
* object.
*/
EscapeObject?: boolean;
}
interface GetObjectsResponse {
/** The entity id and type. */
Entity?: EntityKey;
/** Requested objects that the calling entity has access to */
Objects?: { [key: string]: ObjectResult };
/** The current version of the profile, can be used for concurrency control during updates. */
ProfileVersion: number;
}
interface InitiateFileUploadMetadata {
/** Name of the file. */
FileName?: string;
/** Location the data should be sent to via an HTTP PUT operation. */
UploadUrl?: string;
}
/**
* Returns URLs that may be used to upload the files for a profile 5 minutes. After using the upload calls
* FinalizeFileUploads must be called to move the file status from pending to live.
*/
interface InitiateFileUploadsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/** Names of the files to be set. Restricted to a-Z, 0-9, '(', ')', '_', '-' and '.' */
FileNames: string[];
/**
* The expected version of the profile, if set and doesn't match the current version of the profile the operation will not
* be performed.
*/
ProfileVersion?: number;
}
interface InitiateFileUploadsResponse {
/** The entity id and type. */
Entity?: EntityKey;
/** The current version of the profile, can be used for concurrency control during updates. */
ProfileVersion: number;
/** Collection of file names and upload urls */
UploadDetails?: InitiateFileUploadMetadata[];
}
interface ObjectResult {
/** Un-escaped JSON object, if EscapeObject false or default. */
DataObject?: any;
/** Escaped string JSON body of the object, if EscapeObject is true. */
EscapedDataObject?: string;
/** Name of the object. Restricted to a-Z, 0-9, '(', ')', '_', '-' and '.' */
ObjectName?: string;
}
type OperationTypes = "Created" | "Updated" | "Deleted" | "None";
interface SetObject {
/**
* Body of the object to be saved. If empty and DeleteObject is true object will be deleted if it exists, or no operation
* will occur if it does not exist. Only one of Object or EscapedDataObject fields may be used.
*/
DataObject?: any;
/** Flag to indicate that this object should be deleted. Both DataObject and EscapedDataObject must not be set as well. */
DeleteObject?: boolean;
/**
* Body of the object to be saved as an escaped JSON string. If empty and DeleteObject is true object will be deleted if it
* exists, or no operation will occur if it does not exist. Only one of DataObject or EscapedDataObject fields may be used.
*/
EscapedDataObject?: string;
/** Name of object. Restricted to a-Z, 0-9, '(', ')', '_', '-' and '.'. */
ObjectName: string;
}
interface SetObjectInfo {
/** Name of the object */
ObjectName?: string;
/** Optional reason to explain why the operation was the result that it was. */
OperationReason?: string;
/** Indicates which operation was completed, either Created, Updated, Deleted or None. */
SetResult?: OperationTypes;
}
/**
* Sets JSON objects on the requested entity profile. May include a version number to be used to perform optimistic
* concurrency operations during update. If the current version differs from the version in the request the request will be
* ignored. If no version is set on the request then the value will always be updated if the values differ. Using the
* version value does not guarantee a write though, ConcurrentEditError may still occur if multiple clients are attempting
* to update the same profile.
*/
interface SetObjectsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/**
* Optional field used for concurrency control. By specifying the previously returned value of ProfileVersion from
* GetProfile API, you can ensure that the object set will only be performed if the profile has not been updated by any
* other clients since the version you last loaded.
*/
ExpectedProfileVersion?: number;
/** Collection of objects to set on the profile. */
Objects: SetObject[];
}
interface SetObjectsResponse {
/** New version of the entity profile. */
ProfileVersion: number;
/** New version of the entity profile. */
SetResults?: SetObjectInfo[];
}
}
/** EventsAPI.Models as interfaces */
declare namespace PlayFabEventsModels {
/** Combined entity type and ID structure which uniquely identifies a single entity. */
interface EntityKey {
/** Unique ID of the entity. */
Id: string;
/** Entity type. See https://docs.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types */
Type?: string;
}
interface EventContents {
/**
* The optional custom tags associated with the event (e.g. build number, external trace identifiers, etc.). Before an
* event is written, this collection and the base request custom tags will be merged, but not overriden. This enables the
* caller to specify static tags and per event tags.
*/
CustomTags?: { [key: string]: string | null };
/** Entity associated with the event. If null, the event will apply to the calling entity. */
Entity?: EntityKey;
/** The namespace in which the event is defined. Allowed namespaces can vary by API. */
EventNamespace: string;
/** The name of this event. */
Name: string;
/**
* The original unique identifier associated with this event before it was posted to PlayFab. The value might differ from
* the EventId value, which is assigned when the event is received by the server.
*/
OriginalId?: string;
/**
* The time (in UTC) associated with this event when it occurred. If specified, this value is stored in the
* OriginalTimestamp property of the PlayStream event.
*/
OriginalTimestamp?: string;
/** Arbitrary data associated with the event. Only one of Payload or PayloadJSON is allowed. */
Payload?: any;
/**
* Arbitrary data associated with the event, represented as a JSON serialized string. Only one of Payload or PayloadJSON is
* allowed.
*/
PayloadJSON?: string;
}
interface WriteEventsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Collection of events to write to PlayStream. */
Events: EventContents[];
}
interface WriteEventsResponse {
/**
* The unique identifiers assigned by the server to the events, in the same order as the events in the request. Only
* returned if FlushToPlayStream option is true.
*/
AssignedEventIds?: string[];
}
}
/** GroupsAPI.Models as interfaces */
declare namespace PlayFabGroupsModels {
/**
* Accepts an outstanding invitation to to join a group if the invited entity is not blocked by the group. Nothing is
* returned in the case of success.
*/
interface AcceptGroupApplicationRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* Type of the entity to accept as. Must be the same entity as the claimant or an entity that is a child of the claimant
* entity.
*/
Entity: EntityKey;
/** The identifier of the group */
Group: EntityKey;
}
/**
* Accepts an outstanding invitation to join the group if the invited entity is not blocked by the group. Only the invited
* entity or a parent in its chain (e.g. title) may accept the invitation on the invited entity's behalf. Nothing is
* returned in the case of success.
*/
interface AcceptGroupInvitationRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity?: EntityKey;
/** The identifier of the group */
Group: EntityKey;
}
/**
* Adds members to a group or role. Existing members of the group will added to roles within the group, but if the user is
* not already a member of the group, only title claimants may add them to the group, and others must use the group
* application or invite system to add new members to a group. Returns nothing if successful.
*/
interface AddMembersRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The identifier of the group */
Group: EntityKey;
/** List of entities to add to the group. Only entities of type title_player_account and character may be added to groups. */
Members: EntityKey[];
/**
* Optional: The ID of the existing role to add the entities to. If this is not specified, the default member role for the
* group will be used. Role IDs must be between 1 and 64 characters long.
*/
RoleId?: string;
}
/**
* Creates an application to join a group. Calling this while a group application already exists will return the same
* application instead of an error and will not refresh the time before the application expires. By default, if the entity
* has an invitation to join the group outstanding, this will accept the invitation to join the group instead and return an
* error indicating such, rather than creating a duplicate application to join that will need to be cleaned up later.
* Returns information about the application or an error indicating an invitation was accepted instead.
*/
interface ApplyToGroupRequest {
/** Optional, default true. Automatically accept an outstanding invitation if one exists instead of creating an application */
AutoAcceptOutstandingInvite?: boolean;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity?: EntityKey;
/** The identifier of the group */
Group: EntityKey;
}
/** Describes an application to join a group */
interface ApplyToGroupResponse {
/** Type of entity that requested membership */
Entity?: EntityWithLineage;
/** When the application to join will expire and be deleted */
Expires: string;
/** ID of the group that the entity requesting membership to */
Group?: EntityKey;
}
/**
* Blocks a list of entities from joining a group. Blocked entities may not create new applications to join, be invited to
* join, accept an invitation, or have an application accepted. Failure due to being blocked does not clean up existing
* applications or invitations to the group. No data is returned in the case of success.
*/
interface BlockEntityRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/** The identifier of the group */
Group: EntityKey;
}
/**
* Changes the role membership of a list of entities from one role to another in in a single operation. The destination
* role must already exist. This is equivalent to adding the entities to the destination role and removing from the origin
* role. Returns nothing if successful.
*/
interface ChangeMemberRoleRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* The ID of the role that the entities will become a member of. This must be an existing role. Role IDs must be between 1
* and 64 characters long.
*/
DestinationRoleId?: string;
/** The identifier of the group */
Group: EntityKey;
/**
* List of entities to move between roles in the group. All entities in this list must be members of the group and origin
* role.
*/
Members: EntityKey[];
/** The ID of the role that the entities currently are a member of. Role IDs must be between 1 and 64 characters long. */
OriginRoleId: string;
}
/**
* Creates a new group, as well as administration and member roles, based off of a title's group template. Returns
* information about the group that was created.
*/
interface CreateGroupRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity?: EntityKey;
/** The name of the group. This is unique at the title level by default. */
GroupName: string;
}
interface CreateGroupResponse {
/** The ID of the administrator role for the group. */
AdminRoleId?: string;
/** The server date and time the group was created. */
Created: string;
/** The identifier of the group */
Group: EntityKey;
/** The name of the group. */
GroupName?: string;
/** The ID of the default member role for the group. */
MemberRoleId?: string;
/** The current version of the profile, can be used for concurrency control during updates. */
ProfileVersion: number;
/** The list of roles and names that belong to the group. */
Roles?: { [key: string]: string | null };
}
/**
* Creates a new role within an existing group, with no members. Both the role ID and role name must be unique within the
* group, but the name can be the same as the ID. The role ID is set at creation and cannot be changed. Returns information
* about the role that was created.
*/
interface CreateGroupRoleRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The identifier of the group */
Group: EntityKey;
/**
* The ID of the role. This must be unique within the group and cannot be changed. Role IDs must be between 1 and 64
* characters long.
*/
RoleId: string;
/**
* The name of the role. This must be unique within the group and can be changed later. Role names must be between 1 and
* 100 characters long
*/
RoleName: string;
}
interface CreateGroupRoleResponse {
/** The current version of the group profile, can be used for concurrency control during updates. */
ProfileVersion: number;
/** ID for the role */
RoleId?: string;
/** The name of the role */
RoleName?: string;
}
/**
* Deletes a group and all roles, invitations, join requests, and blocks associated with it. Permission to delete is only
* required the group itself to execute this action. The group and data cannot be cannot be recovered once removed, but any
* abuse reports about the group will remain. No data is returned in the case of success.
*/
interface DeleteGroupRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** ID of the group or role to remove */
Group: EntityKey;
}
/** Returns information about the role */
interface DeleteRoleRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The identifier of the group */
Group: EntityKey;
/** The ID of the role to delete. Role IDs must be between 1 and 64 characters long. */
RoleId?: string;
}
interface EmptyResponse {}
/** Combined entity type and ID structure which uniquely identifies a single entity. */
interface EntityKey {
/** Unique ID of the entity. */
Id: string;
/** Entity type. See https://docs.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types */
Type?: string;
}
interface EntityMemberRole {
/** The list of members in the role */
Members?: EntityWithLineage[];
/** The ID of the role. */
RoleId?: string;
/** The name of the role */
RoleName?: string;
}
/** Entity wrapper class that contains the entity key and the entities that make up the lineage of the entity. */
interface EntityWithLineage {
/** The entity key for the specified entity */
Key?: EntityKey;
/** Dictionary of entity keys for related entities. Dictionary key is entity type. */
Lineage?: { [key: string]: EntityKey };
}
/** Returns the ID, name, role list and other non-membership related information about a group. */
interface GetGroupRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The identifier of the group */
Group?: EntityKey;
/** The full name of the group */
GroupName?: string;
}
interface GetGroupResponse {
/** The ID of the administrator role for the group. */
AdminRoleId?: string;
/** The server date and time the group was created. */
Created: string;
/** The identifier of the group */
Group: EntityKey;
/** The name of the group. */
GroupName?: string;
/** The ID of the default member role for the group. */
MemberRoleId?: string;
/** The current version of the profile, can be used for concurrency control during updates. */
ProfileVersion: number;
/** The list of roles and names that belong to the group. */
Roles?: { [key: string]: string | null };
}
/** Describes an application to join a group */
interface GroupApplication {
/** Type of entity that requested membership */
Entity?: EntityWithLineage;
/** When the application to join will expire and be deleted */
Expires: string;
/** ID of the group that the entity requesting membership to */
Group?: EntityKey;
}
/** Describes an entity that is blocked from joining a group. */
interface GroupBlock {
/** The entity that is blocked */
Entity?: EntityWithLineage;
/** ID of the group that the entity is blocked from */
Group: EntityKey;
}
/** Describes an invitation to a group. */
interface GroupInvitation {
/** When the invitation will expire and be deleted */
Expires: string;
/** The group that the entity invited to */
Group?: EntityKey;
/** The entity that created the invitation */
InvitedByEntity?: EntityWithLineage;
/** The entity that is invited */
InvitedEntity?: EntityWithLineage;
/** ID of the role in the group to assign the user to. */
RoleId?: string;
}
/** Describes a group role */
interface GroupRole {
/** ID for the role */
RoleId?: string;
/** The name of the role */
RoleName?: string;
}
/** Describes a group and the roles that it contains */
interface GroupWithRoles {
/** ID for the group */
Group?: EntityKey;
/** The name of the group */
GroupName?: string;
/** The current version of the profile, can be used for concurrency control during updates. */
ProfileVersion: number;
/** The list of roles within the group */
Roles?: GroupRole[];
}
/**
* Invites a player to join a group, if they are not blocked by the group. An optional role can be provided to
* automatically assign the player to the role if they accept the invitation. By default, if the entity has an application
* to the group outstanding, this will accept the application instead and return an error indicating such, rather than
* creating a duplicate invitation to join that will need to be cleaned up later. Returns information about the new
* invitation or an error indicating an existing application to join was accepted.
*/
interface InviteToGroupRequest {
/** Optional, default true. Automatically accept an application if one exists instead of creating an invitation */
AutoAcceptOutstandingApplication?: boolean;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/** The identifier of the group */
Group: EntityKey;
/**
* Optional. ID of an existing a role in the group to assign the user to. The group's default member role is used if this
* is not specified. Role IDs must be between 1 and 64 characters long.
*/
RoleId?: string;
}
/** Describes an invitation to a group. */
interface InviteToGroupResponse {
/** When the invitation will expire and be deleted */
Expires: string;
/** The group that the entity invited to */
Group?: EntityKey;
/** The entity that created the invitation */
InvitedByEntity?: EntityWithLineage;
/** The entity that is invited */
InvitedEntity?: EntityWithLineage;
/** ID of the role in the group to assign the user to. */
RoleId?: string;
}
/**
* Checks to see if an entity is a member of a group or role within the group. A result indicating if the entity is a
* member of the group is returned, or a permission error if the caller does not have permission to read the group's member
* list.
*/
interface IsMemberRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/** The identifier of the group */
Group: EntityKey;
/**
* Optional: ID of the role to check membership of. Defaults to any role (that is, check to see if the entity is a member
* of the group in any capacity) if not specified.
*/
RoleId?: string;
}
interface IsMemberResponse {
/** A value indicating whether or not the entity is a member. */
IsMember: boolean;
}
/**
* Lists all outstanding requests to join a group. Returns a list of all requests to join, as well as when the request will
* expire. To get the group applications for a specific entity, use ListMembershipOpportunities.
*/
interface ListGroupApplicationsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The identifier of the group */
Group: EntityKey;
}
interface ListGroupApplicationsResponse {
/** The requested list of applications to the group. */
Applications?: GroupApplication[];
}
/** Lists all entities blocked from joining a group. A list of blocked entities is returned */
interface ListGroupBlocksRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The identifier of the group */
Group: EntityKey;
}
interface ListGroupBlocksResponse {
/** The requested list blocked entities. */
BlockedEntities?: GroupBlock[];
}
/**
* Lists all outstanding invitations for a group. Returns a list of entities that have been invited, as well as when the
* invitation will expire. To get the group invitations for a specific entity, use ListMembershipOpportunities.
*/
interface ListGroupInvitationsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The identifier of the group */
Group: EntityKey;
}
interface ListGroupInvitationsResponse {
/** The requested list of group invitations. */
Invitations?: GroupInvitation[];
}
/**
* Gets a list of members and the roles they belong to within the group. If the caller does not have permission to view the
* role, and the member is in no other role, the member is not displayed. Returns a list of entities that are members of
* the group.
*/
interface ListGroupMembersRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** ID of the group to list the members and roles for */
Group: EntityKey;
}
interface ListGroupMembersResponse {
/** The requested list of roles and member entity IDs. */
Members?: EntityMemberRole[];
}
/**
* Lists all outstanding group applications and invitations for an entity. Anyone may call this for any entity, but data
* will only be returned for the entity or a parent of that entity. To list invitations or applications for a group to
* check if a player is trying to join, use ListGroupInvitations and ListGroupApplications.
*/
interface ListMembershipOpportunitiesRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity?: EntityKey;
}
interface ListMembershipOpportunitiesResponse {
/** The requested list of group applications. */
Applications?: GroupApplication[];
/** The requested list of group invitations. */
Invitations?: GroupInvitation[];
}
/**
* Lists the groups and roles that an entity is a part of, checking to see if group and role metadata and memberships
* should be visible to the caller. If the entity is not in any roles that are visible to the caller, the group is not
* returned in the results, even if the caller otherwise has permission to see that the entity is a member of that group.
*/
interface ListMembershipRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity?: EntityKey;
}
interface ListMembershipResponse {
/** The list of groups */
Groups?: GroupWithRoles[];
}
type OperationTypes = "Created" | "Updated" | "Deleted" | "None";
/**
* Removes an existing application to join the group. This is used for both rejection of an application as well as
* withdrawing an application. The applying entity or a parent in its chain (e.g. title) may withdraw the application, and
* any caller with appropriate access in the group may reject an application. No data is returned in the case of success.
*/
interface RemoveGroupApplicationRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/** The identifier of the group */
Group: EntityKey;
}
/**
* Removes an existing invitation to join the group. This is used for both rejection of an invitation as well as rescinding
* an invitation. The invited entity or a parent in its chain (e.g. title) may reject the invitation by calling this
* method, and any caller with appropriate access in the group may rescind an invitation. No data is returned in the case
* of success.
*/
interface RemoveGroupInvitationRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/** The identifier of the group */
Group: EntityKey;
}
/**
* Removes members from a group. A member can always remove themselves from a group, regardless of permissions. Returns
* nothing if successful.
*/
interface RemoveMembersRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The identifier of the group */
Group: EntityKey;
/** List of entities to remove */
Members: EntityKey[];
/** The ID of the role to remove the entities from. */
RoleId?: string;
}
/** Unblocks a list of entities from joining a group. No data is returned in the case of success. */
interface UnblockEntityRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/** The identifier of the group */
Group: EntityKey;
}
/**
* Updates data about a group, such as the name or default member role. Returns information about whether the update was
* successful. Only title claimants may modify the administration role for a group.
*/
interface UpdateGroupRequest {
/** Optional: the ID of an existing role to set as the new administrator role for the group */
AdminRoleId?: string;
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* Optional field used for concurrency control. By specifying the previously returned value of ProfileVersion from the
* GetGroup API, you can ensure that the group data update will only be performed if the group has not been updated by any
* other clients since the version you last loaded.
*/
ExpectedProfileVersion?: number;
/** The identifier of the group */
Group: EntityKey;
/** Optional: the new name of the group */
GroupName?: string;
/** Optional: the ID of an existing role to set as the new member role for the group */
MemberRoleId?: string;
}
interface UpdateGroupResponse {
/** Optional reason to explain why the operation was the result that it was. */
OperationReason?: string;
/** New version of the group data. */
ProfileVersion: number;
/** Indicates which operation was completed, either Created, Updated, Deleted or None. */
SetResult?: OperationTypes;
}
/** Updates the role name. Returns information about whether the update was successful. */
interface UpdateGroupRoleRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* Optional field used for concurrency control. By specifying the previously returned value of ProfileVersion from the
* GetGroup API, you can ensure that the group data update will only be performed if the group has not been updated by any
* other clients since the version you last loaded.
*/
ExpectedProfileVersion?: number;
/** The identifier of the group */
Group: EntityKey;
/** ID of the role to update. Role IDs must be between 1 and 64 characters long. */
RoleId?: string;
/** The new name of the role */
RoleName: string;
}
interface UpdateGroupRoleResponse {
/** Optional reason to explain why the operation was the result that it was. */
OperationReason?: string;
/** New version of the role data. */
ProfileVersion: number;
/** Indicates which operation was completed, either Created, Updated, Deleted or None. */
SetResult?: OperationTypes;
}
}
/** ProfilesAPI.Models as interfaces */
declare namespace PlayFabProfilesModels {
type EffectType = "Allow" | "Deny";
/** An entity object and its associated meta data. */
interface EntityDataObject {
/** Un-escaped JSON object, if DataAsObject is true. */
DataObject?: any;
/** Escaped string JSON body of the object, if DataAsObject is default or false. */
EscapedDataObject?: string;
/** Name of this object. */
ObjectName?: string;
}
/** Combined entity type and ID structure which uniquely identifies a single entity. */
interface EntityKey {
/** Unique ID of the entity. */
Id: string;
/** Entity type. See https://docs.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types */
Type?: string;
}
interface EntityLineage {
/** The Character Id of the associated entity. */
CharacterId?: string;
/** The Group Id of the associated entity. */
GroupId?: string;
/** The Master Player Account Id of the associated entity. */
MasterPlayerAccountId?: string;
/** The Namespace Id of the associated entity. */
NamespaceId?: string;
/** The Title Id of the associated entity. */
TitleId?: string;
/** The Title Player Account Id of the associated entity. */
TitlePlayerAccountId?: string;
}
interface EntityPermissionStatement {
/** The action this statement effects. May be 'Read', 'Write' or '*' for both read and write. */
Action: string;
/** A comment about the statement. Intended solely for bookkeeping and debugging. */
Comment?: string;
/** Additional conditions to be applied for entity resources. */
Condition?: any;
/** The effect this statement will have. It may be either Allow or Deny */
Effect: EffectType;
/** The principal this statement will effect. */
Principal: any;
/** The resource this statements effects. Similar to 'pfrn:data--title![Title ID]/Profile/*' */
Resource: string;
}
interface EntityProfileBody {
/** Avatar URL for the entity. */
AvatarUrl?: string;
/** The creation time of this profile in UTC. */
Created: string;
/**
* The display name of the entity. This field may serve different purposes for different entity types. i.e.: for a title
* player account it could represent the display name of the player, whereas on a character it could be character's name.
*/
DisplayName?: string;
/** The entity id and type. */
Entity?: EntityKey;
/** The chain of responsibility for this entity. Use Lineage. */
EntityChain?: string;
/** The experiment variants of this profile. */
ExperimentVariants?: string[];
/** The files on this profile. */
Files?: { [key: string]: EntityProfileFileMetadata };
/** The language on this profile. */
Language?: string;
/** Leaderboard metadata for the entity. */
LeaderboardMetadata?: string;
/** The lineage of this profile. */
Lineage?: EntityLineage;
/** The objects on this profile. */
Objects?: { [key: string]: EntityDataObject };
/**
* The permissions that govern access to this entity profile and its properties. Only includes permissions set on this
* profile, not global statements from titles and namespaces.
*/
Permissions?: EntityPermissionStatement[];
/** The statistics on this profile. */
Statistics?: { [key: string]: EntityStatisticValue };
/**
* The version number of the profile in persistent storage at the time of the read. Used for optional optimistic
* concurrency during update.
*/
VersionNumber: number;
}
/** An entity file's meta data. To get a download URL call File/GetFiles API. */
interface EntityProfileFileMetadata {
/** Checksum value for the file, can be used to check if the file on the server has changed. */
Checksum?: string;
/** Name of the file */
FileName?: string;
/** Last UTC time the file was modified */
LastModified: string;
/** Storage service's reported byte count */
Size: number;
}
interface EntityStatisticChildValue {
/** Child name value, if child statistic */
ChildName?: string;
/** Child statistic metadata */
Metadata?: string;
/** Child statistic value */
Value: number;
}
interface EntityStatisticValue {
/** Child statistic values */
ChildStatistics?: { [key: string]: EntityStatisticChildValue };
/** Statistic metadata */
Metadata?: string;
/** Statistic name */
Name?: string;
/** Statistic value */
Value?: number;
/** Statistic version */
Version: number;
}
/**
* Given an entity type and entity identifier will retrieve the profile from the entity store. If the profile being
* retrieved is the caller's, then the read operation is consistent, if not it is an inconsistent read. An inconsistent
* read means that we do not guarantee all committed writes have occurred before reading the profile, allowing for a stale
* read. If consistency is important the Version Number on the result can be used to compare which version of the profile
* any reader has.
*/
interface GetEntityProfileRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* Determines whether the objects will be returned as an escaped JSON string or as a un-escaped JSON object. Default is
* JSON string.
*/
DataAsObject?: boolean;
/** The entity to perform this action on. */
Entity?: EntityKey;
}
interface GetEntityProfileResponse {
/** Entity profile */
Profile?: EntityProfileBody;
}
/**
* Given a set of entity types and entity identifiers will retrieve all readable profiles properties for the caller.
* Profiles that the caller is not allowed to read will silently not be included in the results.
*/
interface GetEntityProfilesRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/**
* Determines whether the objects will be returned as an escaped JSON string or as a un-escaped JSON object. Default is
* JSON string.
*/
DataAsObject?: boolean;
/** Entity keys of the profiles to load. Must be between 1 and 25 */
Entities: EntityKey[];
}
interface GetEntityProfilesResponse {
/** Entity profiles */
Profiles?: EntityProfileBody[];
}
/**
* Retrieves the title access policy that is used before the profile's policy is inspected during a request. If never
* customized this will return the default starter policy built by PlayFab.
*/
interface GetGlobalPolicyRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
}
interface GetGlobalPolicyResponse {
/** The permissions that govern access to all entities under this title or namespace. */
Permissions?: EntityPermissionStatement[];
}
/** Given a master player account id (PlayFab ID), returns all title player accounts associated with it. */
interface GetTitlePlayersFromMasterPlayerAccountIdsRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** Master player account ids. */
MasterPlayerAccountIds: string[];
/** Id of title to get players from. */
TitleId?: string;
}
interface GetTitlePlayersFromMasterPlayerAccountIdsResponse {
/** Optional id of title to get players from, required if calling using a master_player_account. */
TitleId?: string;
/** Dictionary of master player ids mapped to title player entity keys and id pairs */
TitlePlayerAccounts?: { [key: string]: EntityKey };
}
type OperationTypes = "Created" | "Updated" | "Deleted" | "None";
/**
* This will set the access policy statements on the given entity profile. This is not additive, any existing statements
* will be replaced with the statements in this request.
*/
interface SetEntityProfilePolicyRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity: EntityKey;
/** The statements to include in the access policy. */
Statements?: EntityPermissionStatement[];
}
interface SetEntityProfilePolicyResponse {
/**
* The permissions that govern access to this entity profile and its properties. Only includes permissions set on this
* profile, not global statements from titles and namespaces.
*/
Permissions?: EntityPermissionStatement[];
}
/**
* Updates the title access policy that is used before the profile's policy is inspected during a request. Policies are
* compiled and cached for several minutes so an update here may not be reflected in behavior for a short time.
*/
interface SetGlobalPolicyRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The permissions that govern access to all entities under this title or namespace. */
Permissions?: EntityPermissionStatement[];
}
interface SetGlobalPolicyResponse {}
/**
* Given an entity profile, will update its language to the one passed in if the profile's version is equal to the one
* passed in.
*/
interface SetProfileLanguageRequest {
/** The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). */
CustomTags?: { [key: string]: string | null };
/** The entity to perform this action on. */
Entity?: EntityKey;
/** The expected version of a profile to perform this update on */
ExpectedVersion?: number;
/** The language to set on the given entity. Deletes the profile's language if passed in a null string. */
Language?: string;
}
interface SetProfileLanguageResponse {
/** The type of operation that occured on the profile's language */
OperationResult?: OperationTypes;
/** The updated version of the profile after the language update */
VersionNumber?: number;
}
}
/** Entity interface methods */
interface IPlayFabEntityAPI {
/**
* Method to exchange a legacy AuthenticationTicket or title SecretKey for an Entity Token or to refresh a still valid
* Entity Token.
* https://docs.microsoft.com/rest/api/playfab/authentication/authentication/getentitytoken
*/
GetEntityToken(
request: PlayFabAuthenticationModels.GetEntityTokenRequest
): PlayFabAuthenticationModels.GetEntityTokenResponse;
/**
* Method for a server to validate a client provided EntityToken. Only callable by the title entity.
* https://docs.microsoft.com/rest/api/playfab/authentication/authentication/validateentitytoken
*/
ValidateEntityToken(
request: PlayFabAuthenticationModels.ValidateEntityTokenRequest
): PlayFabAuthenticationModels.ValidateEntityTokenResponse;
/**
* Abort pending file uploads to an entity's profile.
* https://docs.microsoft.com/rest/api/playfab/data/file/abortfileuploads
*/
AbortFileUploads(
request: PlayFabDataModels.AbortFileUploadsRequest
): PlayFabDataModels.AbortFileUploadsResponse;
/**
* Delete files on an entity's profile.
* https://docs.microsoft.com/rest/api/playfab/data/file/deletefiles
*/
DeleteFiles(
request: PlayFabDataModels.DeleteFilesRequest
): PlayFabDataModels.DeleteFilesResponse;
/**
* Finalize file uploads to an entity's profile.
* https://docs.microsoft.com/rest/api/playfab/data/file/finalizefileuploads
*/
FinalizeFileUploads(
request: PlayFabDataModels.FinalizeFileUploadsRequest
): PlayFabDataModels.FinalizeFileUploadsResponse;
/**
* Retrieves file metadata from an entity's profile.
* https://docs.microsoft.com/rest/api/playfab/data/file/getfiles
*/
GetFiles(
request: PlayFabDataModels.GetFilesRequest
): PlayFabDataModels.GetFilesResponse;
/**
* Retrieves objects from an entity's profile.
* https://docs.microsoft.com/rest/api/playfab/data/object/getobjects
*/
GetObjects(
request: PlayFabDataModels.GetObjectsRequest
): PlayFabDataModels.GetObjectsResponse;
/**
* Initiates file uploads to an entity's profile.
* https://docs.microsoft.com/rest/api/playfab/data/file/initiatefileuploads
*/
InitiateFileUploads(
request: PlayFabDataModels.InitiateFileUploadsRequest
): PlayFabDataModels.InitiateFileUploadsResponse;
/**
* Sets objects on an entity's profile.
* https://docs.microsoft.com/rest/api/playfab/data/object/setobjects
*/
SetObjects(
request: PlayFabDataModels.SetObjectsRequest
): PlayFabDataModels.SetObjectsResponse;
/**
* Write batches of entity based events to PlayStream. The namespace of the Event must be 'custom' or start with 'custom.'.
* https://docs.microsoft.com/rest/api/playfab/events/playstream-events/writeevents
*/
WriteEvents(
request: PlayFabEventsModels.WriteEventsRequest
): PlayFabEventsModels.WriteEventsResponse;
/**
* Write batches of entity based events to as Telemetry events (bypass PlayStream). The namespace must be 'custom' or start
* with 'custom.'
* https://docs.microsoft.com/rest/api/playfab/events/playstream-events/writetelemetryevents
*/
WriteTelemetryEvents(
request: PlayFabEventsModels.WriteEventsRequest
): PlayFabEventsModels.WriteEventsResponse;
/**
* Accepts an outstanding invitation to to join a group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/acceptgroupapplication
*/
AcceptGroupApplication(
request: PlayFabGroupsModels.AcceptGroupApplicationRequest
): PlayFabGroupsModels.EmptyResponse;
/**
* Accepts an invitation to join a group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/acceptgroupinvitation
*/
AcceptGroupInvitation(
request: PlayFabGroupsModels.AcceptGroupInvitationRequest
): PlayFabGroupsModels.EmptyResponse;
/**
* Adds members to a group or role.
* https://docs.microsoft.com/rest/api/playfab/groups/groups/addmembers
*/
AddMembers(
request: PlayFabGroupsModels.AddMembersRequest
): PlayFabGroupsModels.EmptyResponse;
/**
* Applies to join a group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/applytogroup
*/
ApplyToGroup(
request: PlayFabGroupsModels.ApplyToGroupRequest
): PlayFabGroupsModels.ApplyToGroupResponse;
/**
* Blocks a list of entities from joining a group.
* https://docs.microsoft.com/rest/api/playfab/groups/groups/blockentity
*/
BlockEntity(
request: PlayFabGroupsModels.BlockEntityRequest
): PlayFabGroupsModels.EmptyResponse;
/**
* Changes the role membership of a list of entities from one role to another.
* https://docs.microsoft.com/rest/api/playfab/groups/groups/changememberrole
*/
ChangeMemberRole(
request: PlayFabGroupsModels.ChangeMemberRoleRequest
): PlayFabGroupsModels.EmptyResponse;
/**
* Creates a new group.
* https://docs.microsoft.com/rest/api/playfab/groups/groups/creategroup
*/
CreateGroup(
request: PlayFabGroupsModels.CreateGroupRequest
): PlayFabGroupsModels.CreateGroupResponse;
/**
* Creates a new group role.
* https://docs.microsoft.com/rest/api/playfab/groups/groups/createrole
*/
CreateRole(
request: PlayFabGroupsModels.CreateGroupRoleRequest
): PlayFabGroupsModels.CreateGroupRoleResponse;
/**
* Deletes a group and all roles, invitations, join requests, and blocks associated with it.
* https://docs.microsoft.com/rest/api/playfab/groups/groups/deletegroup
*/
DeleteGroup(
request: PlayFabGroupsModels.DeleteGroupRequest
): PlayFabGroupsModels.EmptyResponse;
/**
* Deletes an existing role in a group.
* https://docs.microsoft.com/rest/api/playfab/groups/groups/deleterole
*/
DeleteRole(
request: PlayFabGroupsModels.DeleteRoleRequest
): PlayFabGroupsModels.EmptyResponse;
/**
* Gets information about a group and its roles
* https://docs.microsoft.com/rest/api/playfab/groups/groups/getgroup
*/
GetGroup(
request: PlayFabGroupsModels.GetGroupRequest
): PlayFabGroupsModels.GetGroupResponse;
/**
* Invites a player to join a group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/invitetogroup
*/
InviteToGroup(
request: PlayFabGroupsModels.InviteToGroupRequest
): PlayFabGroupsModels.InviteToGroupResponse;
/**
* Checks to see if an entity is a member of a group or role within the group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/ismember
*/
IsMember(
request: PlayFabGroupsModels.IsMemberRequest
): PlayFabGroupsModels.IsMemberResponse;
/**
* Lists all outstanding requests to join a group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/listgroupapplications
*/
ListGroupApplications(
request: PlayFabGroupsModels.ListGroupApplicationsRequest
): PlayFabGroupsModels.ListGroupApplicationsResponse;
/**
* Lists all entities blocked from joining a group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/listgroupblocks
*/
ListGroupBlocks(
request: PlayFabGroupsModels.ListGroupBlocksRequest
): PlayFabGroupsModels.ListGroupBlocksResponse;
/**
* Lists all outstanding invitations for a group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/listgroupinvitations
*/
ListGroupInvitations(
request: PlayFabGroupsModels.ListGroupInvitationsRequest
): PlayFabGroupsModels.ListGroupInvitationsResponse;
/**
* Lists all members for a group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/listgroupmembers
*/
ListGroupMembers(
request: PlayFabGroupsModels.ListGroupMembersRequest
): PlayFabGroupsModels.ListGroupMembersResponse;
/**
* Lists all groups and roles for an entity
* https://docs.microsoft.com/rest/api/playfab/groups/groups/listmembership
*/
ListMembership(
request: PlayFabGroupsModels.ListMembershipRequest
): PlayFabGroupsModels.ListMembershipResponse;
/**
* Lists all outstanding invitations and group applications for an entity
* https://docs.microsoft.com/rest/api/playfab/groups/groups/listmembershipopportunities
*/
ListMembershipOpportunities(
request: PlayFabGroupsModels.ListMembershipOpportunitiesRequest
): PlayFabGroupsModels.ListMembershipOpportunitiesResponse;
/**
* Removes an application to join a group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/removegroupapplication
*/
RemoveGroupApplication(
request: PlayFabGroupsModels.RemoveGroupApplicationRequest
): PlayFabGroupsModels.EmptyResponse;
/**
* Removes an invitation join a group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/removegroupinvitation
*/
RemoveGroupInvitation(
request: PlayFabGroupsModels.RemoveGroupInvitationRequest
): PlayFabGroupsModels.EmptyResponse;
/**
* Removes members from a group.
* https://docs.microsoft.com/rest/api/playfab/groups/groups/removemembers
*/
RemoveMembers(
request: PlayFabGroupsModels.RemoveMembersRequest
): PlayFabGroupsModels.EmptyResponse;
/**
* Unblocks a list of entities from joining a group
* https://docs.microsoft.com/rest/api/playfab/groups/groups/unblockentity
*/
UnblockEntity(
request: PlayFabGroupsModels.UnblockEntityRequest
): PlayFabGroupsModels.EmptyResponse;
/**
* Updates non-membership data about a group.
* https://docs.microsoft.com/rest/api/playfab/groups/groups/updategroup
*/
UpdateGroup(
request: PlayFabGroupsModels.UpdateGroupRequest
): PlayFabGroupsModels.UpdateGroupResponse;
/**
* Updates metadata about a role.
* https://docs.microsoft.com/rest/api/playfab/groups/groups/updaterole
*/
UpdateRole(
request: PlayFabGroupsModels.UpdateGroupRoleRequest
): PlayFabGroupsModels.UpdateGroupRoleResponse;
/**
* Gets the global title access policy
* https://docs.microsoft.com/rest/api/playfab/profiles/account-management/getglobalpolicy
*/
GetGlobalPolicy(
request: PlayFabProfilesModels.GetGlobalPolicyRequest
): PlayFabProfilesModels.GetGlobalPolicyResponse;
/**
* Retrieves the entity's profile.
* https://docs.microsoft.com/rest/api/playfab/profiles/account-management/getprofile
*/
GetProfile(
request: PlayFabProfilesModels.GetEntityProfileRequest
): PlayFabProfilesModels.GetEntityProfileResponse;
/**
* Retrieves the entity's profile.
* https://docs.microsoft.com/rest/api/playfab/profiles/account-management/getprofiles
*/
GetProfiles(
request: PlayFabProfilesModels.GetEntityProfilesRequest
): PlayFabProfilesModels.GetEntityProfilesResponse;
/**
* Retrieves the title player accounts associated with the given master player account.
* https://docs.microsoft.com/rest/api/playfab/profiles/account-management/gettitleplayersfrommasterplayeraccountids
*/
GetTitlePlayersFromMasterPlayerAccountIds(
request: PlayFabProfilesModels.GetTitlePlayersFromMasterPlayerAccountIdsRequest
): PlayFabProfilesModels.GetTitlePlayersFromMasterPlayerAccountIdsResponse;
/**
* Sets the global title access policy
* https://docs.microsoft.com/rest/api/playfab/profiles/account-management/setglobalpolicy
*/
SetGlobalPolicy(
request: PlayFabProfilesModels.SetGlobalPolicyRequest
): PlayFabProfilesModels.SetGlobalPolicyResponse;
/**
* Updates the entity's language. The precedence hierarchy for communication to the player is Title Player Account
* language, Master Player Account language, and then title default language if the first two aren't set or supported.
* https://docs.microsoft.com/rest/api/playfab/profiles/account-management/setprofilelanguage
*/
SetProfileLanguage(
request: PlayFabProfilesModels.SetProfileLanguageRequest
): PlayFabProfilesModels.SetProfileLanguageResponse;
/**
* Sets the profiles access policy
* https://docs.microsoft.com/rest/api/playfab/profiles/account-management/setprofilepolicy
*/
SetProfilePolicy(
request: PlayFabProfilesModels.SetEntityProfilePolicyRequest
): PlayFabProfilesModels.SetEntityProfilePolicyResponse;
}