You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
509 lines
18 KiB
C#
509 lines
18 KiB
C#
#if !DISABLE_PLAYFABENTITY_API
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using PlayFab.SharedModels;
|
|
|
|
namespace PlayFab.ProfilesModels
|
|
{
|
|
public enum EffectType
|
|
{
|
|
Allow,
|
|
Deny
|
|
}
|
|
|
|
/// <summary>
|
|
/// An entity object and its associated meta data.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class EntityDataObject : PlayFabBaseModel
|
|
{
|
|
/// <summary>
|
|
/// Un-escaped JSON object, if DataAsObject is true.
|
|
/// </summary>
|
|
public object DataObject;
|
|
/// <summary>
|
|
/// Escaped string JSON body of the object, if DataAsObject is default or false.
|
|
/// </summary>
|
|
public string EscapedDataObject;
|
|
/// <summary>
|
|
/// Name of this object.
|
|
/// </summary>
|
|
public string ObjectName;
|
|
}
|
|
|
|
/// <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 EntityLineage : PlayFabBaseModel
|
|
{
|
|
/// <summary>
|
|
/// The Character Id of the associated entity.
|
|
/// </summary>
|
|
public string CharacterId;
|
|
/// <summary>
|
|
/// The Group Id of the associated entity.
|
|
/// </summary>
|
|
public string GroupId;
|
|
/// <summary>
|
|
/// The Master Player Account Id of the associated entity.
|
|
/// </summary>
|
|
public string MasterPlayerAccountId;
|
|
/// <summary>
|
|
/// The Namespace Id of the associated entity.
|
|
/// </summary>
|
|
public string NamespaceId;
|
|
/// <summary>
|
|
/// The Title Id of the associated entity.
|
|
/// </summary>
|
|
public string TitleId;
|
|
/// <summary>
|
|
/// The Title Player Account Id of the associated entity.
|
|
/// </summary>
|
|
public string TitlePlayerAccountId;
|
|
}
|
|
|
|
[Serializable]
|
|
public class EntityPermissionStatement : PlayFabBaseModel
|
|
{
|
|
/// <summary>
|
|
/// The action this statement effects. May be 'Read', 'Write' or '*' for both read and write.
|
|
/// </summary>
|
|
public string Action;
|
|
/// <summary>
|
|
/// A comment about the statement. Intended solely for bookkeeping and debugging.
|
|
/// </summary>
|
|
public string Comment;
|
|
/// <summary>
|
|
/// Additional conditions to be applied for entity resources.
|
|
/// </summary>
|
|
public object Condition;
|
|
/// <summary>
|
|
/// The effect this statement will have. It may be either Allow or Deny
|
|
/// </summary>
|
|
public EffectType Effect;
|
|
/// <summary>
|
|
/// The principal this statement will effect.
|
|
/// </summary>
|
|
public object Principal;
|
|
/// <summary>
|
|
/// The resource this statements effects. Similar to 'pfrn:data--title![Title ID]/Profile/*'
|
|
/// </summary>
|
|
public string Resource;
|
|
}
|
|
|
|
[Serializable]
|
|
public class EntityProfileBody : PlayFabBaseModel
|
|
{
|
|
/// <summary>
|
|
/// Avatar URL for the entity.
|
|
/// </summary>
|
|
public string AvatarUrl;
|
|
/// <summary>
|
|
/// The creation time of this profile in UTC.
|
|
/// </summary>
|
|
public DateTime Created;
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public string DisplayName;
|
|
/// <summary>
|
|
/// The entity id and type.
|
|
/// </summary>
|
|
public EntityKey Entity;
|
|
/// <summary>
|
|
/// The chain of responsibility for this entity. Use Lineage.
|
|
/// </summary>
|
|
public string EntityChain;
|
|
/// <summary>
|
|
/// The experiment variants of this profile.
|
|
/// </summary>
|
|
public List<string> ExperimentVariants;
|
|
/// <summary>
|
|
/// The files on this profile.
|
|
/// </summary>
|
|
public Dictionary<string,EntityProfileFileMetadata> Files;
|
|
/// <summary>
|
|
/// The language on this profile.
|
|
/// </summary>
|
|
public string Language;
|
|
/// <summary>
|
|
/// The lineage of this profile.
|
|
/// </summary>
|
|
public EntityLineage Lineage;
|
|
/// <summary>
|
|
/// The objects on this profile.
|
|
/// </summary>
|
|
public Dictionary<string,EntityDataObject> Objects;
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public List<EntityPermissionStatement> Permissions;
|
|
/// <summary>
|
|
/// The statistics on this profile.
|
|
/// </summary>
|
|
public Dictionary<string,EntityStatisticValue> Statistics;
|
|
/// <summary>
|
|
/// The version number of the profile in persistent storage at the time of the read. Used for optional optimistic
|
|
/// concurrency during update.
|
|
/// </summary>
|
|
public int VersionNumber;
|
|
}
|
|
|
|
/// <summary>
|
|
/// An entity file's meta data. To get a download URL call File/GetFiles API.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class EntityProfileFileMetadata : PlayFabBaseModel
|
|
{
|
|
/// <summary>
|
|
/// Checksum value for the file, can be used to check if the file on the server has changed.
|
|
/// </summary>
|
|
public string Checksum;
|
|
/// <summary>
|
|
/// Name of the file
|
|
/// </summary>
|
|
public string FileName;
|
|
/// <summary>
|
|
/// Last UTC time the file was modified
|
|
/// </summary>
|
|
public DateTime LastModified;
|
|
/// <summary>
|
|
/// Storage service's reported byte count
|
|
/// </summary>
|
|
public int Size;
|
|
}
|
|
|
|
[Serializable]
|
|
public class EntityStatisticValue : PlayFabBaseModel
|
|
{
|
|
/// <summary>
|
|
/// Metadata associated with the Statistic.
|
|
/// </summary>
|
|
public string Metadata;
|
|
/// <summary>
|
|
/// Statistic name
|
|
/// </summary>
|
|
public string Name;
|
|
/// <summary>
|
|
/// Statistic scores
|
|
/// </summary>
|
|
public List<string> Scores;
|
|
/// <summary>
|
|
/// Statistic version
|
|
/// </summary>
|
|
public int Version;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class GetEntityProfileRequest : 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>
|
|
/// Determines whether the objects will be returned as an escaped JSON string or as a un-escaped JSON object. Default is
|
|
/// JSON string.
|
|
/// </summary>
|
|
public bool? DataAsObject;
|
|
/// <summary>
|
|
/// The optional entity to perform this action on. Defaults to the currently logged in entity.
|
|
/// </summary>
|
|
public EntityKey Entity;
|
|
}
|
|
|
|
[Serializable]
|
|
public class GetEntityProfileResponse : PlayFabResultCommon
|
|
{
|
|
/// <summary>
|
|
/// Entity profile
|
|
/// </summary>
|
|
public EntityProfileBody Profile;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class GetEntityProfilesRequest : 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>
|
|
/// Determines whether the objects will be returned as an escaped JSON string or as a un-escaped JSON object. Default is
|
|
/// JSON string.
|
|
/// </summary>
|
|
public bool? DataAsObject;
|
|
/// <summary>
|
|
/// Entity keys of the profiles to load. Must be between 1 and 25
|
|
/// </summary>
|
|
public List<EntityKey> Entities;
|
|
}
|
|
|
|
[Serializable]
|
|
public class GetEntityProfilesResponse : PlayFabResultCommon
|
|
{
|
|
/// <summary>
|
|
/// Entity profiles
|
|
/// </summary>
|
|
public List<EntityProfileBody> Profiles;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class GetGlobalPolicyRequest : 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;
|
|
}
|
|
|
|
[Serializable]
|
|
public class GetGlobalPolicyResponse : PlayFabResultCommon
|
|
{
|
|
/// <summary>
|
|
/// The permissions that govern access to all entities under this title or namespace.
|
|
/// </summary>
|
|
public List<EntityPermissionStatement> Permissions;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Given a master player account id (PlayFab ID), returns all title player accounts associated with it.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class GetTitlePlayersFromMasterPlayerAccountIdsRequest : 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>
|
|
/// Master player account ids.
|
|
/// </summary>
|
|
public List<string> MasterPlayerAccountIds;
|
|
/// <summary>
|
|
/// Id of title to get players from.
|
|
/// </summary>
|
|
public string TitleId;
|
|
}
|
|
|
|
[Serializable]
|
|
public class GetTitlePlayersFromMasterPlayerAccountIdsResponse : PlayFabResultCommon
|
|
{
|
|
/// <summary>
|
|
/// Optional id of title to get players from, required if calling using a master_player_account.
|
|
/// </summary>
|
|
public string TitleId;
|
|
/// <summary>
|
|
/// Dictionary of master player ids mapped to title player entity keys and id pairs
|
|
/// </summary>
|
|
public Dictionary<string,EntityKey> TitlePlayerAccounts;
|
|
}
|
|
|
|
[Serializable]
|
|
public class GetTitlePlayersFromProviderIDsResponse : PlayFabResultCommon
|
|
{
|
|
/// <summary>
|
|
/// Dictionary of provider identifiers mapped to title_player_account lineage. Missing lineage indicates the player either
|
|
/// doesn't exist or doesn't play the requested title.
|
|
/// </summary>
|
|
public Dictionary<string,EntityLineage> TitlePlayerAccounts;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Given a collection of Xbox IDs (XUIDs), returns all title player accounts.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class GetTitlePlayersFromXboxLiveIDsRequest : 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>
|
|
/// Xbox Sandbox the players had on their Xbox tokens.
|
|
/// </summary>
|
|
public string Sandbox;
|
|
/// <summary>
|
|
/// Optional ID of title to get players from, required if calling using a master_player_account.
|
|
/// </summary>
|
|
public string TitleId;
|
|
/// <summary>
|
|
/// List of Xbox Live XUIDs
|
|
/// </summary>
|
|
public List<string> XboxLiveIds;
|
|
}
|
|
|
|
public enum OperationTypes
|
|
{
|
|
Created,
|
|
Updated,
|
|
Deleted,
|
|
None
|
|
}
|
|
|
|
/// <summary>
|
|
/// Given an entity profile, will update its display name to the one passed in if the profile's version is equal to the
|
|
/// specified value
|
|
/// </summary>
|
|
[Serializable]
|
|
public class SetDisplayNameRequest : PlayFabRequestCommon
|
|
{
|
|
/// <summary>
|
|
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
|
|
/// </summary>
|
|
public Dictionary<string,string> CustomTags;
|
|
/// <summary>
|
|
/// The new value to be set on Entity Profile's display name
|
|
/// </summary>
|
|
public string DisplayName;
|
|
/// <summary>
|
|
/// The optional entity to perform this action on. Defaults to the currently logged in entity.
|
|
/// </summary>
|
|
public EntityKey Entity;
|
|
/// <summary>
|
|
/// The expected version of a profile to perform this update on
|
|
/// </summary>
|
|
public int? ExpectedVersion;
|
|
}
|
|
|
|
[Serializable]
|
|
public class SetDisplayNameResponse : PlayFabResultCommon
|
|
{
|
|
/// <summary>
|
|
/// The type of operation that occured on the profile's display name
|
|
/// </summary>
|
|
public OperationTypes? OperationResult;
|
|
/// <summary>
|
|
/// The updated version of the profile after the display name update
|
|
/// </summary>
|
|
public int? VersionNumber;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class SetEntityProfilePolicyRequest : 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 statements to include in the access policy.
|
|
/// </summary>
|
|
public List<EntityPermissionStatement> Statements;
|
|
}
|
|
|
|
[Serializable]
|
|
public class SetEntityProfilePolicyResponse : PlayFabResultCommon
|
|
{
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public List<EntityPermissionStatement> Permissions;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class SetGlobalPolicyRequest : 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 permissions that govern access to all entities under this title or namespace.
|
|
/// </summary>
|
|
public List<EntityPermissionStatement> Permissions;
|
|
}
|
|
|
|
[Serializable]
|
|
public class SetGlobalPolicyResponse : PlayFabResultCommon
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class SetProfileLanguageRequest : 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 expected version of a profile to perform this update on
|
|
/// </summary>
|
|
public int? ExpectedVersion;
|
|
/// <summary>
|
|
/// The language to set on the given entity. Deletes the profile's language if passed in a null string.
|
|
/// </summary>
|
|
public string Language;
|
|
}
|
|
|
|
[Serializable]
|
|
public class SetProfileLanguageResponse : PlayFabResultCommon
|
|
{
|
|
/// <summary>
|
|
/// The type of operation that occured on the profile's language
|
|
/// </summary>
|
|
public OperationTypes? OperationResult;
|
|
/// <summary>
|
|
/// The updated version of the profile after the language update
|
|
/// </summary>
|
|
public int? VersionNumber;
|
|
}
|
|
}
|
|
#endif
|