/// <summary>
 /// add a new user to type A company account
 /// </summary>
 /// <param name="userDetails"></param>
 /// <param name="clientReference">a unique and invariable key represents the user on partner side, such as UserID in partner system.</param>
 /// <returns>If partner wants users to active and connnect by themself, empty string returns and user will receive an email to active and connect to partner;</returns>
 public string addUserToMembership(UserDetails userDetails, string clientReference="")
 {
     return _client.Post(new AddMembershipUserRequest
     {
         User= userDetails,
         ClientReference=clientReference
     });
 }
 /// <summary>
 /// update user details in type A company account
 /// </summary>
 /// <param name="userDetails"></param>
 /// <param name="clientRefernece"></param>
 public void updateUserInMembership(UserDetails userDetails,string clientRefernece = "")
 {
     _client.Post(new UpdateMembershipUserDetailRequest
     {
         ClientReference=clientRefernece,
         Email=userDetails.Email,
         FirstName=userDetails.FirstName,
         LastName=userDetails.LastName,
         JobTitle=userDetails.JobTitle
     });
 }
 /// <summary>
 /// Add a new user to type B company account
 /// </summary>
 /// <param name="userDetails"></param>
 /// <returns></returns>
 public AddAccountUserResponse addUserToAccount(UserDetails userDetails)
 {
     return _client.Post(new AddUserRequest
     {
         User = userDetails,
         GMT = base.GMT
     });
 }
 /// <summary>
 /// Create a new type B company account
 /// </summary>
 /// <param name="accountPlan"></param>
 /// <param name="defaultAccountAdminUser"></param>
 /// <returns></returns>
 public AddAccountUserResponse createAccount(PlanDetails accountPlan, UserDetails defaultAccountAdminUser)
 {
     return _client.Post(new AddAccountRequest
     {
         Plan = accountPlan,
         User = defaultAccountAdminUser,
         GMT = this.GMT
     });
 }