#if !DISABLE_PLAYFABENTITY_API using System; using System.Collections.Generic; using PlayFab.SharedModels; namespace PlayFab.CloudScriptModels { [Serializable] public class AdCampaignAttributionModel : PlayFabBaseModel { /// <summary> /// UTC time stamp of attribution /// </summary> public DateTime AttributedAt; /// <summary> /// Attribution campaign identifier /// </summary> public string CampaignId; /// <summary> /// Attribution network name /// </summary> public string Platform; } public enum CloudScriptRevisionOption { Live, Latest, Specific } [Serializable] public class ContactEmailInfoModel : PlayFabBaseModel { /// <summary> /// The email address /// </summary> public string EmailAddress; /// <summary> /// The name of the email info data /// </summary> public string Name; /// <summary> /// The verification status of the email /// </summary> public EmailVerificationStatus? VerificationStatus; } public enum ContinentCode { AF, AN, AS, EU, NA, OC, SA, Unknown } public enum CountryCode { AF, AX, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, BQ, BA, BW, BV, BR, IO, BN, BG, BF, BI, KH, CM, CA, CV, KY, CF, TD, CL, CN, CX, CC, CO, KM, CG, CD, CK, CR, CI, HR, CU, CW, CY, CZ, DK, DJ, DM, DO, EC, EG, SV, GQ, ER, EE, ET, FK, FO, FJ, FI, FR, GF, PF, TF, GA, GM, GE, DE, GH, GI, GR, GL, GD, GP, GU, GT, GG, GN, GW, GY, HT, HM, VA, HN, HK, HU, IS, IN, ID, IR, IQ, IE, IM, IL, IT, JM, JP, JE, JO, KZ, KE, KI, KP, KR, KW, KG, LA, LV, LB, LS, LR, LY, LI, LT, LU, MO, MK, MG, MW, MY, MV, ML, MT, MH, MQ, MR, MU, YT, MX, FM, MD, MC, MN, ME, MS, MA, MZ, MM, NA, NR, NP, NL, NC, NZ, NI, NE, NG, NU, NF, MP, NO, OM, PK, PW, PS, PA, PG, PY, PE, PH, PN, PL, PT, PR, QA, RE, RO, RU, RW, BL, SH, KN, LC, MF, PM, VC, WS, SM, ST, SA, SN, RS, SC, SL, SG, SX, SK, SI, SB, SO, ZA, GS, SS, ES, LK, SD, SR, SJ, SZ, SE, CH, SY, TW, TJ, TZ, TH, TL, TG, TK, TO, TT, TN, TR, TM, TC, TV, UG, UA, AE, GB, US, UM, UY, UZ, VU, VE, VN, VG, VI, WF, EH, YE, ZM, ZW, Unknown } public enum EmailVerificationStatus { Unverified, Pending, Confirmed } [Serializable] public class EmptyResult : PlayFabResultCommon { } /// <summary> /// Combined entity type and ID structure which uniquely identifies a single entity. /// </summary> [Serializable] public class EntityKey : PlayFabBaseModel { /// <summary> /// Unique ID of the entity. /// </summary> public string Id; /// <summary> /// Entity type. See https://docs.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types /// </summary> public string Type; } [Serializable] public class EventHubFunctionModel : PlayFabBaseModel { /// <summary> /// The connection string for the event hub. /// </summary> public string ConnectionString; /// <summary> /// The name of the event hub that triggers the Azure Function. /// </summary> public string EventHubName; /// <summary> /// The name the function was registered under. /// </summary> public string FunctionName; } [Serializable] public class ExecuteCloudScriptResult : PlayFabResultCommon { /// <summary> /// Number of PlayFab API requests issued by the CloudScript function /// </summary> public int APIRequestsIssued; /// <summary> /// Information about the error, if any, that occurred during execution /// </summary> public ScriptExecutionError Error; public double ExecutionTimeSeconds; /// <summary> /// The name of the function that executed /// </summary> public string FunctionName; /// <summary> /// The object returned from the CloudScript function, if any /// </summary> public object FunctionResult; /// <summary> /// Flag indicating if the FunctionResult was too large and was subsequently dropped from this event. This only occurs if /// the total event size is larger than 350KB. /// </summary> public bool? FunctionResultTooLarge; /// <summary> /// Number of external HTTP requests issued by the CloudScript function /// </summary> public int HttpRequestsIssued; /// <summary> /// Entries logged during the function execution. These include both entries logged in the function code using log.info() /// and log.error() and error entries for API and HTTP request failures. /// </summary> public List<LogStatement> Logs; /// <summary> /// Flag indicating if the logs were too large and were subsequently dropped from this event. This only occurs if the total /// event size is larger than 350KB after the FunctionResult was removed. /// </summary> public bool? LogsTooLarge; public uint MemoryConsumedBytes; /// <summary> /// Processor time consumed while executing the function. This does not include time spent waiting on API calls or HTTP /// requests. /// </summary> public double ProcessorTimeSeconds; /// <summary> /// The revision of the CloudScript that executed /// </summary> public int Revision; } /// <summary> /// Executes CloudScript with the entity profile that is defined in the request. /// </summary> [Serializable] public class ExecuteEntityCloudScriptRequest : PlayFabRequestCommon { /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; /// <summary> /// The optional entity to perform this action on. Defaults to the currently logged in entity. /// </summary> public EntityKey Entity; /// <summary> /// The name of the CloudScript function to execute /// </summary> public string FunctionName; /// <summary> /// Object that is passed in to the function as the first argument /// </summary> public object FunctionParameter; /// <summary> /// Generate a 'entity_executed_cloudscript' PlayStream event containing the results of the function execution and other /// contextual information. This event will show up in the PlayStream debugger console for the player in Game Manager. /// </summary> public bool? GeneratePlayStreamEvent; /// <summary> /// Option for which revision of the CloudScript to execute. 'Latest' executes the most recently created revision, 'Live' /// executes the current live, published revision, and 'Specific' executes the specified revision. The default value is /// 'Specific', if the SpecificRevision parameter is specified, otherwise it is 'Live'. /// </summary> public CloudScriptRevisionOption? RevisionSelection; /// <summary> /// The specific revision to execute, when RevisionSelection is set to 'Specific' /// </summary> public int? SpecificRevision; } /// <summary> /// Executes an Azure Function with the profile of the entity that is defined in the request. /// </summary> [Serializable] public class ExecuteFunctionRequest : PlayFabRequestCommon { /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; /// <summary> /// The optional entity to perform this action on. Defaults to the currently logged in entity. /// </summary> public EntityKey Entity; /// <summary> /// The name of the CloudScript function to execute /// </summary> public string FunctionName; /// <summary> /// Object that is passed in to the function as the FunctionArgument field of the FunctionExecutionContext data structure /// </summary> public object FunctionParameter; /// <summary> /// Generate a 'entity_executed_cloudscript_function' PlayStream event containing the results of the function execution and /// other contextual information. This event will show up in the PlayStream debugger console for the player in Game Manager. /// </summary> public bool? GeneratePlayStreamEvent; } [Serializable] public class ExecuteFunctionResult : PlayFabResultCommon { /// <summary> /// Error from the CloudScript Azure Function. /// </summary> public FunctionExecutionError Error; /// <summary> /// The amount of time the function took to execute /// </summary> public int ExecutionTimeMilliseconds; /// <summary> /// The name of the function that executed /// </summary> public string FunctionName; /// <summary> /// The object returned from the function, if any /// </summary> public object FunctionResult; /// <summary> /// Flag indicating if the FunctionResult was too large and was subsequently dropped from this event. /// </summary> public bool? FunctionResultTooLarge; } [Serializable] public class FunctionExecutionError : PlayFabBaseModel { /// <summary> /// Error code, such as CloudScriptAzureFunctionsExecutionTimeLimitExceeded, CloudScriptAzureFunctionsArgumentSizeExceeded, /// CloudScriptAzureFunctionsReturnSizeExceeded or CloudScriptAzureFunctionsHTTPRequestError /// </summary> public string Error; /// <summary> /// Details about the error /// </summary> public string Message; /// <summary> /// Point during the execution of the function at which the error occurred, if any /// </summary> public string StackTrace; } [Serializable] public class FunctionModel : PlayFabBaseModel { /// <summary> /// The address of the function. /// </summary> public string FunctionAddress; /// <summary> /// The name the function was registered under. /// </summary> public string FunctionName; /// <summary> /// The trigger type for the function. /// </summary> public string TriggerType; } [Serializable] public class GetFunctionRequest : PlayFabRequestCommon { /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; /// <summary> /// The name of the function to register /// </summary> public string FunctionName; } [Serializable] public class GetFunctionResult : PlayFabResultCommon { /// <summary> /// The connection string for the storage account containing the queue for a queue trigger Azure Function. /// </summary> public string ConnectionString; /// <summary> /// The URL to be invoked to execute an HTTP triggered function. /// </summary> public string FunctionUrl; /// <summary> /// The name of the queue for a queue trigger Azure Function. /// </summary> public string QueueName; /// <summary> /// The trigger type for the function. /// </summary> public string TriggerType; } [Serializable] public class HttpFunctionModel : PlayFabBaseModel { /// <summary> /// The name the function was registered under. /// </summary> public string FunctionName; /// <summary> /// The URL of the function. /// </summary> public string FunctionUrl; } [Serializable] public class LinkedPlatformAccountModel : PlayFabBaseModel { /// <summary> /// Linked account email of the user on the platform, if available /// </summary> public string Email; /// <summary> /// Authentication platform /// </summary> public LoginIdentityProvider? Platform; /// <summary> /// Unique account identifier of the user on the platform /// </summary> public string PlatformUserId; /// <summary> /// Linked account username of the user on the platform, if available /// </summary> public string Username; } [Serializable] public class ListEventHubFunctionsResult : PlayFabResultCommon { /// <summary> /// The list of EventHub triggered functions that are currently registered for the title. /// </summary> public List<EventHubFunctionModel> Functions; } /// <summary> /// A title can have many functions, ListHttpFunctions will return a list of all the currently registered HTTP triggered /// functions for a given title. /// </summary> [Serializable] public class ListFunctionsRequest : PlayFabRequestCommon { /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; } [Serializable] public class ListFunctionsResult : PlayFabResultCommon { /// <summary> /// The list of functions that are currently registered for the title. /// </summary> public List<FunctionModel> Functions; } [Serializable] public class ListHttpFunctionsResult : PlayFabResultCommon { /// <summary> /// The list of HTTP triggered functions that are currently registered for the title. /// </summary> public List<HttpFunctionModel> Functions; } [Serializable] public class ListQueuedFunctionsResult : PlayFabResultCommon { /// <summary> /// The list of Queue triggered functions that are currently registered for the title. /// </summary> public List<QueuedFunctionModel> Functions; } [Serializable] public class LocationModel : PlayFabBaseModel { /// <summary> /// City name. /// </summary> public string City; /// <summary> /// The two-character continent code for this location /// </summary> public ContinentCode? ContinentCode; /// <summary> /// The two-character ISO 3166-1 country code for the country associated with the location /// </summary> public CountryCode? CountryCode; /// <summary> /// Latitude coordinate of the geographic location. /// </summary> public double? Latitude; /// <summary> /// Longitude coordinate of the geographic location. /// </summary> public double? Longitude; } public enum LoginIdentityProvider { Unknown, PlayFab, Custom, GameCenter, GooglePlay, Steam, XBoxLive, PSN, Kongregate, Facebook, IOSDevice, AndroidDevice, Twitch, WindowsHello, GameServer, CustomServer, NintendoSwitch, FacebookInstantGames, OpenIdConnect, Apple, NintendoSwitchAccount, GooglePlayGames, XboxMobileStore, King } [Serializable] public class LogStatement : PlayFabBaseModel { /// <summary> /// Optional object accompanying the message as contextual information /// </summary> public object Data; /// <summary> /// 'Debug', 'Info', or 'Error' /// </summary> public string Level; public string Message; } [Serializable] public class MembershipModel : PlayFabBaseModel { /// <summary> /// Whether this membership is active. That is, whether the MembershipExpiration time has been reached. /// </summary> public bool IsActive; /// <summary> /// The time this membership expires /// </summary> public DateTime MembershipExpiration; /// <summary> /// The id of the membership /// </summary> public string MembershipId; /// <summary> /// Membership expirations can be explicitly overridden (via game manager or the admin api). If this membership has been /// overridden, this will be the new expiration time. /// </summary> public DateTime? OverrideExpiration; /// <summary> /// The list of subscriptions that this player has for this membership /// </summary> public List<SubscriptionModel> Subscriptions; } /// <summary> /// Identifier by either name or ID. Note that a name may change due to renaming, or reused after being deleted. ID is /// immutable and unique. /// </summary> [Serializable] public class NameIdentifier : PlayFabBaseModel { /// <summary> /// Id Identifier, if present /// </summary> public string Id; /// <summary> /// Name Identifier, if present /// </summary> public string Name; } [Serializable] public class PlayerProfileModel : PlayFabBaseModel { /// <summary> /// List of advertising campaigns the player has been attributed to /// </summary> public List<AdCampaignAttributionModel> AdCampaignAttributions; /// <summary> /// URL of the player's avatar image /// </summary> public string AvatarUrl; /// <summary> /// If the player is currently banned, the UTC Date when the ban expires /// </summary> public DateTime? BannedUntil; /// <summary> /// List of all contact email info associated with the player account /// </summary> public List<ContactEmailInfoModel> ContactEmailAddresses; /// <summary> /// Player record created /// </summary> public DateTime? Created; /// <summary> /// Player display name /// </summary> public string DisplayName; /// <summary> /// List of experiment variants for the player. Note that these variants are not guaranteed to be up-to-date when returned /// during login because the player profile is updated only after login. Instead, use the LoginResult.TreatmentAssignment /// property during login to get the correct variants and variables. /// </summary> public List<string> ExperimentVariants; /// <summary> /// UTC time when the player most recently logged in to the title /// </summary> public DateTime? LastLogin; /// <summary> /// List of all authentication systems linked to this player account /// </summary> public List<LinkedPlatformAccountModel> LinkedAccounts; /// <summary> /// List of geographic locations from which the player has logged in to the title /// </summary> public List<LocationModel> Locations; /// <summary> /// List of memberships for the player, along with whether are expired. /// </summary> public List<MembershipModel> Memberships; /// <summary> /// Player account origination /// </summary> public LoginIdentityProvider? Origination; /// <summary> /// PlayFab player account unique identifier /// </summary> public string PlayerId; /// <summary> /// Publisher this player belongs to /// </summary> public string PublisherId; /// <summary> /// List of configured end points registered for sending the player push notifications /// </summary> public List<PushNotificationRegistrationModel> PushNotificationRegistrations; /// <summary> /// List of leaderboard statistic values for the player /// </summary> public List<StatisticModel> Statistics; /// <summary> /// List of player's tags for segmentation /// </summary> public List<TagModel> Tags; /// <summary> /// Title ID this player profile applies to /// </summary> public string TitleId; /// <summary> /// Sum of the player's purchases made with real-money currencies, converted to US dollars equivalent and represented as a /// whole number of cents (1/100 USD). For example, 999 indicates nine dollars and ninety-nine cents. /// </summary> public uint? TotalValueToDateInUSD; /// <summary> /// List of the player's lifetime purchase totals, summed by real-money currency /// </summary> public List<ValueToDateModel> ValuesToDate; } [Serializable] public class PlayStreamEventEnvelopeModel : PlayFabBaseModel { /// <summary> /// The ID of the entity the event is about. /// </summary> public string EntityId; /// <summary> /// The type of the entity the event is about. /// </summary> public string EntityType; /// <summary> /// Data specific to this event. /// </summary> public string EventData; /// <summary> /// The name of the event. /// </summary> public string EventName; /// <summary> /// The namespace of the event. /// </summary> public string EventNamespace; /// <summary> /// Settings for the event. /// </summary> public string EventSettings; } [Serializable] public class PostFunctionResultForEntityTriggeredActionRequest : PlayFabRequestCommon { /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; /// <summary> /// The entity to perform this action on. /// </summary> public EntityKey Entity; /// <summary> /// The result of the function execution. /// </summary> public ExecuteFunctionResult FunctionResult; } [Serializable] public class PostFunctionResultForFunctionExecutionRequest : PlayFabRequestCommon { /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; /// <summary> /// The entity to perform this action on. /// </summary> public EntityKey Entity; /// <summary> /// The result of the function execution. /// </summary> public ExecuteFunctionResult FunctionResult; } [Serializable] public class PostFunctionResultForPlayerTriggeredActionRequest : PlayFabRequestCommon { /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; /// <summary> /// The result of the function execution. /// </summary> public ExecuteFunctionResult FunctionResult; /// <summary> /// The player profile the function was invoked with. /// </summary> public PlayerProfileModel PlayerProfile; /// <summary> /// The triggering PlayStream event, if any, that caused the function to be invoked. /// </summary> public PlayStreamEventEnvelopeModel PlayStreamEventEnvelope; } [Serializable] public class PostFunctionResultForScheduledTaskRequest : PlayFabRequestCommon { /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; /// <summary> /// The result of the function execution /// </summary> public ExecuteFunctionResult FunctionResult; /// <summary> /// The id of the scheduled task that invoked the function. /// </summary> public NameIdentifier ScheduledTaskId; } public enum PushNotificationPlatform { ApplePushNotificationService, GoogleCloudMessaging } [Serializable] public class PushNotificationRegistrationModel : PlayFabBaseModel { /// <summary> /// Notification configured endpoint /// </summary> public string NotificationEndpointARN; /// <summary> /// Push notification platform /// </summary> public PushNotificationPlatform? Platform; } [Serializable] public class QueuedFunctionModel : PlayFabBaseModel { /// <summary> /// The connection string for the Azure Storage Account that hosts the queue. /// </summary> public string ConnectionString; /// <summary> /// The name the function was registered under. /// </summary> public string FunctionName; /// <summary> /// The name of the queue that triggers the Azure Function. /// </summary> public string QueueName; } /// <summary> /// A title can have many functions, RegisterEventHubFunction associates a function name with an event hub name and /// connection string. /// </summary> [Serializable] public class RegisterEventHubFunctionRequest : PlayFabRequestCommon { /// <summary> /// A connection string for the namespace of the event hub for the Azure Function. /// </summary> public string ConnectionString; /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; /// <summary> /// The name of the event hub for the Azure Function. /// </summary> public string EventHubName; /// <summary> /// The name of the function to register /// </summary> public string FunctionName; } [Serializable] public class RegisterHttpFunctionRequest : PlayFabRequestCommon { /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; /// <summary> /// The name of the function to register /// </summary> public string FunctionName; /// <summary> /// Full URL for Azure Function that implements the function. /// </summary> public string FunctionUrl; } /// <summary> /// A title can have many functions, RegisterQueuedFunction associates a function name with a queue name and connection /// string. /// </summary> [Serializable] public class RegisterQueuedFunctionRequest : PlayFabRequestCommon { /// <summary> /// A connection string for the storage account that hosts the queue for the Azure Function. /// </summary> public string ConnectionString; /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; /// <summary> /// The name of the function to register /// </summary> public string FunctionName; /// <summary> /// The name of the queue for the Azure Function. /// </summary> public string QueueName; } [Serializable] public class ScriptExecutionError : PlayFabBaseModel { /// <summary> /// Error code, such as CloudScriptNotFound, JavascriptException, CloudScriptFunctionArgumentSizeExceeded, /// CloudScriptAPIRequestCountExceeded, CloudScriptAPIRequestError, or CloudScriptHTTPRequestError /// </summary> public string Error; /// <summary> /// Details about the error /// </summary> public string Message; /// <summary> /// Point during the execution of the script at which the error occurred, if any /// </summary> public string StackTrace; } [Serializable] public class StatisticModel : PlayFabBaseModel { /// <summary> /// Statistic name /// </summary> public string Name; /// <summary> /// Statistic value /// </summary> public int Value; /// <summary> /// Statistic version (0 if not a versioned statistic) /// </summary> public int Version; } [Serializable] public class SubscriptionModel : PlayFabBaseModel { /// <summary> /// When this subscription expires. /// </summary> public DateTime Expiration; /// <summary> /// The time the subscription was orignially purchased /// </summary> public DateTime InitialSubscriptionTime; /// <summary> /// Whether this subscription is currently active. That is, if Expiration > now. /// </summary> public bool IsActive; /// <summary> /// The status of this subscription, according to the subscription provider. /// </summary> public SubscriptionProviderStatus? Status; /// <summary> /// The id for this subscription /// </summary> public string SubscriptionId; /// <summary> /// The item id for this subscription from the primary catalog /// </summary> public string SubscriptionItemId; /// <summary> /// The provider for this subscription. Apple or Google Play are supported today. /// </summary> public string SubscriptionProvider; } public enum SubscriptionProviderStatus { NoError, Cancelled, UnknownError, BillingError, ProductUnavailable, CustomerDidNotAcceptPriceChange, FreeTrial, PaymentPending } [Serializable] public class TagModel : PlayFabBaseModel { /// <summary> /// Full value of the tag, including namespace /// </summary> public string TagValue; } public enum TriggerType { HTTP, Queue, EventHub } [Serializable] public class UnregisterFunctionRequest : PlayFabRequestCommon { /// <summary> /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). /// </summary> public Dictionary<string,string> CustomTags; /// <summary> /// The name of the function to register /// </summary> public string FunctionName; } [Serializable] public class ValueToDateModel : PlayFabBaseModel { /// <summary> /// ISO 4217 code of the currency used in the purchases /// </summary> public string Currency; /// <summary> /// Total value of the purchases in a whole number of 1/100 monetary units. For example, 999 indicates nine dollars and /// ninety-nine cents when Currency is 'USD') /// </summary> public uint TotalValue; /// <summary> /// Total value of the purchases in a string representation of decimal monetary units. For example, '9.99' indicates nine /// dollars and ninety-nine cents when Currency is 'USD'. /// </summary> public string TotalValueAsDecimal; } } #endif