//
//  SFUsersEntity.h
//
//  Autogenerated by a tool.
//  Copyright (c) 2016 Citrix ShareFile. All rights reserved.
//

#import "SFODataEntityBase.h"

@class SFUser;
@class SFAccountUser;
@class SFUserPreferences;
@class SFODataObject;
@class SFUserConfirmationSettings;

@interface SFUsersEntity : SFODataEntityBase
{

}

/**
@abstract Get User
Retrieve a single user, by ID or email, or the currently authenticated user.	
@param id 	
@param emailAddress 	
@return the requested User object
*/
-(SFApiQuery*)getWithId:(NSString*)Id andEmailAddress:(NSString*)emailAddress;

/**
@abstract Create Client User
@description
{
"Email":"user.one@domain.com",
"FirstName":"Name",
"LastName":"Last Name",
"Company":"Company",
"Password":"password",
"Preferences":
{
"CanResetPassword":true,
"CanViewMySettings":true
},
"DefaultZone":
{
"Id":"zoneid"
}
}
Creates a new Client User and associates it to an AccountThe following parameters from the input object are used: Email, FirstName, LastName, Company,DefaultZone, Password, Preferences.CanResetPassword and Preferences.CanViewMySettingsOther parameters are ignored	
@param user 	
@param pushCreatorDefaultSettings 	
@param addshared 	
@param notify 	
@param ifNecessary 	
@param addPersonal 	
@return The new user
*/
-(SFApiQuery*)createWithUser:(SFUser*)user pushCreatorDefaultSettings:(NSNumber*)pushCreatorDefaultSettings addshared:(NSNumber*)addshared notify:(NSNumber*)notify ifNecessary:(NSNumber*)ifNecessary andAddPersonal:(NSNumber*)addPersonal;

/**
@abstract Create Employee
@description
{
"Email":"user.one@domain.com",
"FirstName":"Name",
"LastName":"Last Name",
"Company":"Company",
"Password":"password",
"StorageQuotaLimitGB":50,
"Preferences":
{
"CanResetPassword":true,
"CanViewMySettings":true
},
"DefaultZone":
{
"Id":"zoneid"
},
"IsAdministrator": false,
"CanCreateFolders": false,
"CanUseFileBox": true,
"CanManageUsers": false,
"Roles": [
"CanChangePassword", "CanManageMySettings",
"CanUseFileBox, "CanManageUsers, "CanCreateFolders, "CanUseDropBox, "CanSelectFolderZone,
"AdminAccountPolicies", "AdminBilling", "AdminBranding", "AdminChangePlan", "AdminFileBoxAccess",
"AdminManageEmployees", "AdminRemoteUploadForms", "AdminReporting", "AdminSharedDistGroups",
"AdminSharedAddressBook", "AdminViewReceipts", "AdminDelegate", "AdminManageFolderTemplates",
"AdminEmailMessages", "AdminSSO", "AdminSuperGroup", "AdminZones", "AdminCreateSharedGroups", "AdminConnectors"
]
}
Creates a new Employee User (AccountUser) and associates it to an AccountThe following parameters from the input object are used: Email, FirstName, LastName, Company,DefaultZone, Password, IsEmployee, IsAdministrator, CanCreateFolders, CanUseFileBox, CanManageUsers,Preferences.CanResetPassword and Preferences.CanViewMySettings.Other parameters are ignoredStorageQuotaLimitGB parameter is optional. If not specified or equal to -1 the account default storage quota value will be set for the User.	
@param user 	
@param pushCreatorDefaultSettings 	
@param addshared 	
@param notify 	
@param ifNecessary 	
@param addPersonal 	
@return The new employee user
*/
-(SFApiQuery*)createAccountUserWithUser:(SFAccountUser*)user pushCreatorDefaultSettings:(NSNumber*)pushCreatorDefaultSettings addshared:(NSNumber*)addshared notify:(NSNumber*)notify ifNecessary:(NSNumber*)ifNecessary andAddPersonal:(NSNumber*)addPersonal;

/**
@abstract Update User
@description
{
"FirstName":"FirstName",
"LastName":"LastName",
"Company":"Company",
"Email":"user@domain.com",
"Security":
{
"IsDisabled":false
}
"DefaultZone":
{
"Id":"newzoneid"
}
}
Modifies an existing user objectThe following parameters can be modified through this call: FirstName, LastName, Company,Email, IsDisabled, DefaultZone Id	
@param id 	
@param user 	
@return a modified user record
*/
-(SFApiQuery*)updateWithUrl:(NSURL*)url andUser:(SFUser*)user;

/**
@abstract Add Roles
@description
{
"Roles" : [ "CanManageUsers", "CanSelectFolderZone" ]
}
Modifies an existing user object to ADD a new roleThe following roles can be added to the user through this call (depending on User type):CanCreateFolders,CanSelectFolderZone,CanUseFileBox,CanManageUsers,AdminSharedAddressBook,CanChangePassword,CanManageMySettings,AdminManageDropBox	
@param parentUrl 	
@param user 	
@return a modified user record
*/
-(SFApiQuery*)updateRolesWithParentUrl:(NSURL*)parentUrl andUser:(SFUser*)user;

/**
@abstract Set Roles
@description
{
"Roles" : [ "CanManageUsers", "CanSelectFolderZone" ]
}
Sets the roles for a user (roles not provided will be disabled.)The following roles can be set to the user through this call (depending on User type):CanCreateFolders,CanSelectFolderZone,CanUseFileBox,CanManageUsers,AdminSharedAddressBook,CanChangePassword,CanManageMySettings,AdminManageDropBox	
@param parentUrl 	
@param user 	
@return a modified user record
*/
-(SFApiQuery*)patchRolesWithParentUrl:(NSURL*)parentUrl andUser:(SFUser*)user;

/**
@abstract Remove Roles
@description
{
[ "CanManageUsers", "CanSelectFolderZone" ]
}
Removes the roles for user.The following roles can be removed from user through this call (depending on User type):CanCreateFolders,CanSelectFolderZone,CanUseFileBox,CanManageUsers,AdminSharedAddressBook,CanChangePassword,CanManageMySettings	
@param userUrl 	
@param userRoles 	
*/
-(SFApiQuery*)removeRolesWithUserUrl:(NSURL*)userUrl andUserRoles:(NSArray*)userRoles;

/**
@abstract Update Employee or Promote Customer
@description
{
"FirstName":"FirstName",
"LastName":"LastName",
"Company":"Company",
"Email":"user@domain.com",
"StorageQuotaLimitGB":100,
"Security":
{
"IsDisabled":false
}
"DefaultZone":
{
"Id":"newzoneid"
}
}
Modifies an existing user objectThe following parameters can be modified through this call: FirstName, LastName, Company,Email, IsEmployee, IsDisabled, DefaultZone Id, StorageQuotaLimitGB.During a promotion (the user id points to Customer), the following parameters can bemodified: CanCreateFolders, CanUseFileBox, CanManageUsers. StorageQuotaLimitGB equal to -1 sets the user quota to the account default storage quota value.	
@param id 	
@param user 	
@return a modified user record
*/
-(SFApiQuery*)updateAccountUserWithId:(NSString*)Id andUser:(SFAccountUser*)user;

/**
@abstract Get HomeFolder
Returns a user's home folder	
@param id 	
@return A folder record representing the requesting user home folder
*/
-(SFApiQuery*)getHomeFolderWithUrl:(NSURL*)url;

/**
@abstract Get User's top Folder
	
@param id 	
@return User's Top Folders
*/
-(SFApiQuery*)getTopFoldersWithUrl:(NSURL*)url;

/**
@abstract Get User's FileBox children
	
@param id 	
@return User's FileBox children
*/
-(SFApiQuery*)boxWithUrl:(NSURL*)url;

/**
@abstract Get User's FileBox folder
	
@param id 	
@return User's FileBox
*/
-(SFApiQuery*)fileBoxWithUrl:(NSURL*)url;

/**
@abstract Get User Preferences
Retrieves the User preferences record - all user-selected prefernces, such as timezone,time format, sort preferences, etc.	
@param id 	
@return the user selected preferences
*/
-(SFApiQuery*)getPreferencesWithUrl:(NSURL*)url;

/**
@abstract Update User Preferences
@description
{
"EnableFlashUpload":"true",
"EnableJavaUpload":"true"
.
.
.
}
	
@param parentUrl 	
@param preferences 	
*/
-(SFApiQuery*)updatePreferencesWithParentUrl:(NSURL*)parentUrl andPreferences:(SFUserPreferences*)preferences;

/**
@abstract Get User Security
Retrieve the user security record - current state of the user regardingsecurity and password settings.	
@param id 	
@return the user security status
*/
-(SFApiQuery*)getSecurityWithUrl:(NSURL*)url;

/**
@abstract Reset Password
@description
{
"NewPassword":"new password",
"OldPassword":"old password"
}
{
"NewPassword":"new password",
"OldPassword":"old password"
}
Resets a user password. A user can reset his own password providing the old and newpasswords. Administrators can issue this call without providing the old password.	
@param id 	
@param properties 	
@param notify 	
@return The modified user record
*/
-(SFApiQuery*)resetPasswordWithUrl:(NSURL*)url properties:(SFODataObject*)properties andNotify:(NSNumber*)notify;

/**
@abstract Forgot Password
Triggers a reset password email	
@param email 	
@param resetOnMobile 	
*/
-(SFApiQuery*)forgotPasswordWithEmail:(NSString*)email andResetOnMobile:(NSNumber*)resetOnMobile;

/**
@abstract Send Welcome Email
Resends the 'welcome' email to the given user	
@param id 	
*/
-(SFApiQuery*)resendWelcomeWithUrl:(NSURL*)url;

/**
@abstract Delete User
Removes an user	
@param id 	
@param completely 	
*/
-(SFApiQuery*)deleteWithUrl:(NSURL*)url andCompletely:(NSNumber*)completely;

/**
@abstract Get List of User Shared Folders
Retrieve the list of shared folders the authenticated user has access to@return A list of Folder objects, representing shared folders of an user
*/
-(SFApiQuery*)getAllSharedFolders;

/**
@abstract Get List of User Shared Folders
Retrieve the top-level folders for this user. This method requires the account to bein the new UI model of "My Files", "Shared", "Connectors", "Favorites" tab - otherwiseit will return an empty list (new UX model is the default since May 2013).@return A list of Folder objects, representing shared folders of an user
*/
-(SFApiQuery*)getTopFolders;

/**
@abstract Get List of User Shared Folders
Retrieve the connector folders that are associated with a network share service@return A list of Folder objects, representing network shared connector folders of an user
*/
-(SFApiQuery*)networkShareConnectors;

/**
@abstract Get List of User Shared Folders
Retrieve the connector folders that are associated with a sharepoint service@return A list of Folder objects, representing sharepoint folders of an user
*/
-(SFApiQuery*)sharepointConnectors;

/**
@abstract Confirm the current user logging in for the first time
@description
{
"FirstName":"",
"LastName":"",
"Company":"",
"Password":"",
"SecurityQuestion":"",
"SecurityQuestionAnswer":"",
"DayLightName":"",
"UTCOffset":"",
"DateFormat":"",
"TimeFormat":"",
"EmailInterval":0
}
	
@param settings 	
@return no data on success
*/
-(SFApiQuery*)confirmWithSettings:(SFUserConfirmationSettings*)settings;

/**
@abstract Get Current User Info
@return UserInfo
*/
-(SFApiQuery*)getInfo;

/**
@abstract Delete the email address from user
	
@param email 	
@return User
*/
-(SFApiQuery*)deleteEmailAddressWithEmail:(NSString*)email;

/**
@abstract Set email address as the primary email address for CURRENT user
	
@param email 	
@return User
*/
-(SFApiQuery*)makePrimaryWithEmail:(NSString*)email;

/**
@abstract Send notification email address to this email address for verification
	
@param email 	
@return User
*/
-(SFApiQuery*)sendConfirmationEmailWithEmail:(NSString*)email;

/**
@abstract Create a one-time use login Uri for the Web App.
@return Redirection populated with link in Uri field
*/
-(SFApiQuery*)webAppLink;

/**
@abstract Get Inbox Metadata
Returns metadata of the inbox.User identifier@return Inbox metadata
*/
-(SFApiQuery*)inboxMetadataWithUrl:(NSURL*)url;

/**
@abstract Get Inbox for Recipient
Retrieve all outstanding Shares in the inbox.User identifier@return List of Shares created by the authenticated user
*/
-(SFApiQuery*)getInboxWithUrl:(NSURL*)url type:(NSString*)type andArchived:(NSNumber*)archived;

/**
@abstract Get Sent Messages
Returns sent messages for the given user.User identifier@return Feed of Shares
*/
-(SFApiQuery*)sentMessagesWithUrl:(NSURL*)url;
@end