/// <summary>
        /// Used to edit the settings and information about a user. This method only works for enterprise admins. To roll a user out
        /// of the enterprise (and convert them to a standalone free user), update the special enterprise attribute to be null.
        /// </summary>
        /// <param name="userRequest">BoxUserRequest object.</param>
        /// <param name="fields">Attribute(s) to include in the response.</param>
        /// <returns>Returns the user object for the updated user. Errors may be thrown when the fields are invalid or this API call is made from a non-admin account.</returns>
        public async Task <BoxUser> UpdateUserInformationAsync(BoxUserRequest userRequest, IEnumerable <string> fields = null)
        {
            userRequest.ThrowIfNull("userRequest")
            .Id.ThrowIfNullOrWhiteSpace("userRequest.Id");
            BoxRequest request = new BoxRequest(_config.UserEndpointUri, userRequest.Id)
                                 .Param(ParamFields, fields)
                                 .Payload(_converter.Serialize(userRequest))
                                 .Method(RequestMethod.Put);

            IBoxResponse <BoxUser> response = await ToResponseAsync <BoxUser>(request).ConfigureAwait(false);

            return(response.ResponseObject);
        }
        /// <summary>
        /// Used to provision a new user in an enterprise. This method only works for enterprise admins.
        /// </summary>
        /// <param name="userRequest">BoxUserRequest object.</param>
        /// <param name="fields">Attribute(s) to include in the response.</param>
        /// <returns>Returns the user object for the newly created user.</returns>
        public async Task <BoxUser> CreateEnterpriseUserAsync(BoxUserRequest userRequest, IEnumerable <string> fields = null)
        {
            userRequest.ThrowIfNull("userRequest");
            userRequest.Name.ThrowIfNull("userRequest.Name");

            BoxRequest request = new BoxRequest(_config.UserEndpointUri, "")
                                 .Param(ParamFields, fields)
                                 .Payload(_converter.Serialize(userRequest))
                                 .Method(RequestMethod.Post);

            IBoxResponse <BoxUser> response = await ToResponseAsync <BoxUser>(request).ConfigureAwait(false);

            return(response.ResponseObject);
        }