[U] add PlayFab SDK and SNS login improvements

- Add PlayFabSDK as local package dependency
- Add PlayFabTool.cs for PlayFab API integration
- Implement LoginBySns method in TYSdkFacade
- Add Android SNS login support in SDKManager and UnityBridgeFunc
- Add Build Android With Debug menu option
- Improve exception handling and timeout management

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-29 16:12:17 +08:00
parent 638e6a3327
commit aa5ce1ff5a
226 changed files with 64975 additions and 62 deletions

View File

@@ -0,0 +1,60 @@
#if !DISABLE_PLAYFABENTITY_API
using PlayFab.GroupsModels;
namespace PlayFab.Events
{
public partial class PlayFabEvents
{
public event PlayFabRequestEvent<AcceptGroupApplicationRequest> OnGroupsAcceptGroupApplicationRequestEvent;
public event PlayFabResultEvent<EmptyResponse> OnGroupsAcceptGroupApplicationResultEvent;
public event PlayFabRequestEvent<AcceptGroupInvitationRequest> OnGroupsAcceptGroupInvitationRequestEvent;
public event PlayFabResultEvent<EmptyResponse> OnGroupsAcceptGroupInvitationResultEvent;
public event PlayFabRequestEvent<AddMembersRequest> OnGroupsAddMembersRequestEvent;
public event PlayFabResultEvent<EmptyResponse> OnGroupsAddMembersResultEvent;
public event PlayFabRequestEvent<ApplyToGroupRequest> OnGroupsApplyToGroupRequestEvent;
public event PlayFabResultEvent<ApplyToGroupResponse> OnGroupsApplyToGroupResultEvent;
public event PlayFabRequestEvent<BlockEntityRequest> OnGroupsBlockEntityRequestEvent;
public event PlayFabResultEvent<EmptyResponse> OnGroupsBlockEntityResultEvent;
public event PlayFabRequestEvent<ChangeMemberRoleRequest> OnGroupsChangeMemberRoleRequestEvent;
public event PlayFabResultEvent<EmptyResponse> OnGroupsChangeMemberRoleResultEvent;
public event PlayFabRequestEvent<CreateGroupRequest> OnGroupsCreateGroupRequestEvent;
public event PlayFabResultEvent<CreateGroupResponse> OnGroupsCreateGroupResultEvent;
public event PlayFabRequestEvent<CreateGroupRoleRequest> OnGroupsCreateRoleRequestEvent;
public event PlayFabResultEvent<CreateGroupRoleResponse> OnGroupsCreateRoleResultEvent;
public event PlayFabRequestEvent<DeleteGroupRequest> OnGroupsDeleteGroupRequestEvent;
public event PlayFabResultEvent<EmptyResponse> OnGroupsDeleteGroupResultEvent;
public event PlayFabRequestEvent<DeleteRoleRequest> OnGroupsDeleteRoleRequestEvent;
public event PlayFabResultEvent<EmptyResponse> OnGroupsDeleteRoleResultEvent;
public event PlayFabRequestEvent<GetGroupRequest> OnGroupsGetGroupRequestEvent;
public event PlayFabResultEvent<GetGroupResponse> OnGroupsGetGroupResultEvent;
public event PlayFabRequestEvent<InviteToGroupRequest> OnGroupsInviteToGroupRequestEvent;
public event PlayFabResultEvent<InviteToGroupResponse> OnGroupsInviteToGroupResultEvent;
public event PlayFabRequestEvent<IsMemberRequest> OnGroupsIsMemberRequestEvent;
public event PlayFabResultEvent<IsMemberResponse> OnGroupsIsMemberResultEvent;
public event PlayFabRequestEvent<ListGroupApplicationsRequest> OnGroupsListGroupApplicationsRequestEvent;
public event PlayFabResultEvent<ListGroupApplicationsResponse> OnGroupsListGroupApplicationsResultEvent;
public event PlayFabRequestEvent<ListGroupBlocksRequest> OnGroupsListGroupBlocksRequestEvent;
public event PlayFabResultEvent<ListGroupBlocksResponse> OnGroupsListGroupBlocksResultEvent;
public event PlayFabRequestEvent<ListGroupInvitationsRequest> OnGroupsListGroupInvitationsRequestEvent;
public event PlayFabResultEvent<ListGroupInvitationsResponse> OnGroupsListGroupInvitationsResultEvent;
public event PlayFabRequestEvent<ListGroupMembersRequest> OnGroupsListGroupMembersRequestEvent;
public event PlayFabResultEvent<ListGroupMembersResponse> OnGroupsListGroupMembersResultEvent;
public event PlayFabRequestEvent<ListMembershipRequest> OnGroupsListMembershipRequestEvent;
public event PlayFabResultEvent<ListMembershipResponse> OnGroupsListMembershipResultEvent;
public event PlayFabRequestEvent<ListMembershipOpportunitiesRequest> OnGroupsListMembershipOpportunitiesRequestEvent;
public event PlayFabResultEvent<ListMembershipOpportunitiesResponse> OnGroupsListMembershipOpportunitiesResultEvent;
public event PlayFabRequestEvent<RemoveGroupApplicationRequest> OnGroupsRemoveGroupApplicationRequestEvent;
public event PlayFabResultEvent<EmptyResponse> OnGroupsRemoveGroupApplicationResultEvent;
public event PlayFabRequestEvent<RemoveGroupInvitationRequest> OnGroupsRemoveGroupInvitationRequestEvent;
public event PlayFabResultEvent<EmptyResponse> OnGroupsRemoveGroupInvitationResultEvent;
public event PlayFabRequestEvent<RemoveMembersRequest> OnGroupsRemoveMembersRequestEvent;
public event PlayFabResultEvent<EmptyResponse> OnGroupsRemoveMembersResultEvent;
public event PlayFabRequestEvent<UnblockEntityRequest> OnGroupsUnblockEntityRequestEvent;
public event PlayFabResultEvent<EmptyResponse> OnGroupsUnblockEntityResultEvent;
public event PlayFabRequestEvent<UpdateGroupRequest> OnGroupsUpdateGroupRequestEvent;
public event PlayFabResultEvent<UpdateGroupResponse> OnGroupsUpdateGroupResultEvent;
public event PlayFabRequestEvent<UpdateGroupRoleRequest> OnGroupsUpdateRoleRequestEvent;
public event PlayFabResultEvent<UpdateGroupRoleResponse> OnGroupsUpdateRoleResultEvent;
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 89aad6173ff54ed4092f14bd118f0652
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,366 @@
#if !DISABLE_PLAYFABENTITY_API && !DISABLE_PLAYFAB_STATIC_API
using System;
using System.Collections.Generic;
using PlayFab.GroupsModels;
using PlayFab.Internal;
namespace PlayFab
{
/// <summary>
/// The Groups API is designed for any permanent or semi-permanent collections of Entities (players, or non-players). If you
/// want to make Guilds/Clans/Corporations/etc., then you should use groups. Groups can also be used to make chatrooms,
/// parties, or any other persistent collection of entities.
/// </summary>
public static class PlayFabGroupsAPI
{
static PlayFabGroupsAPI() {}
/// <summary>
/// Verify entity login.
/// </summary>
public static bool IsEntityLoggedIn()
{
return PlayFabSettings.staticPlayer.IsEntityLoggedIn();
}
/// <summary>
/// Clear the Client SessionToken which allows this Client to call API calls requiring login.
/// A new/fresh login will be required after calling this.
/// </summary>
public static void ForgetAllCredentials()
{
PlayFabSettings.staticPlayer.ForgetAllCredentials();
}
/// <summary>
/// Accepts an outstanding invitation to to join a group
/// </summary>
public static void AcceptGroupApplication(AcceptGroupApplicationRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/AcceptGroupApplication", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Accepts an invitation to join a group
/// </summary>
public static void AcceptGroupInvitation(AcceptGroupInvitationRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/AcceptGroupInvitation", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Adds members to a group or role.
/// </summary>
public static void AddMembers(AddMembersRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/AddMembers", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Applies to join a group
/// </summary>
public static void ApplyToGroup(ApplyToGroupRequest request, Action<ApplyToGroupResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ApplyToGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Blocks a list of entities from joining a group.
/// </summary>
public static void BlockEntity(BlockEntityRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/BlockEntity", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Changes the role membership of a list of entities from one role to another.
/// </summary>
public static void ChangeMemberRole(ChangeMemberRoleRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ChangeMemberRole", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Creates a new group.
/// </summary>
public static void CreateGroup(CreateGroupRequest request, Action<CreateGroupResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/CreateGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Creates a new group role.
/// </summary>
public static void CreateRole(CreateGroupRoleRequest request, Action<CreateGroupRoleResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/CreateRole", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Deletes a group and all roles, invitations, join requests, and blocks associated with it.
/// </summary>
public static void DeleteGroup(DeleteGroupRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/DeleteGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Deletes an existing role in a group.
/// </summary>
public static void DeleteRole(DeleteRoleRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/DeleteRole", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Gets information about a group and its roles
/// </summary>
public static void GetGroup(GetGroupRequest request, Action<GetGroupResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/GetGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Invites a player to join a group
/// </summary>
public static void InviteToGroup(InviteToGroupRequest request, Action<InviteToGroupResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/InviteToGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Checks to see if an entity is a member of a group or role within the group
/// </summary>
public static void IsMember(IsMemberRequest request, Action<IsMemberResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/IsMember", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Lists all outstanding requests to join a group
/// </summary>
public static void ListGroupApplications(ListGroupApplicationsRequest request, Action<ListGroupApplicationsResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListGroupApplications", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Lists all entities blocked from joining a group
/// </summary>
public static void ListGroupBlocks(ListGroupBlocksRequest request, Action<ListGroupBlocksResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListGroupBlocks", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Lists all outstanding invitations for a group
/// </summary>
public static void ListGroupInvitations(ListGroupInvitationsRequest request, Action<ListGroupInvitationsResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListGroupInvitations", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Lists all members for a group
/// </summary>
public static void ListGroupMembers(ListGroupMembersRequest request, Action<ListGroupMembersResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListGroupMembers", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Lists all groups and roles for an entity
/// </summary>
public static void ListMembership(ListMembershipRequest request, Action<ListMembershipResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListMembership", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Lists all outstanding invitations and group applications for an entity
/// </summary>
public static void ListMembershipOpportunities(ListMembershipOpportunitiesRequest request, Action<ListMembershipOpportunitiesResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListMembershipOpportunities", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Removes an application to join a group
/// </summary>
public static void RemoveGroupApplication(RemoveGroupApplicationRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/RemoveGroupApplication", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Removes an invitation join a group
/// </summary>
public static void RemoveGroupInvitation(RemoveGroupInvitationRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/RemoveGroupInvitation", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Removes members from a group.
/// </summary>
public static void RemoveMembers(RemoveMembersRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/RemoveMembers", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Unblocks a list of entities from joining a group
/// </summary>
public static void UnblockEntity(UnblockEntityRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/UnblockEntity", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Updates non-membership data about a group.
/// </summary>
public static void UpdateGroup(UpdateGroupRequest request, Action<UpdateGroupResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/UpdateGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
/// <summary>
/// Updates metadata about a role.
/// </summary>
public static void UpdateRole(UpdateGroupRoleRequest request, Action<UpdateGroupRoleResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;
var callSettings = PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/UpdateRole", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 42170e999ab34f549ac03af203959176
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,334 @@
#if !DISABLE_PLAYFABENTITY_API
using System;
using System.Collections.Generic;
using PlayFab.GroupsModels;
using PlayFab.Internal;
using PlayFab.SharedModels;
namespace PlayFab
{
/// <summary>
/// The Groups API is designed for any permanent or semi-permanent collections of Entities (players, or non-players). If you
/// want to make Guilds/Clans/Corporations/etc., then you should use groups. Groups can also be used to make chatrooms,
/// parties, or any other persistent collection of entities.
/// </summary>
public class PlayFabGroupsInstanceAPI : IPlayFabInstanceApi
{
public readonly PlayFabApiSettings apiSettings = null;
public readonly PlayFabAuthenticationContext authenticationContext = null;
public PlayFabGroupsInstanceAPI(PlayFabAuthenticationContext context)
{
if (context == null)
throw new PlayFabException(PlayFabExceptionCode.AuthContextRequired, "Context cannot be null, create a PlayFabAuthenticationContext for each player in advance, or call <PlayFabClientInstanceAPI>.GetAuthenticationContext()");
authenticationContext = context;
}
public PlayFabGroupsInstanceAPI(PlayFabApiSettings settings, PlayFabAuthenticationContext context)
{
if (context == null)
throw new PlayFabException(PlayFabExceptionCode.AuthContextRequired, "Context cannot be null, create a PlayFabAuthenticationContext for each player in advance, or call <PlayFabClientInstanceAPI>.GetAuthenticationContext()");
apiSettings = settings;
authenticationContext = context;
}
/// <summary>
/// Verify entity login.
/// </summary>
public bool IsEntityLoggedIn()
{
return authenticationContext == null ? false : authenticationContext.IsEntityLoggedIn();
}
/// <summary>
/// Clear the Client SessionToken which allows this Client to call API calls requiring login.
/// A new/fresh login will be required after calling this.
/// </summary>
public void ForgetAllCredentials()
{
if (authenticationContext != null)
{
authenticationContext.ForgetAllCredentials();
}
}
/// <summary>
/// Accepts an outstanding invitation to to join a group
/// </summary>
public void AcceptGroupApplication(AcceptGroupApplicationRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/AcceptGroupApplication", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Accepts an invitation to join a group
/// </summary>
public void AcceptGroupInvitation(AcceptGroupInvitationRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/AcceptGroupInvitation", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Adds members to a group or role.
/// </summary>
public void AddMembers(AddMembersRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/AddMembers", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Applies to join a group
/// </summary>
public void ApplyToGroup(ApplyToGroupRequest request, Action<ApplyToGroupResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ApplyToGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Blocks a list of entities from joining a group.
/// </summary>
public void BlockEntity(BlockEntityRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/BlockEntity", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Changes the role membership of a list of entities from one role to another.
/// </summary>
public void ChangeMemberRole(ChangeMemberRoleRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ChangeMemberRole", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Creates a new group.
/// </summary>
public void CreateGroup(CreateGroupRequest request, Action<CreateGroupResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/CreateGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Creates a new group role.
/// </summary>
public void CreateRole(CreateGroupRoleRequest request, Action<CreateGroupRoleResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/CreateRole", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Deletes a group and all roles, invitations, join requests, and blocks associated with it.
/// </summary>
public void DeleteGroup(DeleteGroupRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/DeleteGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Deletes an existing role in a group.
/// </summary>
public void DeleteRole(DeleteRoleRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/DeleteRole", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Gets information about a group and its roles
/// </summary>
public void GetGroup(GetGroupRequest request, Action<GetGroupResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/GetGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Invites a player to join a group
/// </summary>
public void InviteToGroup(InviteToGroupRequest request, Action<InviteToGroupResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/InviteToGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Checks to see if an entity is a member of a group or role within the group
/// </summary>
public void IsMember(IsMemberRequest request, Action<IsMemberResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/IsMember", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Lists all outstanding requests to join a group
/// </summary>
public void ListGroupApplications(ListGroupApplicationsRequest request, Action<ListGroupApplicationsResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListGroupApplications", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Lists all entities blocked from joining a group
/// </summary>
public void ListGroupBlocks(ListGroupBlocksRequest request, Action<ListGroupBlocksResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListGroupBlocks", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Lists all outstanding invitations for a group
/// </summary>
public void ListGroupInvitations(ListGroupInvitationsRequest request, Action<ListGroupInvitationsResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListGroupInvitations", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Lists all members for a group
/// </summary>
public void ListGroupMembers(ListGroupMembersRequest request, Action<ListGroupMembersResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListGroupMembers", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Lists all groups and roles for an entity
/// </summary>
public void ListMembership(ListMembershipRequest request, Action<ListMembershipResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListMembership", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Lists all outstanding invitations and group applications for an entity
/// </summary>
public void ListMembershipOpportunities(ListMembershipOpportunitiesRequest request, Action<ListMembershipOpportunitiesResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/ListMembershipOpportunities", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Removes an application to join a group
/// </summary>
public void RemoveGroupApplication(RemoveGroupApplicationRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/RemoveGroupApplication", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Removes an invitation join a group
/// </summary>
public void RemoveGroupInvitation(RemoveGroupInvitationRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/RemoveGroupInvitation", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Removes members from a group.
/// </summary>
public void RemoveMembers(RemoveMembersRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/RemoveMembers", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Unblocks a list of entities from joining a group
/// </summary>
public void UnblockEntity(UnblockEntityRequest request, Action<EmptyResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/UnblockEntity", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Updates non-membership data about a group.
/// </summary>
public void UpdateGroup(UpdateGroupRequest request, Action<UpdateGroupResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/UpdateGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
/// <summary>
/// Updates metadata about a role.
/// </summary>
public void UpdateRole(UpdateGroupRoleRequest request, Action<UpdateGroupRoleResponse> resultCallback, Action<PlayFabError> errorCallback, object customData = null, Dictionary<string, string> extraHeaders = null)
{
var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
var callSettings = apiSettings ?? PlayFabSettings.staticSettings;
if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method");
PlayFabHttp.MakeApiCall("/Group/UpdateRole", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e14b336d534f60f4e911c8db52e74a86
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,985 @@
#if !DISABLE_PLAYFABENTITY_API
using System;
using System.Collections.Generic;
using PlayFab.SharedModels;
namespace PlayFab.GroupsModels
{
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class AcceptGroupApplicationRequest : 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>
/// 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.
/// </summary>
public EntityKey Entity;
/// <summary>
/// The identifier of the group
/// </summary>
public EntityKey Group;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class AcceptGroupInvitationRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class AddMembersRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// List of entities to add to the group. Only entities of type title_player_account and character may be added to groups.
/// </summary>
public List<EntityKey> Members;
/// <summary>
/// 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.
/// </summary>
public string RoleId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ApplyToGroupRequest : PlayFabRequestCommon
{
/// <summary>
/// Optional, default true. Automatically accept an outstanding invitation if one exists instead of creating an application
/// </summary>
public bool? AutoAcceptOutstandingInvite;
/// <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 identifier of the group
/// </summary>
public EntityKey Group;
}
/// <summary>
/// Describes an application to join a group
/// </summary>
[Serializable]
public class ApplyToGroupResponse : PlayFabResultCommon
{
/// <summary>
/// Type of entity that requested membership
/// </summary>
public EntityWithLineage Entity;
/// <summary>
/// When the application to join will expire and be deleted
/// </summary>
public DateTime Expires;
/// <summary>
/// ID of the group that the entity requesting membership to
/// </summary>
public EntityKey Group;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class BlockEntityRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ChangeMemberRoleRequest : 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 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.
/// </summary>
public string DestinationRoleId;
/// <summary>
/// The identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// List of entities to move between roles in the group. All entities in this list must be members of the group and origin
/// role.
/// </summary>
public List<EntityKey> Members;
/// <summary>
/// The ID of the role that the entities currently are a member of. Role IDs must be between 1 and 64 characters long.
/// </summary>
public string OriginRoleId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class CreateGroupRequest : 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 group. This is unique at the title level by default.
/// </summary>
public string GroupName;
}
[Serializable]
public class CreateGroupResponse : PlayFabResultCommon
{
/// <summary>
/// The ID of the administrator role for the group.
/// </summary>
public string AdminRoleId;
/// <summary>
/// The server date and time the group was created.
/// </summary>
public DateTime Created;
/// <summary>
/// The identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// The name of the group.
/// </summary>
public string GroupName;
/// <summary>
/// The ID of the default member role for the group.
/// </summary>
public string MemberRoleId;
/// <summary>
/// The current version of the profile, can be used for concurrency control during updates.
/// </summary>
public int ProfileVersion;
/// <summary>
/// The list of roles and names that belong to the group.
/// </summary>
public Dictionary<string,string> Roles;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class CreateGroupRoleRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// 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 and are restricted to a-Z, A-Z, 0-9, '(', ')', '_', '-' and '.'.
/// </summary>
public string RoleId;
/// <summary>
/// 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
/// </summary>
public string RoleName;
}
[Serializable]
public class CreateGroupRoleResponse : PlayFabResultCommon
{
/// <summary>
/// The current version of the group profile, can be used for concurrency control during updates.
/// </summary>
public int ProfileVersion;
/// <summary>
/// ID for the role
/// </summary>
public string RoleId;
/// <summary>
/// The name of the role
/// </summary>
public string RoleName;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class DeleteGroupRequest : 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>
/// ID of the group or role to remove
/// </summary>
public EntityKey Group;
}
/// <summary>
/// Returns information about the role
/// </summary>
[Serializable]
public class DeleteRoleRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// The ID of the role to delete. Role IDs must be between 1 and 64 characters long.
/// </summary>
public string RoleId;
}
[Serializable]
public class EmptyResponse : 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 EntityMemberRole : PlayFabBaseModel
{
/// <summary>
/// The list of members in the role
/// </summary>
public List<EntityWithLineage> Members;
/// <summary>
/// The ID of the role.
/// </summary>
public string RoleId;
/// <summary>
/// The name of the role
/// </summary>
public string RoleName;
}
/// <summary>
/// Entity wrapper class that contains the entity key and the entities that make up the lineage of the entity.
/// </summary>
[Serializable]
public class EntityWithLineage : PlayFabBaseModel
{
/// <summary>
/// The entity key for the specified entity
/// </summary>
public EntityKey Key;
/// <summary>
/// Dictionary of entity keys for related entities. Dictionary key is entity type.
/// </summary>
public Dictionary<string,EntityKey> Lineage;
}
/// <summary>
/// Returns the ID, name, role list and other non-membership related information about a group.
/// </summary>
[Serializable]
public class GetGroupRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// The full name of the group
/// </summary>
public string GroupName;
}
[Serializable]
public class GetGroupResponse : PlayFabResultCommon
{
/// <summary>
/// The ID of the administrator role for the group.
/// </summary>
public string AdminRoleId;
/// <summary>
/// The server date and time the group was created.
/// </summary>
public DateTime Created;
/// <summary>
/// The identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// The name of the group.
/// </summary>
public string GroupName;
/// <summary>
/// The ID of the default member role for the group.
/// </summary>
public string MemberRoleId;
/// <summary>
/// The current version of the profile, can be used for concurrency control during updates.
/// </summary>
public int ProfileVersion;
/// <summary>
/// The list of roles and names that belong to the group.
/// </summary>
public Dictionary<string,string> Roles;
}
/// <summary>
/// Describes an application to join a group
/// </summary>
[Serializable]
public class GroupApplication : PlayFabBaseModel
{
/// <summary>
/// Type of entity that requested membership
/// </summary>
public EntityWithLineage Entity;
/// <summary>
/// When the application to join will expire and be deleted
/// </summary>
public DateTime Expires;
/// <summary>
/// ID of the group that the entity requesting membership to
/// </summary>
public EntityKey Group;
}
/// <summary>
/// Describes an entity that is blocked from joining a group.
/// </summary>
[Serializable]
public class GroupBlock : PlayFabBaseModel
{
/// <summary>
/// The entity that is blocked
/// </summary>
public EntityWithLineage Entity;
/// <summary>
/// ID of the group that the entity is blocked from
/// </summary>
public EntityKey Group;
}
/// <summary>
/// Describes an invitation to a group.
/// </summary>
[Serializable]
public class GroupInvitation : PlayFabBaseModel
{
/// <summary>
/// When the invitation will expire and be deleted
/// </summary>
public DateTime Expires;
/// <summary>
/// The group that the entity invited to
/// </summary>
public EntityKey Group;
/// <summary>
/// The entity that created the invitation
/// </summary>
public EntityWithLineage InvitedByEntity;
/// <summary>
/// The entity that is invited
/// </summary>
public EntityWithLineage InvitedEntity;
/// <summary>
/// ID of the role in the group to assign the user to.
/// </summary>
public string RoleId;
}
/// <summary>
/// Describes a group role
/// </summary>
[Serializable]
public class GroupRole : PlayFabBaseModel
{
/// <summary>
/// ID for the role
/// </summary>
public string RoleId;
/// <summary>
/// The name of the role
/// </summary>
public string RoleName;
}
/// <summary>
/// Describes a group and the roles that it contains
/// </summary>
[Serializable]
public class GroupWithRoles : PlayFabBaseModel
{
/// <summary>
/// ID for the group
/// </summary>
public EntityKey Group;
/// <summary>
/// The name of the group
/// </summary>
public string GroupName;
/// <summary>
/// The current version of the profile, can be used for concurrency control during updates.
/// </summary>
public int ProfileVersion;
/// <summary>
/// The list of roles within the group
/// </summary>
public List<GroupRole> Roles;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class InviteToGroupRequest : PlayFabRequestCommon
{
/// <summary>
/// Optional, default true. Automatically accept an application if one exists instead of creating an invitation
/// </summary>
public bool? AutoAcceptOutstandingApplication;
/// <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 identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// 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.
/// </summary>
public string RoleId;
}
/// <summary>
/// Describes an invitation to a group.
/// </summary>
[Serializable]
public class InviteToGroupResponse : PlayFabResultCommon
{
/// <summary>
/// When the invitation will expire and be deleted
/// </summary>
public DateTime Expires;
/// <summary>
/// The group that the entity invited to
/// </summary>
public EntityKey Group;
/// <summary>
/// The entity that created the invitation
/// </summary>
public EntityWithLineage InvitedByEntity;
/// <summary>
/// The entity that is invited
/// </summary>
public EntityWithLineage InvitedEntity;
/// <summary>
/// ID of the role in the group to assign the user to.
/// </summary>
public string RoleId;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class IsMemberRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// 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.
/// </summary>
public string RoleId;
}
[Serializable]
public class IsMemberResponse : PlayFabResultCommon
{
/// <summary>
/// A value indicating whether or not the entity is a member.
/// </summary>
public bool IsMember;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ListGroupApplicationsRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
}
[Serializable]
public class ListGroupApplicationsResponse : PlayFabResultCommon
{
/// <summary>
/// The requested list of applications to the group.
/// </summary>
public List<GroupApplication> Applications;
}
/// <summary>
/// Lists all entities blocked from joining a group. A list of blocked entities is returned
/// </summary>
[Serializable]
public class ListGroupBlocksRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
}
[Serializable]
public class ListGroupBlocksResponse : PlayFabResultCommon
{
/// <summary>
/// The requested list blocked entities.
/// </summary>
public List<GroupBlock> BlockedEntities;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ListGroupInvitationsRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
}
[Serializable]
public class ListGroupInvitationsResponse : PlayFabResultCommon
{
/// <summary>
/// The requested list of group invitations.
/// </summary>
public List<GroupInvitation> Invitations;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ListGroupMembersRequest : 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>
/// ID of the group to list the members and roles for
/// </summary>
public EntityKey Group;
}
[Serializable]
public class ListGroupMembersResponse : PlayFabResultCommon
{
/// <summary>
/// The requested list of roles and member entity IDs.
/// </summary>
public List<EntityMemberRole> Members;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ListMembershipOpportunitiesRequest : 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 ListMembershipOpportunitiesResponse : PlayFabResultCommon
{
/// <summary>
/// The requested list of group applications.
/// </summary>
public List<GroupApplication> Applications;
/// <summary>
/// The requested list of group invitations.
/// </summary>
public List<GroupInvitation> Invitations;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class ListMembershipRequest : 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 ListMembershipResponse : PlayFabResultCommon
{
/// <summary>
/// The list of groups
/// </summary>
public List<GroupWithRoles> Groups;
}
public enum OperationTypes
{
Created,
Updated,
Deleted,
None
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class RemoveGroupApplicationRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class RemoveGroupInvitationRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
}
/// <summary>
/// Removes members from a group. A member can always remove themselves from a group, regardless of permissions. Returns
/// nothing if successful.
/// </summary>
[Serializable]
public class RemoveMembersRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// List of entities to remove
/// </summary>
public List<EntityKey> Members;
/// <summary>
/// The ID of the role to remove the entities from.
/// </summary>
public string RoleId;
}
/// <summary>
/// Unblocks a list of entities from joining a group. No data is returned in the case of success.
/// </summary>
[Serializable]
public class UnblockEntityRequest : 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 identifier of the group
/// </summary>
public EntityKey Group;
}
/// <summary>
/// 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.
/// </summary>
[Serializable]
public class UpdateGroupRequest : PlayFabRequestCommon
{
/// <summary>
/// Optional: the ID of an existing role to set as the new administrator role for the group
/// </summary>
public string AdminRoleId;
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Optional 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.
/// </summary>
public int? ExpectedProfileVersion;
/// <summary>
/// The identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// Optional: the new name of the group
/// </summary>
public string GroupName;
/// <summary>
/// Optional: the ID of an existing role to set as the new member role for the group
/// </summary>
public string MemberRoleId;
}
[Serializable]
public class UpdateGroupResponse : PlayFabResultCommon
{
/// <summary>
/// Optional reason to explain why the operation was the result that it was.
/// </summary>
public string OperationReason;
/// <summary>
/// New version of the group data.
/// </summary>
public int ProfileVersion;
/// <summary>
/// Indicates which operation was completed, either Created, Updated, Deleted or None.
/// </summary>
public OperationTypes? SetResult;
}
/// <summary>
/// Updates the role name. Returns information about whether the update was successful.
/// </summary>
[Serializable]
public class UpdateGroupRoleRequest : PlayFabRequestCommon
{
/// <summary>
/// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
/// </summary>
public Dictionary<string,string> CustomTags;
/// <summary>
/// Optional 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.
/// </summary>
public int? ExpectedProfileVersion;
/// <summary>
/// The identifier of the group
/// </summary>
public EntityKey Group;
/// <summary>
/// ID of the role to update. Role IDs must be between 1 and 64 characters long.
/// </summary>
public string RoleId;
/// <summary>
/// The new name of the role
/// </summary>
public string RoleName;
}
[Serializable]
public class UpdateGroupRoleResponse : PlayFabResultCommon
{
/// <summary>
/// Optional reason to explain why the operation was the result that it was.
/// </summary>
public string OperationReason;
/// <summary>
/// New version of the role data.
/// </summary>
public int ProfileVersion;
/// <summary>
/// Indicates which operation was completed, either Created, Updated, Deleted or None.
/// </summary>
public OperationTypes? SetResult;
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d73f86b427d81044bb2417ea3b5b03ac
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: