/// <summary>
        /// <para>Begins an asynchronous send to the members set profile route.</para>
        /// </summary>
        /// <param name="user">Identity of user whose profile will be set.</param>
        /// <param name="newEmail">New email for member.</param>
        /// <param name="newExternalId">New external ID for member.</param>
        /// <param name="newGivenName">New given name for member.</param>
        /// <param name="newSurname">New surname for member.</param>
        /// <param name="callback">The method to be called when the asynchronous send is
        /// completed.</param>
        /// <param name="callbackState">A user provided object that distinguished this send
        /// from other send requests.</param>
        /// <returns>An object that represents the asynchronous send request.</returns>
        public sys.IAsyncResult BeginMembersSetProfile(UserSelectorArg user,
                                                       string newEmail = null,
                                                       string newExternalId = null,
                                                       string newGivenName = null,
                                                       string newSurname = null,
                                                       sys.AsyncCallback callback = null,
                                                       object callbackState = null)
        {
            var membersSetProfileArg = new MembersSetProfileArg(user,
                                                                newEmail,
                                                                newExternalId,
                                                                newGivenName,
                                                                newSurname);

            return this.BeginMembersSetProfile(membersSetProfileArg, callback, callbackState);
        }
        /// <summary>
        /// <para>Begins an asynchronous send to the members set profile route.</para>
        /// </summary>
        /// <param name="membersSetProfileArg">The request parameters.</param>
        /// <param name="callback">The method to be called when the asynchronous send is
        /// completed.</param>
        /// <param name="state">A user provided object that distinguished this send from other
        /// send requests.</param>
        /// <returns>An object that represents the asynchronous send request.</returns>
        public sys.IAsyncResult BeginMembersSetProfile(MembersSetProfileArg membersSetProfileArg, sys.AsyncCallback callback, object state = null)
        {
            var task = this.MembersSetProfileAsync(membersSetProfileArg);

            return enc.Util.ToApm(task, callback, state);
        }
        /// <summary>
        /// <para>Updates a team member's profile.</para>
        /// <para>Permission : Team member management</para>
        /// </summary>
        /// <param name="user">Identity of user whose profile will be set.</param>
        /// <param name="newEmail">New email for member.</param>
        /// <param name="newExternalId">New external ID for member.</param>
        /// <param name="newGivenName">New given name for member.</param>
        /// <param name="newSurname">New surname for member.</param>
        /// <returns>The task that represents the asynchronous send operation. The TResult
        /// parameter contains the response from the server.</returns>
        /// <exception cref="Dropbox.Api.ApiException{MembersSetProfileError}">Thrown if there
        /// is an error processing the request; This will contain a <see
        /// cref="MembersSetProfileError"/>.</exception>
        public t.Task<TeamMemberInfo> MembersSetProfileAsync(UserSelectorArg user,
                                                             string newEmail = null,
                                                             string newExternalId = null,
                                                             string newGivenName = null,
                                                             string newSurname = null)
        {
            var membersSetProfileArg = new MembersSetProfileArg(user,
                                                                newEmail,
                                                                newExternalId,
                                                                newGivenName,
                                                                newSurname);

            return this.MembersSetProfileAsync(membersSetProfileArg);
        }
 /// <summary>
 /// <para>Updates a team member's profile.</para>
 /// <para>Permission : Team member management</para>
 /// </summary>
 /// <param name="membersSetProfileArg">The request parameters</param>
 /// <returns>The task that represents the asynchronous send operation. The TResult
 /// parameter contains the response from the server.</returns>
 /// <exception cref="Dropbox.Api.ApiException{MembersSetProfileError}">Thrown if there
 /// is an error processing the request; This will contain a <see
 /// cref="MembersSetProfileError"/>.</exception>
 public t.Task<TeamMemberInfo> MembersSetProfileAsync(MembersSetProfileArg membersSetProfileArg)
 {
     return this.Transport.SendRpcRequestAsync<MembersSetProfileArg, TeamMemberInfo, MembersSetProfileError>(membersSetProfileArg, "api", "/team/members/set_profile", Dropbox.Api.Team.MembersSetProfileArg.Encoder, Dropbox.Api.Team.TeamMemberInfo.Decoder, Dropbox.Api.Team.MembersSetProfileError.Decoder);
 }