=begin
#Docusign eSignature REST API

#The Docusign eSignature REST API provides you with a powerful, convenient, and simple Web services API for interacting with Docusign.

OpenAPI spec version: v2.1
Contact: devcenter@docusign.com
Generated by: https://github.com/swagger-api/swagger-codegen.git

=end

require "uri"

module DocuSign_eSign

  class CreateOptions
    # When set to **true**, creates the account using a preview billing plan.
    attr_accessor :preview_billing_plan

    def self.default
      @@default ||= CreateOptions.new
    end
  end

  class CreateAccountSignaturesOptions
    # 
    attr_accessor :decode_only

    def self.default
      @@default ||= CreateAccountSignaturesOptions.new
    end
  end

  class CreateCustomFieldOptions
    # 
    attr_accessor :apply_to_templates

    def self.default
      @@default ||= CreateCustomFieldOptions.new
    end
  end

  class CreatePermissionProfileOptions
    # 
    attr_accessor :include

    def self.default
      @@default ||= CreatePermissionProfileOptions.new
    end
  end

  class DeleteOptions
    # 
    attr_accessor :redact_user_data

    def self.default
      @@default ||= DeleteOptions.new
    end
  end

  class DeleteCustomFieldOptions
    # 
    attr_accessor :apply_to_templates

    def self.default
      @@default ||= DeleteCustomFieldOptions.new
    end
  end

  class DeletePermissionProfileOptions
    # 
    attr_accessor :move_users_to

    def self.default
      @@default ||= DeletePermissionProfileOptions.new
    end
  end

  class GetAccountIdentityVerificationOptions
    # 
    attr_accessor :identity_verification_workflow_status

    def self.default
      @@default ||= GetAccountIdentityVerificationOptions.new
    end
  end

  class GetAccountInformationOptions
    # When set to **true**, includes the account settings for the account in the response.
    attr_accessor :include_account_settings

    # 
    attr_accessor :include_trial_eligibility

    def self.default
      @@default ||= GetAccountInformationOptions.new
    end
  end

  class GetAccountSignatureImageOptions
    # 
    attr_accessor :include_chrome

    def self.default
      @@default ||= GetAccountSignatureImageOptions.new
    end
  end

  class GetAccountSignaturesOptions
    # 
    attr_accessor :stamp_format

    # 
    attr_accessor :stamp_name

    # 
    attr_accessor :stamp_type

    def self.default
      @@default ||= GetAccountSignaturesOptions.new
    end
  end

  class GetAgentUserAuthorizationsOptions
    # 
    attr_accessor :active_only

    # 
    attr_accessor :count

    # Part (substring) of email we are searching for.
    attr_accessor :email_substring

    # 
    attr_accessor :include_closed_users

    # 
    attr_accessor :permissions

    # 
    attr_accessor :start_position

    # 
    attr_accessor :user_name_substring

    def self.default
      @@default ||= GetAgentUserAuthorizationsOptions.new
    end
  end

  class GetBillingChargesOptions
    # Specifies which billing charges to return. Valid values are:  * envelopes * seats 
    attr_accessor :include_charges

    def self.default
      @@default ||= GetBillingChargesOptions.new
    end
  end

  class GetBrandOptions
    # 
    attr_accessor :include_external_references

    # 
    attr_accessor :include_logos

    def self.default
      @@default ||= GetBrandOptions.new
    end
  end

  class GetBrandResourcesByContentTypeOptions
    # 
    attr_accessor :langcode

    # 
    attr_accessor :return_master

    def self.default
      @@default ||= GetBrandResourcesByContentTypeOptions.new
    end
  end

  class GetConsumerDisclosureDefaultOptions
    # Specifies the language used in the response. The supported languages, with the language value shown in parenthesis, are: Arabic (ar), Armenian (hy), Bulgarian (bg), Czech (cs), Chinese Simplified (zh_CN), Chinese Traditional (zh_TW), Croatian (hr), Danish (da), Dutch (nl), English US (en), English UK (en_GB), Estonian (et), Farsi (fa), Finnish (fi), French (fr), French Canada (fr_CA), German (de), Greek (el), Hebrew (he), Hindi (hi), Hungarian (hu), Bahasa Indonesia (id), Italian (it), Japanese (ja), Korean (ko), Latvian (lv), Lithuanian (lt), Bahasa Melayu (ms), Norwegian (no), Polish (pl), Portuguese (pt), Portuguese Brazil (pt_BR), Romanian (ro), Russian (ru), Serbian (sr), Slovak (sk), Slovenian (sl), Spanish (es),Spanish Latin America (es_MX), Swedish (sv), Thai (th), Turkish (tr), Ukrainian (uk), and Vietnamese (vi).  Additionally, the value can be set to `browser` to automatically detect the browser language being used by the viewer and display the disclosure in that language. 
    attr_accessor :lang_code

    def self.default
      @@default ||= GetConsumerDisclosureDefaultOptions.new
    end
  end

  class GetPermissionProfileOptions
    # 
    attr_accessor :include

    def self.default
      @@default ||= GetPermissionProfileOptions.new
    end
  end

  class GetPrincipalUserAuthorizationsOptions
    # 
    attr_accessor :active_only

    # 
    attr_accessor :count

    # Part (substring) of email we are searching for.
    attr_accessor :email_substring

    # 
    attr_accessor :include_closed_users

    # 
    attr_accessor :permissions

    # 
    attr_accessor :start_position

    # 
    attr_accessor :user_name_substring

    def self.default
      @@default ||= GetPrincipalUserAuthorizationsOptions.new
    end
  end

  class ListBrandsOptions
    # When set to **true**, excludes distributor brand information from the response set.
    attr_accessor :exclude_distributor_brand

    # When set to **true**, returns the logos associated with the brand.
    attr_accessor :include_logos

    def self.default
      @@default ||= ListBrandsOptions.new
    end
  end

  class ListPermissionsOptions
    # 
    attr_accessor :include

    def self.default
      @@default ||= ListPermissionsOptions.new
    end
  end

  class ListRecipientNamesByEmailOptions
    # The email address for the user
    attr_accessor :email

    def self.default
      @@default ||= ListRecipientNamesByEmailOptions.new
    end
  end

  class ListSharedAccessOptions
    # Specifies maximum number of results included in the response. If no value is specified, this defaults to 1000.
    attr_accessor :count

    # 
    attr_accessor :envelopes_not_shared_user_status

    # 
    attr_accessor :folder_ids

    # Specifies the type of shared item being requested. The accepted values are: -envelopes: returns information about envelope sharing between users.
    attr_accessor :item_type

    # This can be used to filter user names in the response. The wild-card '*' (asterisk) can be used around the string.
    attr_accessor :search_text

    # Specifies which users should be included in the response. Multiple values can be used in the query by using a comma separated list of shared values. If the requestor does not have account administrator privileges, the shared_to value is used. Requestors that do not have account administrator privileges can only use the shared_to, any other setting will result in an error. The accepted values are:  -not_shared: Returns account users that the specified item type is not being shared with and that are not sharing the specified item type with the user.  User X (Share) X Account user  -shared_to: Returns account users that the specified item type is not being shared with and who are sharing the specified item type with the user (only shared to the user).  User X (Share) Account user  -shared_from: Returns account users that the specified item type is being shared with and who are not sharing the specified item type with the user (only shared from the user).  User (Share) >> Account user  -shared_to_and_from: Returns account users that the specified item type is being shared with and who are sharing the specified item type with the user.  User << (Share) >> Account user
    attr_accessor :shared

    # If the response set exceeds Count, this can be used to specify that the method should return users starting at the specified index. The first index is 0, and should be used in the first GET call. Typically this number is a multiple of Count. If no value is specified, this defaults to be 0. 
    attr_accessor :start_position

    # A comma separated list of userIds for whom the shared item information is being requested. 
    attr_accessor :user_ids

    def self.default
      @@default ||= ListSharedAccessOptions.new
    end
  end

  class UpdateAccountSignatureByIdOptions
    # 
    attr_accessor :close_existing_signature

    def self.default
      @@default ||= UpdateAccountSignatureByIdOptions.new
    end
  end

  class UpdateAccountSignatureImageOptions
    # 
    attr_accessor :transparent_png

    def self.default
      @@default ||= UpdateAccountSignatureImageOptions.new
    end
  end

  class UpdateBrandOptions
    # 
    attr_accessor :replace_brand

    def self.default
      @@default ||= UpdateBrandOptions.new
    end
  end

  class UpdateConsumerDisclosureOptions
    # 
    attr_accessor :include_metadata

    def self.default
      @@default ||= UpdateConsumerDisclosureOptions.new
    end
  end

  class UpdateCustomFieldOptions
    # 
    attr_accessor :apply_to_templates

    def self.default
      @@default ||= UpdateCustomFieldOptions.new
    end
  end

  class UpdatePermissionProfileOptions
    # 
    attr_accessor :include

    def self.default
      @@default ||= UpdatePermissionProfileOptions.new
    end
  end

  class UpdateSharedAccessOptions
    # 
    attr_accessor :item_type

    # 
    attr_accessor :preserve_existing_shared_access

    # 
    attr_accessor :user_ids

    def self.default
      @@default ||= UpdateSharedAccessOptions.new
    end
  end


  class AccountsApi
    attr_accessor :api_client

    def initialize(api_client = AccountsApi.default)
      @api_client = api_client
    end

    # Creates new accounts.
    # Creates new DocuSign service accounts.  This is used to create multiple DocuSign accounts with one call. It uses the same information and formats as the normal a  [Accounts:create](accounts_create) call with the information included within a `newAccountRequests` element. A maximum of 100 new accounts can be created at one time.  Note that the structure of the XML request is slightly different than the JSON request, in that the new account information is included in a `newAccountDefinition` property inside the `newAccountRequests` element. Response  The response returns the new account ID, password and the default user information for each newly created account.  A 201 code is returned if the call succeeded.  While the call may have succeed, some of the individual account requests may have failed. In the case of failures to create the account,  an `errorDetails` node is added in the response to each specific request that failed.
    # @param new_account_definition  (optional parameter)
    # @param DocuSign_eSign::CreateOptions Options for modifying the behavior of the function.
    # @return [NewAccountSummary]
    def create(new_account_definition, options = DocuSign_eSign::CreateOptions.default)
      data, _status_code, _headers = create_with_http_info( new_account_definition, options)
      return data
    end

    # Creates new accounts.
    # Creates new DocuSign service accounts.  This is used to create multiple DocuSign accounts with one call. It uses the same information and formats as the normal a  [Accounts:create](accounts_create) call with the information included within a &#x60;newAccountRequests&#x60; element. A maximum of 100 new accounts can be created at one time.  Note that the structure of the XML request is slightly different than the JSON request, in that the new account information is included in a &#x60;newAccountDefinition&#x60; property inside the &#x60;newAccountRequests&#x60; element. Response  The response returns the new account ID, password and the default user information for each newly created account.  A 201 code is returned if the call succeeded.  While the call may have succeed, some of the individual account requests may have failed. In the case of failures to create the account,  an &#x60;errorDetails&#x60; node is added in the response to each specific request that failed.
    # @param new_account_definition  (optional parameter)
    # @param DocuSign_eSign::CreateOptions Options for modifying the behavior of the function.
    # @return [Array<(NewAccountSummary, Fixnum, Hash)>] NewAccountSummary data, response status code and response headers
    def create_with_http_info(new_account_definition, options = DocuSign_eSign::CreateOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.create ..."
      end
      # resource path
      local_var_path = "/v2.1/accounts".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'preview_billing_plan'] = options.preview_billing_plan if !options.preview_billing_plan.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(new_account_definition)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'NewAccountSummary')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#create\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Adds/updates one or more account signatures. This request may include images in multi-part format.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param account_signatures_information  (optional parameter)
    # @param DocuSign_eSign::CreateAccountSignaturesOptions Options for modifying the behavior of the function.
    # @return [AccountSignaturesInformation]
    def create_account_signatures(account_id, account_signatures_information, options = DocuSign_eSign::CreateAccountSignaturesOptions.default)
      data, _status_code, _headers = create_account_signatures_with_http_info(account_id,  account_signatures_information, options)
      return data
    end

    # Adds/updates one or more account signatures. This request may include images in multi-part format.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param account_signatures_information  (optional parameter)
    # @param DocuSign_eSign::CreateAccountSignaturesOptions Options for modifying the behavior of the function.
    # @return [Array<(AccountSignaturesInformation, Fixnum, Hash)>] AccountSignaturesInformation data, response status code and response headers
    def create_account_signatures_with_http_info(account_id, account_signatures_information, options = DocuSign_eSign::CreateAccountSignaturesOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.create_account_signatures ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.create_account_signatures" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/signatures".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'decode_only'] = options.decode_only if !options.decode_only.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(account_signatures_information)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountSignaturesInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#create_account_signatures\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Creates one or more brand profile files for the account.
    # Creates one or more brand profile files for the account. The Account Branding feature (accountSettings properties `canSelfBrandSend` and `canSelfBrandSig`) must be set to **true** for the account to use this call.  An error is returned if `brandId` property for a brand profile is already set for the account. To upload a new version of an existing brand profile, you must delete the profile and then upload the newer version.  When brand profile files are being uploaded, they must be combined into one zip file and the `Content-Type` must be `application/zip`.
    # @param account_id The external account number (int) or account ID GUID.
    # @param brand  (optional parameter)
    # @return [BrandsResponse]
    def create_brand(account_id, brand)
      data, _status_code, _headers = create_brand_with_http_info(account_id,  brand)
      return data
    end

    # Creates one or more brand profile files for the account.
    # Creates one or more brand profile files for the account. The Account Branding feature (accountSettings properties &#x60;canSelfBrandSend&#x60; and &#x60;canSelfBrandSig&#x60;) must be set to **true** for the account to use this call.  An error is returned if &#x60;brandId&#x60; property for a brand profile is already set for the account. To upload a new version of an existing brand profile, you must delete the profile and then upload the newer version.  When brand profile files are being uploaded, they must be combined into one zip file and the &#x60;Content-Type&#x60; must be &#x60;application/zip&#x60;.
    # @param account_id The external account number (int) or account ID GUID.
    # @param brand  (optional parameter)
    # @return [Array<(BrandsResponse, Fixnum, Hash)>] BrandsResponse data, response status code and response headers
    def create_brand_with_http_info(account_id, brand)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.create_brand ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.create_brand" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(brand)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'BrandsResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#create_brand\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Creates an acount custom field.
    # This method creates a custom field and makes it available for all new envelopes associated with an account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param custom_field  (optional parameter)
    # @param DocuSign_eSign::CreateCustomFieldOptions Options for modifying the behavior of the function.
    # @return [CustomFields]
    def create_custom_field(account_id, custom_field, options = DocuSign_eSign::CreateCustomFieldOptions.default)
      data, _status_code, _headers = create_custom_field_with_http_info(account_id,  custom_field, options)
      return data
    end

    # Creates an acount custom field.
    # This method creates a custom field and makes it available for all new envelopes associated with an account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param custom_field  (optional parameter)
    # @param DocuSign_eSign::CreateCustomFieldOptions Options for modifying the behavior of the function.
    # @return [Array<(CustomFields, Fixnum, Hash)>] CustomFields data, response status code and response headers
    def create_custom_field_with_http_info(account_id, custom_field, options = DocuSign_eSign::CreateCustomFieldOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.create_custom_field ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.create_custom_field" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/custom_fields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'apply_to_templates'] = options.apply_to_templates if !options.apply_to_templates.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(custom_field)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'CustomFields')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#create_custom_field\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Creates a new permission profile in the specified account.
    # This method creates a new permission profile for an account.  ### Related topics  - [How to create a permission profile](/docs/esign-rest-api/how-to/permission-profile-creating/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param permission_profile  (optional parameter)
    # @param DocuSign_eSign::CreatePermissionProfileOptions Options for modifying the behavior of the function.
    # @return [PermissionProfile]
    def create_permission_profile(account_id, permission_profile, options = DocuSign_eSign::CreatePermissionProfileOptions.default)
      data, _status_code, _headers = create_permission_profile_with_http_info(account_id,  permission_profile, options)
      return data
    end

    # Creates a new permission profile in the specified account.
    # This method creates a new permission profile for an account.  ### Related topics  - [How to create a permission profile](/docs/esign-rest-api/how-to/permission-profile-creating/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param permission_profile  (optional parameter)
    # @param DocuSign_eSign::CreatePermissionProfileOptions Options for modifying the behavior of the function.
    # @return [Array<(PermissionProfile, Fixnum, Hash)>] PermissionProfile data, response status code and response headers
    def create_permission_profile_with_http_info(account_id, permission_profile, options = DocuSign_eSign::CreatePermissionProfileOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.create_permission_profile ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.create_permission_profile" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/permission_profiles".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'include'] = options.include if !options.include.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(permission_profile)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PermissionProfile')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#create_permission_profile\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Creates the user authorization
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param user_authorization_create_request  (optional parameter)
    # @return [UserAuthorization]
    def create_user_authorization(account_id, user_id, user_authorization_create_request)
      data, _status_code, _headers = create_user_authorization_with_http_info(account_id, user_id,  user_authorization_create_request)
      return data
    end

    # Creates the user authorization
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param user_authorization_create_request  (optional parameter)
    # @return [Array<(UserAuthorization, Fixnum, Hash)>] UserAuthorization data, response status code and response headers
    def create_user_authorization_with_http_info(account_id, user_id, user_authorization_create_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.create_user_authorization ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.create_user_authorization" if account_id.nil?
      # verify the required parameter 'user_id' is set
      fail ArgumentError, "Missing the required parameter 'user_id' when calling AccountsApi.create_user_authorization" if user_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/users/{userId}/authorization".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'userId' + '}', user_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(user_authorization_create_request)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'UserAuthorization')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#create_user_authorization\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Creates ot updates user authorizations
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param user_authorizations_request  (optional parameter)
    # @return [UserAuthorizationsResponse]
    def create_user_authorizations(account_id, user_id, user_authorizations_request)
      data, _status_code, _headers = create_user_authorizations_with_http_info(account_id, user_id,  user_authorizations_request)
      return data
    end

    # Creates ot updates user authorizations
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param user_authorizations_request  (optional parameter)
    # @return [Array<(UserAuthorizationsResponse, Fixnum, Hash)>] UserAuthorizationsResponse data, response status code and response headers
    def create_user_authorizations_with_http_info(account_id, user_id, user_authorizations_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.create_user_authorizations ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.create_user_authorizations" if account_id.nil?
      # verify the required parameter 'user_id' is set
      fail ArgumentError, "Missing the required parameter 'user_id' when calling AccountsApi.create_user_authorizations" if user_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/users/{userId}/authorizations".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'userId' + '}', user_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(user_authorizations_request)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'UserAuthorizationsResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#create_user_authorizations\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes the specified account.
    # This closes the specified account. You must be an account admin to close your account. Once closed, an account must be reopened by DocuSign.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::DeleteOptions Options for modifying the behavior of the function.
    # @return [nil]
    def delete(account_id, options = DocuSign_eSign::DeleteOptions.default)
      delete_with_http_info(account_id, options)
      return nil
    end

    # Deletes the specified account.
    # This closes the specified account. You must be an account admin to close your account. Once closed, an account must be reopened by DocuSign.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::DeleteOptions Options for modifying the behavior of the function.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_with_http_info(account_id, options = DocuSign_eSign::DeleteOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'redact_user_data'] = options.redact_user_data if !options.redact_user_data.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Close the specified signature by Id.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param signature_id The ID of the signature being accessed.
    # @return [nil]
    def delete_account_signature(account_id, signature_id)
      delete_account_signature_with_http_info(account_id, signature_id)
      return nil
    end

    # Close the specified signature by Id.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param signature_id The ID of the signature being accessed.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_account_signature_with_http_info(account_id, signature_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete_account_signature ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete_account_signature" if account_id.nil?
      # verify the required parameter 'signature_id' is set
      fail ArgumentError, "Missing the required parameter 'signature_id' when calling AccountsApi.delete_account_signature" if signature_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/signatures/{signatureId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'signatureId' + '}', signature_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete_account_signature\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes a signature, initials, or stamps image.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param image_type One of **signature_image** or **initials_image**.
    # @param signature_id The ID of the signature being accessed.
    # @return [AccountSignature]
    def delete_account_signature_image(account_id, image_type, signature_id)
      data, _status_code, _headers = delete_account_signature_image_with_http_info(account_id, image_type, signature_id)
      return data
    end

    # Deletes a signature, initials, or stamps image.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param image_type One of **signature_image** or **initials_image**.
    # @param signature_id The ID of the signature being accessed.
    # @return [Array<(AccountSignature, Fixnum, Hash)>] AccountSignature data, response status code and response headers
    def delete_account_signature_image_with_http_info(account_id, image_type, signature_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete_account_signature_image ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete_account_signature_image" if account_id.nil?
      # verify the required parameter 'image_type' is set
      fail ArgumentError, "Missing the required parameter 'image_type' when calling AccountsApi.delete_account_signature_image" if image_type.nil?
      # verify the required parameter 'signature_id' is set
      fail ArgumentError, "Missing the required parameter 'signature_id' when calling AccountsApi.delete_account_signature_image" if signature_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/signatures/{signatureId}/{imageType}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'imageType' + '}', image_type.to_s).sub('{' + 'signatureId' + '}', signature_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountSignature')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete_account_signature_image\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Removes a brand.
    # This method deletes a brand from an account.  **Note:** Branding for either signing or sending must be enabled for the account (`canSelfBrandSend` , `canSelfBrandSign`, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @return [nil]
    def delete_brand(account_id, brand_id)
      delete_brand_with_http_info(account_id, brand_id)
      return nil
    end

    # Removes a brand.
    # This method deletes a brand from an account.  **Note:** Branding for either signing or sending must be enabled for the account (&#x60;canSelfBrandSend&#x60; , &#x60;canSelfBrandSign&#x60;, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_brand_with_http_info(account_id, brand_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete_brand ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete_brand" if account_id.nil?
      # verify the required parameter 'brand_id' is set
      fail ArgumentError, "Missing the required parameter 'brand_id' when calling AccountsApi.delete_brand" if brand_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands/{brandId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'brandId' + '}', brand_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete_brand\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete one branding logo.
    # This method deletes a single logo from an account brand.  **Note:** Branding for either signing or sending must be enabled for the account (`canSelfBrandSend` , `canSelfBrandSign`, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @param logo_type One of **Primary**, **Secondary** or **Email**.
    # @return [nil]
    def delete_brand_logo_by_type(account_id, brand_id, logo_type)
      delete_brand_logo_by_type_with_http_info(account_id, brand_id, logo_type)
      return nil
    end

    # Delete one branding logo.
    # This method deletes a single logo from an account brand.  **Note:** Branding for either signing or sending must be enabled for the account (&#x60;canSelfBrandSend&#x60; , &#x60;canSelfBrandSign&#x60;, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @param logo_type One of **Primary**, **Secondary** or **Email**.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_brand_logo_by_type_with_http_info(account_id, brand_id, logo_type)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete_brand_logo_by_type ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete_brand_logo_by_type" if account_id.nil?
      # verify the required parameter 'brand_id' is set
      fail ArgumentError, "Missing the required parameter 'brand_id' when calling AccountsApi.delete_brand_logo_by_type" if brand_id.nil?
      # verify the required parameter 'logo_type' is set
      fail ArgumentError, "Missing the required parameter 'logo_type' when calling AccountsApi.delete_brand_logo_by_type" if logo_type.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands/{brandId}/logos/{logoType}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'brandId' + '}', brand_id.to_s).sub('{' + 'logoType' + '}', logo_type.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete_brand_logo_by_type\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes one or more brand profiles.
    # Deletes one or more brand profiles from an account. The Account Branding feature (accountSettings properties `canSelfBrandSend` and `canSelfBrandSend`) must be set to **true** to use this call.
    # @param account_id The external account number (int) or account ID Guid.
    # @param brands_request  (optional parameter)
    # @return [BrandsResponse]
    def delete_brands(account_id, brands_request)
      data, _status_code, _headers = delete_brands_with_http_info(account_id,  brands_request)
      return data
    end

    # Deletes one or more brand profiles.
    # Deletes one or more brand profiles from an account. The Account Branding feature (accountSettings properties &#x60;canSelfBrandSend&#x60; and &#x60;canSelfBrandSend&#x60;) must be set to **true** to use this call.
    # @param account_id The external account number (int) or account ID Guid.
    # @param brands_request  (optional parameter)
    # @return [Array<(BrandsResponse, Fixnum, Hash)>] BrandsResponse data, response status code and response headers
    def delete_brands_with_http_info(account_id, brands_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete_brands ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete_brands" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(brands_request)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'BrandsResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete_brands\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes the signature for one or more captive recipient records.
    # Deletes the signature for one or more captive recipient records; it is primarily used for testing. This provides a way to reset the signature associated with a client user ID so that a new signature can be created the next time the client user ID is used.
    # @param account_id The external account number (int) or account ID Guid.
    # @param recipient_part 
    # @param captive_recipient_information  (optional parameter)
    # @return [CaptiveRecipientInformation]
    def delete_captive_recipient(account_id, recipient_part, captive_recipient_information)
      data, _status_code, _headers = delete_captive_recipient_with_http_info(account_id, recipient_part,  captive_recipient_information)
      return data
    end

    # Deletes the signature for one or more captive recipient records.
    # Deletes the signature for one or more captive recipient records; it is primarily used for testing. This provides a way to reset the signature associated with a client user ID so that a new signature can be created the next time the client user ID is used.
    # @param account_id The external account number (int) or account ID Guid.
    # @param recipient_part 
    # @param captive_recipient_information  (optional parameter)
    # @return [Array<(CaptiveRecipientInformation, Fixnum, Hash)>] CaptiveRecipientInformation data, response status code and response headers
    def delete_captive_recipient_with_http_info(account_id, recipient_part, captive_recipient_information)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete_captive_recipient ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete_captive_recipient" if account_id.nil?
      # verify the required parameter 'recipient_part' is set
      fail ArgumentError, "Missing the required parameter 'recipient_part' when calling AccountsApi.delete_captive_recipient" if recipient_part.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/captive_recipients/{recipientPart}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'recipientPart' + '}', recipient_part.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(captive_recipient_information)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'CaptiveRecipientInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete_captive_recipient\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete an existing account custom field.
    # This method deletes an existing account custom field.
    # @param account_id The external account number (int) or account ID Guid.
    # @param custom_field_id 
    # @param DocuSign_eSign::DeleteCustomFieldOptions Options for modifying the behavior of the function.
    # @return [nil]
    def delete_custom_field(account_id, custom_field_id, options = DocuSign_eSign::DeleteCustomFieldOptions.default)
      delete_custom_field_with_http_info(account_id, custom_field_id, options)
      return nil
    end

    # Delete an existing account custom field.
    # This method deletes an existing account custom field.
    # @param account_id The external account number (int) or account ID Guid.
    # @param custom_field_id 
    # @param DocuSign_eSign::DeleteCustomFieldOptions Options for modifying the behavior of the function.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_custom_field_with_http_info(account_id, custom_field_id, options = DocuSign_eSign::DeleteCustomFieldOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete_custom_field ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete_custom_field" if account_id.nil?
      # verify the required parameter 'custom_field_id' is set
      fail ArgumentError, "Missing the required parameter 'custom_field_id' when calling AccountsApi.delete_custom_field" if custom_field_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/custom_fields/{customFieldId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'customFieldId' + '}', custom_field_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'apply_to_templates'] = options.apply_to_templates if !options.apply_to_templates.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete_custom_field\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes configuration information for the eNote eOriginal integration.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @return [nil]
    def delete_e_note_configuration(account_id)
      delete_e_note_configuration_with_http_info(account_id)
      return nil
    end

    # Deletes configuration information for the eNote eOriginal integration.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_e_note_configuration_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete_e_note_configuration ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete_e_note_configuration" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings/enote_configuration".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete_e_note_configuration\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes a permissions profile within the specified account.
    # This method deletes a permission profile from an account.  To delete a permission profile, it must not have any users associated with it. When you use this method to delete a permission profile, you can reassign the users associated with it to a new permission profile at the same time by using the `move_users_to` query parameter.   ### Related topics  - [How to delete a permission profile](/docs/esign-rest-api/how-to/permission-profile-deleting/)
    # @param account_id The external account number (int) or account ID Guid.
    # @param permission_profile_id 
    # @param DocuSign_eSign::DeletePermissionProfileOptions Options for modifying the behavior of the function.
    # @return [nil]
    def delete_permission_profile(account_id, permission_profile_id, options = DocuSign_eSign::DeletePermissionProfileOptions.default)
      delete_permission_profile_with_http_info(account_id, permission_profile_id, options)
      return nil
    end

    # Deletes a permissions profile within the specified account.
    # This method deletes a permission profile from an account.  To delete a permission profile, it must not have any users associated with it. When you use this method to delete a permission profile, you can reassign the users associated with it to a new permission profile at the same time by using the &#x60;move_users_to&#x60; query parameter.   ### Related topics  - [How to delete a permission profile](/docs/esign-rest-api/how-to/permission-profile-deleting/)
    # @param account_id The external account number (int) or account ID Guid.
    # @param permission_profile_id 
    # @param DocuSign_eSign::DeletePermissionProfileOptions Options for modifying the behavior of the function.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_permission_profile_with_http_info(account_id, permission_profile_id, options = DocuSign_eSign::DeletePermissionProfileOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete_permission_profile ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete_permission_profile" if account_id.nil?
      # verify the required parameter 'permission_profile_id' is set
      fail ArgumentError, "Missing the required parameter 'permission_profile_id' when calling AccountsApi.delete_permission_profile" if permission_profile_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/permission_profiles/{permissionProfileId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'permissionProfileId' + '}', permission_profile_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'move_users_to'] = options.move_users_to if !options.move_users_to.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete_permission_profile\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes the user authorization
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param authorization_id 
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @return [nil]
    def delete_user_authorization(account_id, authorization_id, user_id)
      delete_user_authorization_with_http_info(account_id, authorization_id, user_id)
      return nil
    end

    # Deletes the user authorization
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param authorization_id 
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_user_authorization_with_http_info(account_id, authorization_id, user_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete_user_authorization ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete_user_authorization" if account_id.nil?
      # verify the required parameter 'authorization_id' is set
      fail ArgumentError, "Missing the required parameter 'authorization_id' when calling AccountsApi.delete_user_authorization" if authorization_id.nil?
      # verify the required parameter 'user_id' is set
      fail ArgumentError, "Missing the required parameter 'user_id' when calling AccountsApi.delete_user_authorization" if user_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/users/{userId}/authorization/{authorizationId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'authorizationId' + '}', authorization_id.to_s).sub('{' + 'userId' + '}', user_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete_user_authorization\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Creates ot updates user authorizations
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param user_authorizations_delete_request  (optional parameter)
    # @return [UserAuthorizationsDeleteResponse]
    def delete_user_authorizations(account_id, user_id, user_authorizations_delete_request)
      data, _status_code, _headers = delete_user_authorizations_with_http_info(account_id, user_id,  user_authorizations_delete_request)
      return data
    end

    # Creates ot updates user authorizations
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param user_authorizations_delete_request  (optional parameter)
    # @return [Array<(UserAuthorizationsDeleteResponse, Fixnum, Hash)>] UserAuthorizationsDeleteResponse data, response status code and response headers
    def delete_user_authorizations_with_http_info(account_id, user_id, user_authorizations_delete_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.delete_user_authorizations ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.delete_user_authorizations" if account_id.nil?
      # verify the required parameter 'user_id' is set
      fail ArgumentError, "Missing the required parameter 'user_id' when calling AccountsApi.delete_user_authorizations" if user_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/users/{userId}/authorizations".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'userId' + '}', user_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(user_authorizations_delete_request)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'UserAuthorizationsDeleteResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#delete_user_authorizations\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get the list of identity verification options for an account
    # This method returns a list of Identity Verification workflows that are available to an account.  **Note:** To use this method, you must either be an account administrator or a sender.  ### Related topics  - [How to require ID Verification (IDV) for a recipient](/docs/esign-rest-api/how-to/id-verification/)  
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetAccountIdentityVerificationOptions Options for modifying the behavior of the function.
    # @return [AccountIdentityVerificationResponse]
    def get_account_identity_verification(account_id, options = DocuSign_eSign::GetAccountIdentityVerificationOptions.default)
      data, _status_code, _headers = get_account_identity_verification_with_http_info(account_id, options)
      return data
    end

    # Get the list of identity verification options for an account
    # This method returns a list of Identity Verification workflows that are available to an account.  **Note:** To use this method, you must either be an account administrator or a sender.  ### Related topics  - [How to require ID Verification (IDV) for a recipient](/docs/esign-rest-api/how-to/id-verification/)  
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetAccountIdentityVerificationOptions Options for modifying the behavior of the function.
    # @return [Array<(AccountIdentityVerificationResponse, Fixnum, Hash)>] AccountIdentityVerificationResponse data, response status code and response headers
    def get_account_identity_verification_with_http_info(account_id, options = DocuSign_eSign::GetAccountIdentityVerificationOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_account_identity_verification ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_account_identity_verification" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/identity_verification".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'identity_verification_workflow_status'] = options.identity_verification_workflow_status if !options.identity_verification_workflow_status.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountIdentityVerificationResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_account_identity_verification\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Retrieves the account information for the specified account.
    # Retrieves the account information for the specified account.  **Response** The `canUpgrade` property contains is a Boolean that indicates whether the account can be upgraded through the API. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetAccountInformationOptions Options for modifying the behavior of the function.
    # @return [AccountInformation]
    def get_account_information(account_id, options = DocuSign_eSign::GetAccountInformationOptions.default)
      data, _status_code, _headers = get_account_information_with_http_info(account_id, options)
      return data
    end

    # Retrieves the account information for the specified account.
    # Retrieves the account information for the specified account.  **Response** The &#x60;canUpgrade&#x60; property contains is a Boolean that indicates whether the account can be upgraded through the API. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetAccountInformationOptions Options for modifying the behavior of the function.
    # @return [Array<(AccountInformation, Fixnum, Hash)>] AccountInformation data, response status code and response headers
    def get_account_information_with_http_info(account_id, options = DocuSign_eSign::GetAccountInformationOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_account_information ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_account_information" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'include_account_settings'] = options.include_account_settings if !options.include_account_settings.nil?
      query_params[:'include_trial_eligibility'] = options.include_trial_eligibility if !options.include_trial_eligibility.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_account_information\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns information about a single signature by specifed signatureId.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param signature_id The ID of the signature being accessed.
    # @return [AccountSignature]
    def get_account_signature(account_id, signature_id)
      data, _status_code, _headers = get_account_signature_with_http_info(account_id, signature_id)
      return data
    end

    # Returns information about a single signature by specifed signatureId.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param signature_id The ID of the signature being accessed.
    # @return [Array<(AccountSignature, Fixnum, Hash)>] AccountSignature data, response status code and response headers
    def get_account_signature_with_http_info(account_id, signature_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_account_signature ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_account_signature" if account_id.nil?
      # verify the required parameter 'signature_id' is set
      fail ArgumentError, "Missing the required parameter 'signature_id' when calling AccountsApi.get_account_signature" if signature_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/signatures/{signatureId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'signatureId' + '}', signature_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountSignature')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_account_signature\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a signature, initials, or stamps image.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param image_type One of **signature_image** or **initials_image**.
    # @param signature_id The ID of the signature being accessed.
    # @param DocuSign_eSign::GetAccountSignatureImageOptions Options for modifying the behavior of the function.
    # @return [File]
    def get_account_signature_image(account_id, image_type, signature_id, options = DocuSign_eSign::GetAccountSignatureImageOptions.default)
      data, _status_code, _headers = get_account_signature_image_with_http_info(account_id, image_type, signature_id, options)
      return data
    end

    # Returns a signature, initials, or stamps image.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param image_type One of **signature_image** or **initials_image**.
    # @param signature_id The ID of the signature being accessed.
    # @param DocuSign_eSign::GetAccountSignatureImageOptions Options for modifying the behavior of the function.
    # @return [Array<(File, Fixnum, Hash)>] File data, response status code and response headers
    def get_account_signature_image_with_http_info(account_id, image_type, signature_id, options = DocuSign_eSign::GetAccountSignatureImageOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_account_signature_image ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_account_signature_image" if account_id.nil?
      # verify the required parameter 'image_type' is set
      fail ArgumentError, "Missing the required parameter 'image_type' when calling AccountsApi.get_account_signature_image" if image_type.nil?
      # verify the required parameter 'signature_id' is set
      fail ArgumentError, "Missing the required parameter 'signature_id' when calling AccountsApi.get_account_signature_image" if signature_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/signatures/{signatureId}/{imageType}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'imageType' + '}', image_type.to_s).sub('{' + 'signatureId' + '}', signature_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'include_chrome'] = options.include_chrome if !options.include_chrome.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['image/gif'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'File')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_account_signature_image\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the managed signature definitions for the account
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetAccountSignaturesOptions Options for modifying the behavior of the function.
    # @return [AccountSignaturesInformation]
    def get_account_signatures(account_id, options = DocuSign_eSign::GetAccountSignaturesOptions.default)
      data, _status_code, _headers = get_account_signatures_with_http_info(account_id, options)
      return data
    end

    # Returns the managed signature definitions for the account
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetAccountSignaturesOptions Options for modifying the behavior of the function.
    # @return [Array<(AccountSignaturesInformation, Fixnum, Hash)>] AccountSignaturesInformation data, response status code and response headers
    def get_account_signatures_with_http_info(account_id, options = DocuSign_eSign::GetAccountSignaturesOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_account_signatures ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_account_signatures" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/signatures".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'stamp_format'] = options.stamp_format if !options.stamp_format.nil?
      query_params[:'stamp_name'] = options.stamp_name if !options.stamp_name.nil?
      query_params[:'stamp_type'] = options.stamp_type if !options.stamp_type.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountSignaturesInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_account_signatures\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns tab settings list for specified account
    # This method returns information about the tab types and tab functionality that is currently enabled for an account.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [TabAccountSettings]
    def get_account_tab_settings(account_id)
      data, _status_code, _headers = get_account_tab_settings_with_http_info(account_id)
      return data
    end

    # Returns tab settings list for specified account
    # This method returns information about the tab types and tab functionality that is currently enabled for an account.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(TabAccountSettings, Fixnum, Hash)>] TabAccountSettings data, response status code and response headers
    def get_account_tab_settings_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_account_tab_settings ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_account_tab_settings" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings/tabs".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'TabAccountSettings')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_account_tab_settings\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the agent user authorizations
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param DocuSign_eSign::GetAgentUserAuthorizationsOptions Options for modifying the behavior of the function.
    # @return [UserAuthorizations]
    def get_agent_user_authorizations(account_id, user_id, options = DocuSign_eSign::GetAgentUserAuthorizationsOptions.default)
      data, _status_code, _headers = get_agent_user_authorizations_with_http_info(account_id, user_id, options)
      return data
    end

    # Returns the agent user authorizations
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param DocuSign_eSign::GetAgentUserAuthorizationsOptions Options for modifying the behavior of the function.
    # @return [Array<(UserAuthorizations, Fixnum, Hash)>] UserAuthorizations data, response status code and response headers
    def get_agent_user_authorizations_with_http_info(account_id, user_id, options = DocuSign_eSign::GetAgentUserAuthorizationsOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_agent_user_authorizations ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_agent_user_authorizations" if account_id.nil?
      # verify the required parameter 'user_id' is set
      fail ArgumentError, "Missing the required parameter 'user_id' when calling AccountsApi.get_agent_user_authorizations" if user_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/users/{userId}/authorizations/agent".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'userId' + '}', user_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'active_only'] = options.active_only if !options.active_only.nil?
      query_params[:'count'] = options.count if !options.count.nil?
      query_params[:'email_substring'] = options.email_substring if !options.email_substring.nil?
      query_params[:'include_closed_users'] = options.include_closed_users if !options.include_closed_users.nil?
      query_params[:'permissions'] = options.permissions if !options.permissions.nil?
      query_params[:'start_position'] = options.start_position if !options.start_position.nil?
      query_params[:'user_name_substring'] = options.user_name_substring if !options.user_name_substring.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'UserAuthorizations')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_agent_user_authorizations\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get all payment gateway account for the provided accountId
    # This method returns a list of payment gateway accounts and basic information about them.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [PaymentGatewayAccountsInfo]
    def get_all_payment_gateway_accounts(account_id)
      data, _status_code, _headers = get_all_payment_gateway_accounts_with_http_info(account_id)
      return data
    end

    # Get all payment gateway account for the provided accountId
    # This method returns a list of payment gateway accounts and basic information about them.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(PaymentGatewayAccountsInfo, Fixnum, Hash)>] PaymentGatewayAccountsInfo data, response status code and response headers
    def get_all_payment_gateway_accounts_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_all_payment_gateway_accounts ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_all_payment_gateway_accounts" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/payment_gateway_accounts".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PaymentGatewayAccountsInfo')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_all_payment_gateway_accounts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets list of recurring and usage charges for the account.
    # Retrieves the list of recurring and usage charges for the account. This can be used to determine the charge structure and usage of charge plan items.   Privileges required: account administrator 
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetBillingChargesOptions Options for modifying the behavior of the function.
    # @return [BillingChargeResponse]
    def get_billing_charges(account_id, options = DocuSign_eSign::GetBillingChargesOptions.default)
      data, _status_code, _headers = get_billing_charges_with_http_info(account_id, options)
      return data
    end

    # Gets list of recurring and usage charges for the account.
    # Retrieves the list of recurring and usage charges for the account. This can be used to determine the charge structure and usage of charge plan items.   Privileges required: account administrator 
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetBillingChargesOptions Options for modifying the behavior of the function.
    # @return [Array<(BillingChargeResponse, Fixnum, Hash)>] BillingChargeResponse data, response status code and response headers
    def get_billing_charges_with_http_info(account_id, options = DocuSign_eSign::GetBillingChargesOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_billing_charges ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_billing_charges" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/billing_charges".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'include_charges'] = options.include_charges if !options.include_charges.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'BillingChargeResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_billing_charges\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get information for a specific brand.
    # This method returns details about an account brand.  **Note:** Branding for either signing or sending must be enabled for the account (`canSelfBrandSend` , `canSelfBrandSign`, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @param DocuSign_eSign::GetBrandOptions Options for modifying the behavior of the function.
    # @return [Brand]
    def get_brand(account_id, brand_id, options = DocuSign_eSign::GetBrandOptions.default)
      data, _status_code, _headers = get_brand_with_http_info(account_id, brand_id, options)
      return data
    end

    # Get information for a specific brand.
    # This method returns details about an account brand.  **Note:** Branding for either signing or sending must be enabled for the account (&#x60;canSelfBrandSend&#x60; , &#x60;canSelfBrandSign&#x60;, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @param DocuSign_eSign::GetBrandOptions Options for modifying the behavior of the function.
    # @return [Array<(Brand, Fixnum, Hash)>] Brand data, response status code and response headers
    def get_brand_with_http_info(account_id, brand_id, options = DocuSign_eSign::GetBrandOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_brand ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_brand" if account_id.nil?
      # verify the required parameter 'brand_id' is set
      fail ArgumentError, "Missing the required parameter 'brand_id' when calling AccountsApi.get_brand" if brand_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands/{brandId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'brandId' + '}', brand_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'include_external_references'] = options.include_external_references if !options.include_external_references.nil?
      query_params[:'include_logos'] = options.include_logos if !options.include_logos.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Brand')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_brand\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Export a specific brand.
    # This method exports information about a brand to an XML file.  **Note:** Branding for either signing or sending must be enabled for the account (`canSelfBrandSend` , `canSelfBrandSign`, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @return [nil]
    def get_brand_export_file(account_id, brand_id)
      get_brand_export_file_with_http_info(account_id, brand_id)
      return nil
    end

    # Export a specific brand.
    # This method exports information about a brand to an XML file.  **Note:** Branding for either signing or sending must be enabled for the account (&#x60;canSelfBrandSend&#x60; , &#x60;canSelfBrandSign&#x60;, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def get_brand_export_file_with_http_info(account_id, brand_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_brand_export_file ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_brand_export_file" if account_id.nil?
      # verify the required parameter 'brand_id' is set
      fail ArgumentError, "Missing the required parameter 'brand_id' when calling AccountsApi.get_brand_export_file" if brand_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands/{brandId}/file".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'brandId' + '}', brand_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_brand_export_file\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Obtains the specified image for a brand.
    # This method returns a specific logo that is used in a brand.  **Note:** Branding for either signing or sending must be enabled for the account (`canSelfBrandSend` , `canSelfBrandSign`, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @param logo_type One of **Primary**, **Secondary** or **Email**.
    # @return [File]
    def get_brand_logo_by_type(account_id, brand_id, logo_type)
      data, _status_code, _headers = get_brand_logo_by_type_with_http_info(account_id, brand_id, logo_type)
      return data
    end

    # Obtains the specified image for a brand.
    # This method returns a specific logo that is used in a brand.  **Note:** Branding for either signing or sending must be enabled for the account (&#x60;canSelfBrandSend&#x60; , &#x60;canSelfBrandSign&#x60;, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @param logo_type One of **Primary**, **Secondary** or **Email**.
    # @return [Array<(File, Fixnum, Hash)>] File data, response status code and response headers
    def get_brand_logo_by_type_with_http_info(account_id, brand_id, logo_type)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_brand_logo_by_type ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_brand_logo_by_type" if account_id.nil?
      # verify the required parameter 'brand_id' is set
      fail ArgumentError, "Missing the required parameter 'brand_id' when calling AccountsApi.get_brand_logo_by_type" if brand_id.nil?
      # verify the required parameter 'logo_type' is set
      fail ArgumentError, "Missing the required parameter 'logo_type' when calling AccountsApi.get_brand_logo_by_type" if logo_type.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands/{brandId}/logos/{logoType}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'brandId' + '}', brand_id.to_s).sub('{' + 'logoType' + '}', logo_type.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['image/png'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'File')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_brand_logo_by_type\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the specified account's list of branding resources (metadata).
    # This method returns metadata about the branding resources that are associated with an account.  **Note:** Branding for either signing or sending must be enabled for the account (`canSelfBrandSend` , `canSelfBrandSign`, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @return [BrandResourcesList]
    def get_brand_resources(account_id, brand_id)
      data, _status_code, _headers = get_brand_resources_with_http_info(account_id, brand_id)
      return data
    end

    # Returns the specified account&#39;s list of branding resources (metadata).
    # This method returns metadata about the branding resources that are associated with an account.  **Note:** Branding for either signing or sending must be enabled for the account (&#x60;canSelfBrandSend&#x60; , &#x60;canSelfBrandSign&#x60;, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @return [Array<(BrandResourcesList, Fixnum, Hash)>] BrandResourcesList data, response status code and response headers
    def get_brand_resources_with_http_info(account_id, brand_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_brand_resources ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_brand_resources" if account_id.nil?
      # verify the required parameter 'brand_id' is set
      fail ArgumentError, "Missing the required parameter 'brand_id' when calling AccountsApi.get_brand_resources" if brand_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands/{brandId}/resources".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'brandId' + '}', brand_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'BrandResourcesList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_brand_resources\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the specified branding resource file.
    # This method returns a specific branding resource file.  A brand uses a set of brand resource files to control the sending, signing, email message, and captive (embedded) signing experiences.  You can modify the default email messages and formats in these files and upload them to your brand to customize the user experience.  **Important:** When you upload a modified resource file, only the elements that differ from the master resource file are saved as your resource file. Similarly, when you download your resource files, only the modified elements are included in the file.   **Note:** Branding for either signing or sending must be enabled for the account (`canSelfBrandSend` , `canSelfBrandSign`, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @param resource_content_type 
    # @param DocuSign_eSign::GetBrandResourcesByContentTypeOptions Options for modifying the behavior of the function.
    # @return [nil]
    def get_brand_resources_by_content_type(account_id, brand_id, resource_content_type, options = DocuSign_eSign::GetBrandResourcesByContentTypeOptions.default)
      get_brand_resources_by_content_type_with_http_info(account_id, brand_id, resource_content_type, options)
      return nil
    end

    # Returns the specified branding resource file.
    # This method returns a specific branding resource file.  A brand uses a set of brand resource files to control the sending, signing, email message, and captive (embedded) signing experiences.  You can modify the default email messages and formats in these files and upload them to your brand to customize the user experience.  **Important:** When you upload a modified resource file, only the elements that differ from the master resource file are saved as your resource file. Similarly, when you download your resource files, only the modified elements are included in the file.   **Note:** Branding for either signing or sending must be enabled for the account (&#x60;canSelfBrandSend&#x60; , &#x60;canSelfBrandSign&#x60;, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @param resource_content_type 
    # @param DocuSign_eSign::GetBrandResourcesByContentTypeOptions Options for modifying the behavior of the function.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def get_brand_resources_by_content_type_with_http_info(account_id, brand_id, resource_content_type, options = DocuSign_eSign::GetBrandResourcesByContentTypeOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_brand_resources_by_content_type ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_brand_resources_by_content_type" if account_id.nil?
      # verify the required parameter 'brand_id' is set
      fail ArgumentError, "Missing the required parameter 'brand_id' when calling AccountsApi.get_brand_resources_by_content_type" if brand_id.nil?
      # verify the required parameter 'resource_content_type' is set
      fail ArgumentError, "Missing the required parameter 'resource_content_type' when calling AccountsApi.get_brand_resources_by_content_type" if resource_content_type.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands/{brandId}/resources/{resourceContentType}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'brandId' + '}', brand_id.to_s).sub('{' + 'resourceContentType' + '}', resource_content_type.to_s)

      # query parameters
      query_params = {}
      query_params[:'langcode'] = options.langcode if !options.langcode.nil?
      query_params[:'return_master'] = options.return_master if !options.return_master.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_brand_resources_by_content_type\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the Electronic Record and Signature Disclosure.
    # Retrieves the Electronic Record and Signature Disclosure, with HTML formatting, for the requested envelope recipient. This might be different than the current account disclosure depending on account settings, such as branding, and when the account disclosure was last updated. An optional query string can be included to return the language for the disclosure.  
    # @param account_id The external account number (int) or account ID Guid.
    # @param lang_code The simple type enumeration the language used in the response. The supported languages, with the language value shown in parenthesis, are:Arabic (ar), Armenian (hy), Bulgarian (bg), Czech (cs), Chinese Simplified (zh_CN), Chinese Traditional (zh_TW), Croatian (hr), Danish (da), Dutch (nl), English US (en), English UK (en_GB), Estonian (et), Farsi (fa), Finnish (fi), French (fr), French Canada (fr_CA), German (de), Greek (el), Hebrew (he), Hindi (hi), Hungarian (hu), Bahasa Indonesia (id), Italian (it), Japanese (ja), Korean (ko), Latvian (lv), Lithuanian (lt), Bahasa Melayu (ms), Norwegian (no), Polish (pl), Portuguese (pt), Portuguese Brazil (pt_BR), Romanian (ro), Russian (ru), Serbian (sr), Slovak (sk), Slovenian (sl), Spanish (es),Spanish Latin America (es_MX), Swedish (sv), Thai (th), Turkish (tr), Ukrainian (uk) and Vietnamese (vi). Additionally, the value can be set to ï¿½browserï¿½ to automatically detect the browser language being used by the viewer and display the disclosure in that language.
    # @return [ConsumerDisclosure]
    def get_consumer_disclosure(account_id, lang_code)
      data, _status_code, _headers = get_consumer_disclosure_with_http_info(account_id, lang_code)
      return data
    end

    # Gets the Electronic Record and Signature Disclosure.
    # Retrieves the Electronic Record and Signature Disclosure, with HTML formatting, for the requested envelope recipient. This might be different than the current account disclosure depending on account settings, such as branding, and when the account disclosure was last updated. An optional query string can be included to return the language for the disclosure.  
    # @param account_id The external account number (int) or account ID Guid.
    # @param lang_code The simple type enumeration the language used in the response. The supported languages, with the language value shown in parenthesis, are:Arabic (ar), Armenian (hy), Bulgarian (bg), Czech (cs), Chinese Simplified (zh_CN), Chinese Traditional (zh_TW), Croatian (hr), Danish (da), Dutch (nl), English US (en), English UK (en_GB), Estonian (et), Farsi (fa), Finnish (fi), French (fr), French Canada (fr_CA), German (de), Greek (el), Hebrew (he), Hindi (hi), Hungarian (hu), Bahasa Indonesia (id), Italian (it), Japanese (ja), Korean (ko), Latvian (lv), Lithuanian (lt), Bahasa Melayu (ms), Norwegian (no), Polish (pl), Portuguese (pt), Portuguese Brazil (pt_BR), Romanian (ro), Russian (ru), Serbian (sr), Slovak (sk), Slovenian (sl), Spanish (es),Spanish Latin America (es_MX), Swedish (sv), Thai (th), Turkish (tr), Ukrainian (uk) and Vietnamese (vi). Additionally, the value can be set to ï¿½browserï¿½ to automatically detect the browser language being used by the viewer and display the disclosure in that language.
    # @return [Array<(ConsumerDisclosure, Fixnum, Hash)>] ConsumerDisclosure data, response status code and response headers
    def get_consumer_disclosure_with_http_info(account_id, lang_code)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_consumer_disclosure ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_consumer_disclosure" if account_id.nil?
      # verify the required parameter 'lang_code' is set
      fail ArgumentError, "Missing the required parameter 'lang_code' when calling AccountsApi.get_consumer_disclosure" if lang_code.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/consumer_disclosure/{langCode}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'langCode' + '}', lang_code.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ConsumerDisclosure')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_consumer_disclosure\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the Electronic Record and Signature Disclosure for the account.
    # Retrieves the Electronic Record and Signature Disclosure, with HTML formatting, associated with the account. You can use an optional query string to set the language for the disclosure.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetConsumerDisclosureDefaultOptions Options for modifying the behavior of the function.
    # @return [ConsumerDisclosure]
    def get_consumer_disclosure_default(account_id, options = DocuSign_eSign::GetConsumerDisclosureDefaultOptions.default)
      data, _status_code, _headers = get_consumer_disclosure_default_with_http_info(account_id, options)
      return data
    end

    # Gets the Electronic Record and Signature Disclosure for the account.
    # Retrieves the Electronic Record and Signature Disclosure, with HTML formatting, associated with the account. You can use an optional query string to set the language for the disclosure.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetConsumerDisclosureDefaultOptions Options for modifying the behavior of the function.
    # @return [Array<(ConsumerDisclosure, Fixnum, Hash)>] ConsumerDisclosure data, response status code and response headers
    def get_consumer_disclosure_default_with_http_info(account_id, options = DocuSign_eSign::GetConsumerDisclosureDefaultOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_consumer_disclosure_default ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_consumer_disclosure_default" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/consumer_disclosure".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'langCode'] = options.lang_code if !options.lang_code.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ConsumerDisclosure')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_consumer_disclosure_default\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the configuration information for the eNote eOriginal integration.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @return [ENoteConfiguration]
    def get_e_note_configuration(account_id)
      data, _status_code, _headers = get_e_note_configuration_with_http_info(account_id)
      return data
    end

    # Returns the configuration information for the eNote eOriginal integration.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(ENoteConfiguration, Fixnum, Hash)>] ENoteConfiguration data, response status code and response headers
    def get_e_note_configuration_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_e_note_configuration ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_e_note_configuration" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings/enote_configuration".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ENoteConfiguration')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_e_note_configuration\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Select envelope purge configuration.
    # An envelope purge configuration enables account administrators to permanently remove documents and their field data from completed and voided envelopes after a specified retention period (`retentionDays`). This method retrieves the current envelope purge configuration for your account.  **Note:** To use this method, you must be an account administrator.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [EnvelopePurgeConfiguration]
    def get_envelope_purge_configuration(account_id)
      data, _status_code, _headers = get_envelope_purge_configuration_with_http_info(account_id)
      return data
    end

    # Select envelope purge configuration.
    # An envelope purge configuration enables account administrators to permanently remove documents and their field data from completed and voided envelopes after a specified retention period (&#x60;retentionDays&#x60;). This method retrieves the current envelope purge configuration for your account.  **Note:** To use this method, you must be an account administrator.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(EnvelopePurgeConfiguration, Fixnum, Hash)>] EnvelopePurgeConfiguration data, response status code and response headers
    def get_envelope_purge_configuration_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_envelope_purge_configuration ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_envelope_purge_configuration" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings/envelope_purge_configuration".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'EnvelopePurgeConfiguration')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_envelope_purge_configuration\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Retrieves the list of favorited templates for this caller
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @return [FavoriteTemplatesInfo]
    def get_favorite_templates(account_id)
      data, _status_code, _headers = get_favorite_templates_with_http_info(account_id)
      return data
    end

    # Retrieves the list of favorited templates for this caller
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(FavoriteTemplatesInfo, Fixnum, Hash)>] FavoriteTemplatesInfo data, response status code and response headers
    def get_favorite_templates_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_favorite_templates ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_favorite_templates" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/favorite_templates".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'FavoriteTemplatesInfo')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_favorite_templates\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns default user level settings for a specified account
    # This method returns the default settings for the email notifications that signers and senders receive about envelopes.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [NotificationDefaults]
    def get_notification_defaults(account_id)
      data, _status_code, _headers = get_notification_defaults_with_http_info(account_id)
      return data
    end

    # Returns default user level settings for a specified account
    # This method returns the default settings for the email notifications that signers and senders receive about envelopes.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(NotificationDefaults, Fixnum, Hash)>] NotificationDefaults data, response status code and response headers
    def get_notification_defaults_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_notification_defaults ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_notification_defaults" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings/notification_defaults".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'NotificationDefaults')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_notification_defaults\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get the password rules
    # This method retrieves the password rules for an account.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [AccountPasswordRules]
    def get_password_rules(account_id)
      data, _status_code, _headers = get_password_rules_with_http_info(account_id)
      return data
    end

    # Get the password rules
    # This method retrieves the password rules for an account.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(AccountPasswordRules, Fixnum, Hash)>] AccountPasswordRules data, response status code and response headers
    def get_password_rules_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_password_rules ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_password_rules" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings/password_rules".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountPasswordRules')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_password_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get membership account password rules
    # 
    # @return [UserPasswordRules]
    def get_password_rules_0()
      data, _status_code, _headers = get_password_rules_0_with_http_info()
      return data
    end

    # Get membership account password rules
    # 
    # @return [Array<(UserPasswordRules, Fixnum, Hash)>] UserPasswordRules data, response status code and response headers
    def get_password_rules_0_with_http_info()
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_password_rules_0 ..."
      end
      # resource path
      local_var_path = "/v2.1/current_user/password_rules".sub('{format}','json')

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'UserPasswordRules')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_password_rules_0\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a permissions profile in the specified account.
    # This method returns information about a specific permission profile that is associated with an account.  ### Related topics  - [How to set a permission profile](/docs/esign-rest-api/how-to/permission-profile-setting/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param permission_profile_id 
    # @param DocuSign_eSign::GetPermissionProfileOptions Options for modifying the behavior of the function.
    # @return [PermissionProfile]
    def get_permission_profile(account_id, permission_profile_id, options = DocuSign_eSign::GetPermissionProfileOptions.default)
      data, _status_code, _headers = get_permission_profile_with_http_info(account_id, permission_profile_id, options)
      return data
    end

    # Returns a permissions profile in the specified account.
    # This method returns information about a specific permission profile that is associated with an account.  ### Related topics  - [How to set a permission profile](/docs/esign-rest-api/how-to/permission-profile-setting/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param permission_profile_id 
    # @param DocuSign_eSign::GetPermissionProfileOptions Options for modifying the behavior of the function.
    # @return [Array<(PermissionProfile, Fixnum, Hash)>] PermissionProfile data, response status code and response headers
    def get_permission_profile_with_http_info(account_id, permission_profile_id, options = DocuSign_eSign::GetPermissionProfileOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_permission_profile ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_permission_profile" if account_id.nil?
      # verify the required parameter 'permission_profile_id' is set
      fail ArgumentError, "Missing the required parameter 'permission_profile_id' when calling AccountsApi.get_permission_profile" if permission_profile_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/permission_profiles/{permissionProfileId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'permissionProfileId' + '}', permission_profile_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'include'] = options.include if !options.include.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PermissionProfile')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_permission_profile\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the principal user authorizations
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param DocuSign_eSign::GetPrincipalUserAuthorizationsOptions Options for modifying the behavior of the function.
    # @return [UserAuthorizations]
    def get_principal_user_authorizations(account_id, user_id, options = DocuSign_eSign::GetPrincipalUserAuthorizationsOptions.default)
      data, _status_code, _headers = get_principal_user_authorizations_with_http_info(account_id, user_id, options)
      return data
    end

    # Returns the principal user authorizations
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param DocuSign_eSign::GetPrincipalUserAuthorizationsOptions Options for modifying the behavior of the function.
    # @return [Array<(UserAuthorizations, Fixnum, Hash)>] UserAuthorizations data, response status code and response headers
    def get_principal_user_authorizations_with_http_info(account_id, user_id, options = DocuSign_eSign::GetPrincipalUserAuthorizationsOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_principal_user_authorizations ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_principal_user_authorizations" if account_id.nil?
      # verify the required parameter 'user_id' is set
      fail ArgumentError, "Missing the required parameter 'user_id' when calling AccountsApi.get_principal_user_authorizations" if user_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/users/{userId}/authorizations".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'userId' + '}', user_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'active_only'] = options.active_only if !options.active_only.nil?
      query_params[:'count'] = options.count if !options.count.nil?
      query_params[:'email_substring'] = options.email_substring if !options.email_substring.nil?
      query_params[:'include_closed_users'] = options.include_closed_users if !options.include_closed_users.nil?
      query_params[:'permissions'] = options.permissions if !options.permissions.nil?
      query_params[:'start_position'] = options.start_position if !options.start_position.nil?
      query_params[:'user_name_substring'] = options.user_name_substring if !options.user_name_substring.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'UserAuthorizations')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_principal_user_authorizations\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Retrieves the account provisioning information for the account.
    # Retrieves the account provisioning information for the account.
    # @return [ProvisioningInformation]
    def get_provisioning()
      data, _status_code, _headers = get_provisioning_with_http_info()
      return data
    end

    # Retrieves the account provisioning information for the account.
    # Retrieves the account provisioning information for the account.
    # @return [Array<(ProvisioningInformation, Fixnum, Hash)>] ProvisioningInformation data, response status code and response headers
    def get_provisioning_with_http_info()
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_provisioning ..."
      end
      # resource path
      local_var_path = "/v2.1/accounts/provisioning".sub('{format}','json')

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ProvisioningInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_provisioning\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets list of supported languages for recipient language setting.
    # Retrieves a list of supported languages that you can set for an individual recipient when creating an envelope, as well as their simple type enumeration values. These are the languages that you can set for the standard email format and signing view for each recipient.  For example, in the recipient's email notification, this setting affects elements such as the standard introductory text describing the request to sign. It also determines the language used for buttons and tabs in both the email notification and the signing experience.  **Note:** Setting a language for a recipient affects only the DocuSign standard text. Any custom text that you enter for the `emailBody` and `emailSubject` of the notification is not translated, and appears exactly as you enter it.  For more information, see [Set Recipient Language and Specify Custom Email Messages](https://support.docusign.com/en/guides/ndse-user-guide-recipient-language).
    # @param account_id The external account number (int) or account ID Guid.
    # @return [SupportedLanguages]
    def get_supported_languages(account_id)
      data, _status_code, _headers = get_supported_languages_with_http_info(account_id)
      return data
    end

    # Gets list of supported languages for recipient language setting.
    # Retrieves a list of supported languages that you can set for an individual recipient when creating an envelope, as well as their simple type enumeration values. These are the languages that you can set for the standard email format and signing view for each recipient.  For example, in the recipient&#39;s email notification, this setting affects elements such as the standard introductory text describing the request to sign. It also determines the language used for buttons and tabs in both the email notification and the signing experience.  **Note:** Setting a language for a recipient affects only the DocuSign standard text. Any custom text that you enter for the &#x60;emailBody&#x60; and &#x60;emailSubject&#x60; of the notification is not translated, and appears exactly as you enter it.  For more information, see [Set Recipient Language and Specify Custom Email Messages](https://support.docusign.com/en/guides/ndse-user-guide-recipient-language).
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(SupportedLanguages, Fixnum, Hash)>] SupportedLanguages data, response status code and response headers
    def get_supported_languages_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_supported_languages ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_supported_languages" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/supported_languages".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'SupportedLanguages')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_supported_languages\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the user authorization for a given authorization id
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param authorization_id 
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @return [UserAuthorization]
    def get_user_authorization(account_id, authorization_id, user_id)
      data, _status_code, _headers = get_user_authorization_with_http_info(account_id, authorization_id, user_id)
      return data
    end

    # Returns the user authorization for a given authorization id
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param authorization_id 
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @return [Array<(UserAuthorization, Fixnum, Hash)>] UserAuthorization data, response status code and response headers
    def get_user_authorization_with_http_info(account_id, authorization_id, user_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_user_authorization ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_user_authorization" if account_id.nil?
      # verify the required parameter 'authorization_id' is set
      fail ArgumentError, "Missing the required parameter 'authorization_id' when calling AccountsApi.get_user_authorization" if authorization_id.nil?
      # verify the required parameter 'user_id' is set
      fail ArgumentError, "Missing the required parameter 'user_id' when calling AccountsApi.get_user_authorization" if user_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/users/{userId}/authorization/{authorizationId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'authorizationId' + '}', authorization_id.to_s).sub('{' + 'userId' + '}', user_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'UserAuthorization')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_user_authorization\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get watermark information.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Watermark]
    def get_watermark(account_id)
      data, _status_code, _headers = get_watermark_with_http_info(account_id)
      return data
    end

    # Get watermark information.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(Watermark, Fixnum, Hash)>] Watermark data, response status code and response headers
    def get_watermark_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_watermark ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_watermark" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/watermark".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Watermark')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_watermark\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get watermark preview.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param watermark  (optional parameter)
    # @return [Watermark]
    def get_watermark_preview(account_id, watermark)
      data, _status_code, _headers = get_watermark_preview_with_http_info(account_id,  watermark)
      return data
    end

    # Get watermark preview.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param watermark  (optional parameter)
    # @return [Array<(Watermark, Fixnum, Hash)>] Watermark data, response status code and response headers
    def get_watermark_preview_with_http_info(account_id, watermark)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.get_watermark_preview ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.get_watermark_preview" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/watermark/preview".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(watermark)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Watermark')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#get_watermark_preview\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets a list of brand profiles.
    # Retrieves the list of brand profiles associated with the account and the default brand profiles. The Account Branding feature (accountSettings properties `canSelfBrandSend` and `canSelfBrandSend`)  must be set to **true** for the account to use this call.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::ListBrandsOptions Options for modifying the behavior of the function.
    # @return [BrandsResponse]
    def list_brands(account_id, options = DocuSign_eSign::ListBrandsOptions.default)
      data, _status_code, _headers = list_brands_with_http_info(account_id, options)
      return data
    end

    # Gets a list of brand profiles.
    # Retrieves the list of brand profiles associated with the account and the default brand profiles. The Account Branding feature (accountSettings properties &#x60;canSelfBrandSend&#x60; and &#x60;canSelfBrandSend&#x60;)  must be set to **true** for the account to use this call.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::ListBrandsOptions Options for modifying the behavior of the function.
    # @return [Array<(BrandsResponse, Fixnum, Hash)>] BrandsResponse data, response status code and response headers
    def list_brands_with_http_info(account_id, options = DocuSign_eSign::ListBrandsOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.list_brands ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.list_brands" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'exclude_distributor_brand'] = options.exclude_distributor_brand if !options.exclude_distributor_brand.nil?
      query_params[:'include_logos'] = options.include_logos if !options.include_logos.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'BrandsResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#list_brands\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets a list of custom fields associated with the account.
    # Retrieves a list of envelope custom fields associated with the account. You can use these fields in the envelopes for your account to record information about the envelope, help search for envelopes and track information. The envelope custom fields are shown in the Envelope Settings section when a user is creating an envelope in the DocuSign member console. The envelope custom fields are not seen by the envelope recipients.  There are two types of envelope custom fields, text, and list. A text custom field lets the sender enter the value for the field. The list custom field lets the sender select the value of the field from a list you provide.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [CustomFields]
    def list_custom_fields(account_id)
      data, _status_code, _headers = list_custom_fields_with_http_info(account_id)
      return data
    end

    # Gets a list of custom fields associated with the account.
    # Retrieves a list of envelope custom fields associated with the account. You can use these fields in the envelopes for your account to record information about the envelope, help search for envelopes and track information. The envelope custom fields are shown in the Envelope Settings section when a user is creating an envelope in the DocuSign member console. The envelope custom fields are not seen by the envelope recipients.  There are two types of envelope custom fields, text, and list. A text custom field lets the sender enter the value for the field. The list custom field lets the sender select the value of the field from a list you provide.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(CustomFields, Fixnum, Hash)>] CustomFields data, response status code and response headers
    def list_custom_fields_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.list_custom_fields ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.list_custom_fields" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/custom_fields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'CustomFields')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#list_custom_fields\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets a list of permission profiles.
    # Retrieves a list of Permission Profiles. Permission Profiles are a standard set of user permissions that you can apply to individual users or users in a Group. This makes it easier to manage user permissions for a large number of users, without having to change permissions on a user-by-user basis.  Currently, Permission Profiles can only be created and modified in the DocuSign console.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::ListPermissionsOptions Options for modifying the behavior of the function.
    # @return [PermissionProfileInformation]
    def list_permissions(account_id, options = DocuSign_eSign::ListPermissionsOptions.default)
      data, _status_code, _headers = list_permissions_with_http_info(account_id, options)
      return data
    end

    # Gets a list of permission profiles.
    # Retrieves a list of Permission Profiles. Permission Profiles are a standard set of user permissions that you can apply to individual users or users in a Group. This makes it easier to manage user permissions for a large number of users, without having to change permissions on a user-by-user basis.  Currently, Permission Profiles can only be created and modified in the DocuSign console.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::ListPermissionsOptions Options for modifying the behavior of the function.
    # @return [Array<(PermissionProfileInformation, Fixnum, Hash)>] PermissionProfileInformation data, response status code and response headers
    def list_permissions_with_http_info(account_id, options = DocuSign_eSign::ListPermissionsOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.list_permissions ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.list_permissions" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/permission_profiles".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'include'] = options.include if !options.include.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PermissionProfileInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#list_permissions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets recipient names associated with an email address.
    # Retrieves a list of recipients in the specified account that are associated with a email address supplied in the query string.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::ListRecipientNamesByEmailOptions Options for modifying the behavior of the function.
    # @return [RecipientNamesResponse]
    def list_recipient_names_by_email(account_id, options = DocuSign_eSign::ListRecipientNamesByEmailOptions.default)
      data, _status_code, _headers = list_recipient_names_by_email_with_http_info(account_id, options)
      return data
    end

    # Gets recipient names associated with an email address.
    # Retrieves a list of recipients in the specified account that are associated with a email address supplied in the query string.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::ListRecipientNamesByEmailOptions Options for modifying the behavior of the function.
    # @return [Array<(RecipientNamesResponse, Fixnum, Hash)>] RecipientNamesResponse data, response status code and response headers
    def list_recipient_names_by_email_with_http_info(account_id, options = DocuSign_eSign::ListRecipientNamesByEmailOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.list_recipient_names_by_email ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.list_recipient_names_by_email" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/recipient_names".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'email'] = options.email if !options.email.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'RecipientNamesResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#list_recipient_names_by_email\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets account settings information.
    # Retrieves the account settings information for the specified account.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [AccountSettingsInformation]
    def list_settings(account_id)
      data, _status_code, _headers = list_settings_with_http_info(account_id)
      return data
    end

    # Gets account settings information.
    # Retrieves the account settings information for the specified account.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(AccountSettingsInformation, Fixnum, Hash)>] AccountSettingsInformation data, response status code and response headers
    def list_settings_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.list_settings ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.list_settings" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountSettingsInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#list_settings\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Reserved: Gets the shared item status for one or more users.
    # Reserved: Retrieves shared item status for one or more users and types of items.  Users with account administration privileges can retrieve shared access information for all account users. Users without account administrator privileges can only retrieve shared access information for themselves and the returned information is limited to the retrieving the status of all members of the account that are sharing their folders to the user. This is equivalent to setting the shared=shared_from.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::ListSharedAccessOptions Options for modifying the behavior of the function.
    # @return [AccountSharedAccess]
    def list_shared_access(account_id, options = DocuSign_eSign::ListSharedAccessOptions.default)
      data, _status_code, _headers = list_shared_access_with_http_info(account_id, options)
      return data
    end

    # Reserved: Gets the shared item status for one or more users.
    # Reserved: Retrieves shared item status for one or more users and types of items.  Users with account administration privileges can retrieve shared access information for all account users. Users without account administrator privileges can only retrieve shared access information for themselves and the returned information is limited to the retrieving the status of all members of the account that are sharing their folders to the user. This is equivalent to setting the shared&#x3D;shared_from.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::ListSharedAccessOptions Options for modifying the behavior of the function.
    # @return [Array<(AccountSharedAccess, Fixnum, Hash)>] AccountSharedAccess data, response status code and response headers
    def list_shared_access_with_http_info(account_id, options = DocuSign_eSign::ListSharedAccessOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.list_shared_access ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.list_shared_access" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/shared_access".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'count'] = options.count if !options.count.nil?
      query_params[:'envelopes_not_shared_user_status'] = options.envelopes_not_shared_user_status if !options.envelopes_not_shared_user_status.nil?
      query_params[:'folder_ids'] = options.folder_ids if !options.folder_ids.nil?
      query_params[:'item_type'] = options.item_type if !options.item_type.nil?
      query_params[:'search_text'] = options.search_text if !options.search_text.nil?
      query_params[:'shared'] = options.shared if !options.shared.nil?
      query_params[:'start_position'] = options.start_position if !options.start_position.nil?
      query_params[:'user_ids'] = options.user_ids if !options.user_ids.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountSharedAccess')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#list_shared_access\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns Account available signature providers for specified account.
    # Returns a list of signature providers that the specified account can use.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [AccountSignatureProviders]
    def list_signature_providers(account_id)
      data, _status_code, _headers = list_signature_providers_with_http_info(account_id)
      return data
    end

    # Returns Account available signature providers for specified account.
    # Returns a list of signature providers that the specified account can use.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(AccountSignatureProviders, Fixnum, Hash)>] AccountSignatureProviders data, response status code and response headers
    def list_signature_providers_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.list_signature_providers ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.list_signature_providers" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/signatureProviders".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountSignatureProviders')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#list_signature_providers\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets a list of unsupported file types.
    # Retrieves a list of file types (mime-types and file-extensions) that are not supported for upload through the DocuSign system.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [FileTypeList]
    def list_unsupported_file_types(account_id)
      data, _status_code, _headers = list_unsupported_file_types_with_http_info(account_id)
      return data
    end

    # Gets a list of unsupported file types.
    # Retrieves a list of file types (mime-types and file-extensions) that are not supported for upload through the DocuSign system.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(FileTypeList, Fixnum, Hash)>] FileTypeList data, response status code and response headers
    def list_unsupported_file_types_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.list_unsupported_file_types ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.list_unsupported_file_types" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/unsupported_file_types".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'FileTypeList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#list_unsupported_file_types\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Unfavorite a template
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param favorite_templates_info  (optional parameter)
    # @return [FavoriteTemplatesInfo]
    def un_favorite_template(account_id, favorite_templates_info)
      data, _status_code, _headers = un_favorite_template_with_http_info(account_id,  favorite_templates_info)
      return data
    end

    # Unfavorite a template
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param favorite_templates_info  (optional parameter)
    # @return [Array<(FavoriteTemplatesInfo, Fixnum, Hash)>] FavoriteTemplatesInfo data, response status code and response headers
    def un_favorite_template_with_http_info(account_id, favorite_templates_info)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.un_favorite_template ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.un_favorite_template" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/favorite_templates".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(favorite_templates_info)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'FavoriteTemplatesInfo')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#un_favorite_template\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates a account signature.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param account_signatures_information  (optional parameter)
    # @return [AccountSignaturesInformation]
    def update_account_signature(account_id, account_signatures_information)
      data, _status_code, _headers = update_account_signature_with_http_info(account_id,  account_signatures_information)
      return data
    end

    # Updates a account signature.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param account_signatures_information  (optional parameter)
    # @return [Array<(AccountSignaturesInformation, Fixnum, Hash)>] AccountSignaturesInformation data, response status code and response headers
    def update_account_signature_with_http_info(account_id, account_signatures_information)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_account_signature ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_account_signature" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/signatures".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(account_signatures_information)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountSignaturesInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_account_signature\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates a account signature.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param signature_id The ID of the signature being accessed.
    # @param account_signature_definition  (optional parameter)
    # @param DocuSign_eSign::UpdateAccountSignatureByIdOptions Options for modifying the behavior of the function.
    # @return [AccountSignature]
    def update_account_signature_by_id(account_id, signature_id, account_signature_definition, options = DocuSign_eSign::UpdateAccountSignatureByIdOptions.default)
      data, _status_code, _headers = update_account_signature_by_id_with_http_info(account_id, signature_id,  account_signature_definition, options)
      return data
    end

    # Updates a account signature.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param signature_id The ID of the signature being accessed.
    # @param account_signature_definition  (optional parameter)
    # @param DocuSign_eSign::UpdateAccountSignatureByIdOptions Options for modifying the behavior of the function.
    # @return [Array<(AccountSignature, Fixnum, Hash)>] AccountSignature data, response status code and response headers
    def update_account_signature_by_id_with_http_info(account_id, signature_id, account_signature_definition, options = DocuSign_eSign::UpdateAccountSignatureByIdOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_account_signature_by_id ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_account_signature_by_id" if account_id.nil?
      # verify the required parameter 'signature_id' is set
      fail ArgumentError, "Missing the required parameter 'signature_id' when calling AccountsApi.update_account_signature_by_id" if signature_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/signatures/{signatureId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'signatureId' + '}', signature_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'close_existing_signature'] = options.close_existing_signature if !options.close_existing_signature.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(account_signature_definition)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountSignature')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_account_signature_by_id\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Sets a signature, initials, or stamps image.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param image_type One of **signature_image** or **initials_image**.
    # @param signature_id The ID of the signature being accessed.
    # @param DocuSign_eSign::UpdateAccountSignatureImageOptions Options for modifying the behavior of the function.
    # @return [AccountSignature]
    def update_account_signature_image(account_id, image_type, signature_id, options = DocuSign_eSign::UpdateAccountSignatureImageOptions.default)
      data, _status_code, _headers = update_account_signature_image_with_http_info(account_id, image_type, signature_id, options)
      return data
    end

    # Sets a signature, initials, or stamps image.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param image_type One of **signature_image** or **initials_image**.
    # @param signature_id The ID of the signature being accessed.
    # @param DocuSign_eSign::UpdateAccountSignatureImageOptions Options for modifying the behavior of the function.
    # @return [Array<(AccountSignature, Fixnum, Hash)>] AccountSignature data, response status code and response headers
    def update_account_signature_image_with_http_info(account_id, image_type, signature_id, options = DocuSign_eSign::UpdateAccountSignatureImageOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_account_signature_image ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_account_signature_image" if account_id.nil?
      # verify the required parameter 'image_type' is set
      fail ArgumentError, "Missing the required parameter 'image_type' when calling AccountsApi.update_account_signature_image" if image_type.nil?
      # verify the required parameter 'signature_id' is set
      fail ArgumentError, "Missing the required parameter 'signature_id' when calling AccountsApi.update_account_signature_image" if signature_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/signatures/{signatureId}/{imageType}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'imageType' + '}', image_type.to_s).sub('{' + 'signatureId' + '}', signature_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'transparent_png'] = options.transparent_png if !options.transparent_png.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['image/gif'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountSignature')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_account_signature_image\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Modifies tab settings for specified account
    # This method modifies the tab types and tab functionality that is enabled for an account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param tab_account_settings  (optional parameter)
    # @return [TabAccountSettings]
    def update_account_tab_settings(account_id, tab_account_settings)
      data, _status_code, _headers = update_account_tab_settings_with_http_info(account_id,  tab_account_settings)
      return data
    end

    # Modifies tab settings for specified account
    # This method modifies the tab types and tab functionality that is enabled for an account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param tab_account_settings  (optional parameter)
    # @return [Array<(TabAccountSettings, Fixnum, Hash)>] TabAccountSettings data, response status code and response headers
    def update_account_tab_settings_with_http_info(account_id, tab_account_settings)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_account_tab_settings ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_account_tab_settings" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings/tabs".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(tab_account_settings)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'TabAccountSettings')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_account_tab_settings\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates an existing brand.
    # This method updates an account brand.   **Note:** Branding for either signing or sending must be enabled for the account (`canSelfBrandSend` , `canSelfBrandSign`, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @param brand  (optional parameter)
    # @param DocuSign_eSign::UpdateBrandOptions Options for modifying the behavior of the function.
    # @return [Brand]
    def update_brand(account_id, brand_id, brand, options = DocuSign_eSign::UpdateBrandOptions.default)
      data, _status_code, _headers = update_brand_with_http_info(account_id, brand_id,  brand, options)
      return data
    end

    # Updates an existing brand.
    # This method updates an account brand.   **Note:** Branding for either signing or sending must be enabled for the account (&#x60;canSelfBrandSend&#x60; , &#x60;canSelfBrandSign&#x60;, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID Guid.
    # @param brand_id The unique identifier of a brand.
    # @param brand  (optional parameter)
    # @param DocuSign_eSign::UpdateBrandOptions Options for modifying the behavior of the function.
    # @return [Array<(Brand, Fixnum, Hash)>] Brand data, response status code and response headers
    def update_brand_with_http_info(account_id, brand_id, brand, options = DocuSign_eSign::UpdateBrandOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_brand ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_brand" if account_id.nil?
      # verify the required parameter 'brand_id' is set
      fail ArgumentError, "Missing the required parameter 'brand_id' when calling AccountsApi.update_brand" if brand_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands/{brandId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'brandId' + '}', brand_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'replace_brand'] = options.replace_brand if !options.replace_brand.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(brand)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Brand')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_brand\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Put one branding logo.
    # This method updates a single brand logo.  You pass in the new version of the resource in the `Content-Disposition` header. Example:  `Content-Disposition: form-data; name=\"file\"; filename=\"logo.jpg\"`  **Note:** Branding for either signing or sending must be enabled for the account (`canSelfBrandSend` , `canSelfBrandSign`, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID GUID.
    # @param brand_id The ID of the brand.
    # @param logo_type The type of logo. Valid values are:  - `primary`  - `secondary`  - `email`
    # @param logo_file_bytes Brand logo binary Stream. Supported formats: JPG, GIF, PNG. Maximum file size: 300 KB. Recommended dimensions: 296 x 76 pixels (larger images will be resized). Changes may take up to one hour to display in all places 
    # @return [nil]
    def update_brand_logo_by_type(account_id, brand_id, logo_type, logo_file_bytes)
      update_brand_logo_by_type_with_http_info(account_id, brand_id, logo_type,  logo_file_bytes)
      return nil
    end

    # Put one branding logo.
    # This method updates a single brand logo.  You pass in the new version of the resource in the &#x60;Content-Disposition&#x60; header. Example:  &#x60;Content-Disposition: form-data; name&#x3D;\&quot;file\&quot;; filename&#x3D;\&quot;logo.jpg\&quot;&#x60;  **Note:** Branding for either signing or sending must be enabled for the account (&#x60;canSelfBrandSend&#x60; , &#x60;canSelfBrandSign&#x60;, or both of these account settings must be **true**).
    # @param account_id The external account number (int) or account ID GUID.
    # @param brand_id The ID of the brand.
    # @param logo_type The type of logo. Valid values are:  - `primary`  - `secondary`  - `email`
    # @param logo_file_bytes Brand logo binary Stream. Supported formats: JPG, GIF, PNG. Maximum file size: 300 KB. Recommended dimensions: 296 x 76 pixels (larger images will be resized). Changes may take up to one hour to display in all places 
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def update_brand_logo_by_type_with_http_info(account_id, brand_id, logo_type, logo_file_bytes)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_brand_logo_by_type ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_brand_logo_by_type" if account_id.nil?
      # verify the required parameter 'brand_id' is set
      fail ArgumentError, "Missing the required parameter 'brand_id' when calling AccountsApi.update_brand_logo_by_type" if brand_id.nil?
      # verify the required parameter 'logo_type' is set
      fail ArgumentError, "Missing the required parameter 'logo_type' when calling AccountsApi.update_brand_logo_by_type" if logo_type.nil?
      # verify the required parameter 'logo_file_bytes' is set
      fail ArgumentError, "Missing the required parameter 'logo_file_bytes' when calling AccountsApi.update_brand_logo_by_type" if logo_file_bytes.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands/{brandId}/logos/{logoType}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'brandId' + '}', brand_id.to_s).sub('{' + 'logoType' + '}', logo_type.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['image/png'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(logo_file_bytes)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_brand_logo_by_type\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Uploads a branding resource file.
    # This method updates a branding resource file.  You pass in the new version of the resource file in the `Content-Disposition` header. Example:  `Content-Disposition: form-data; name=\"file\"; filename=\"DocuSign_SigningResource_4328673.xml\"`  **Note:** Branding for either signing or sending must be enabled for the account (`canSelfBrandSend` , `canSelfBrandSign`, or both of these account settings must be **true**).  **Important:** Customizing resource files is an advanced branding configuration option which can significantly impact your account, and should be done only by someone with expertise in XML and HTML. The master resource files are subject to change without notice. If you customize your resource files, after each release, DocuSign recommends you review any changes and update your custom files as needed.  When you upload a modified resource file, only the elements that differ from the master resource file are saved as your resource file. Similarly, when you download your resource files, only the modified elements are included in the file.
    # @param account_id The external account number (int) or account ID GUID.
    # @param brand_id The ID of the brand.
    # @param resource_content_type The type of brand resource file that you are updating. Valid values are:  - `sending` - `signing` - `email` - `signing_captive`
    # @param file_xml Brand resource XML file. 
    # @return [BrandResources]
    def update_brand_resources_by_content_type(account_id, brand_id, resource_content_type, file_xml)
      data, _status_code, _headers = update_brand_resources_by_content_type_with_http_info(account_id, brand_id, resource_content_type, file_xml)
      return data
    end

    # Uploads a branding resource file.
    # This method updates a branding resource file.  You pass in the new version of the resource file in the &#x60;Content-Disposition&#x60; header. Example:  &#x60;Content-Disposition: form-data; name&#x3D;\&quot;file\&quot;; filename&#x3D;\&quot;DocuSign_SigningResource_4328673.xml\&quot;&#x60;  **Note:** Branding for either signing or sending must be enabled for the account (&#x60;canSelfBrandSend&#x60; , &#x60;canSelfBrandSign&#x60;, or both of these account settings must be **true**).  **Important:** Customizing resource files is an advanced branding configuration option which can significantly impact your account, and should be done only by someone with expertise in XML and HTML. The master resource files are subject to change without notice. If you customize your resource files, after each release, DocuSign recommends you review any changes and update your custom files as needed.  When you upload a modified resource file, only the elements that differ from the master resource file are saved as your resource file. Similarly, when you download your resource files, only the modified elements are included in the file.
    # @param account_id The external account number (int) or account ID GUID.
    # @param brand_id The ID of the brand.
    # @param resource_content_type The type of brand resource file that you are updating. Valid values are:  - `sending` - `signing` - `email` - `signing_captive`
    # @param file_xml Brand resource XML file. 
    # @return [Array<(BrandResources, Fixnum, Hash)>] BrandResources data, response status code and response headers
    def update_brand_resources_by_content_type_with_http_info(account_id, brand_id, resource_content_type, file_xml)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_brand_resources_by_content_type ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_brand_resources_by_content_type" if account_id.nil?
      # verify the required parameter 'brand_id' is set
      fail ArgumentError, "Missing the required parameter 'brand_id' when calling AccountsApi.update_brand_resources_by_content_type" if brand_id.nil?
      # verify the required parameter 'resource_content_type' is set
      fail ArgumentError, "Missing the required parameter 'resource_content_type' when calling AccountsApi.update_brand_resources_by_content_type" if resource_content_type.nil?
      # verify the required parameter 'file_xml' is set
      fail ArgumentError, "Missing the required parameter 'file_xml' when calling AccountsApi.update_brand_resources_by_content_type" if file_xml.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/brands/{brandId}/resources/{resourceContentType}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'brandId' + '}', brand_id.to_s).sub('{' + 'resourceContentType' + '}', resource_content_type.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['multipart/form-data'])

      # form parameters
      form_params = {}
      form_params["file.xml"] = file_xml

      # http body (model)
      post_body = nil
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'BrandResources')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_brand_resources_by_content_type\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update Consumer Disclosure.
    # Account administrators can use this method to perform the following tasks:  - Customize values in the default disclosure. - Switch to a custom disclosure that uses your own text and HTML formatting. - Change values in your existing consumer disclosure.   To specify the signer language version of the disclosure that you are updating, use the optional `langCode` query parameter.  **Note:** Only account administrators can use this method. Each time you change the disclosure content, all unsigned recipients of outstanding documents will be required to accept a new version.   ## Updating the default disclosure  When you update the default disclosure, you can edit all properties except for the following ones:  - `accountEsignId`: This property is read-only. - `custom`: The default value is **false.** Editing this property causes the default disclosure to switch to a custom disclosure. - `esignAgreement`: This property is read-only. - `esignText`: You cannot edit this property when `custom` is set to **false.** The API returns a 200 OK HTTP response, but does not update the `esignText`. - Metadata properties: These properties are read-only.  **Note:** The text of the default disclosure is always in English.  ## Switching to a custom disclosure  To switch to a custom disclosure, set the `custom` property to **true** and customize the value for the `eSignText` property.   You can also edit all of the other properties except for the following ones:  - `accountEsignId`: This property is read-only. - `esignAgreement`: This property is read-only. - Metadata properties: These properties are read-only.  **Note:** When you use a custom disclosure, you can create versions of it in different signer languages and se the `langCode` parameter to specify the signer language version that you are updating.  **Important:**  When you switch from a default to a custom disclosure, note the following information:  - You will not be able to return to using the default disclosure. - Only the disclosure for the currently selected signer language is saved. DocuSign will not automatically translate your custom disclosure. You must create a disclosure for each language that your signers use.  ## Updating a custom disclosure  When you update a custom disclosure, you can update all of the properties except for the following ones:  - `accountEsignId`: This property is read-only.  - `esignAgreement`: This property is read-only. - Metadata properties: These properties are read-only.  **Important:** Only the disclosure for the currently selected signer language is saved. DocuSign will not automatically translate your custom disclosure. You must create a disclosure for each language that your signers use.  
    # @param account_id The external account number (int) or account ID Guid.
    # @param lang_code The simple type enumeration the language used in the response. The supported languages, with the language value shown in parenthesis, are:Arabic (ar), Armenian (hy), Bulgarian (bg), Czech (cs), Chinese Simplified (zh_CN), Chinese Traditional (zh_TW), Croatian (hr), Danish (da), Dutch (nl), English US (en), English UK (en_GB), Estonian (et), Farsi (fa), Finnish (fi), French (fr), French Canada (fr_CA), German (de), Greek (el), Hebrew (he), Hindi (hi), Hungarian (hu), Bahasa Indonesia (id), Italian (it), Japanese (ja), Korean (ko), Latvian (lv), Lithuanian (lt), Bahasa Melayu (ms), Norwegian (no), Polish (pl), Portuguese (pt), Portuguese Brazil (pt_BR), Romanian (ro), Russian (ru), Serbian (sr), Slovak (sk), Slovenian (sl), Spanish (es),Spanish Latin America (es_MX), Swedish (sv), Thai (th), Turkish (tr), Ukrainian (uk) and Vietnamese (vi). Additionally, the value can be set to ï¿½browserï¿½ to automatically detect the browser language being used by the viewer and display the disclosure in that language.
    # @param consumer_disclosure  (optional parameter)
    # @param DocuSign_eSign::UpdateConsumerDisclosureOptions Options for modifying the behavior of the function.
    # @return [ConsumerDisclosure]
    def update_consumer_disclosure(account_id, lang_code, consumer_disclosure, options = DocuSign_eSign::UpdateConsumerDisclosureOptions.default)
      data, _status_code, _headers = update_consumer_disclosure_with_http_info(account_id, lang_code,  consumer_disclosure, options)
      return data
    end

    # Update Consumer Disclosure.
    # Account administrators can use this method to perform the following tasks:  - Customize values in the default disclosure. - Switch to a custom disclosure that uses your own text and HTML formatting. - Change values in your existing consumer disclosure.   To specify the signer language version of the disclosure that you are updating, use the optional &#x60;langCode&#x60; query parameter.  **Note:** Only account administrators can use this method. Each time you change the disclosure content, all unsigned recipients of outstanding documents will be required to accept a new version.   ## Updating the default disclosure  When you update the default disclosure, you can edit all properties except for the following ones:  - &#x60;accountEsignId&#x60;: This property is read-only. - &#x60;custom&#x60;: The default value is **false.** Editing this property causes the default disclosure to switch to a custom disclosure. - &#x60;esignAgreement&#x60;: This property is read-only. - &#x60;esignText&#x60;: You cannot edit this property when &#x60;custom&#x60; is set to **false.** The API returns a 200 OK HTTP response, but does not update the &#x60;esignText&#x60;. - Metadata properties: These properties are read-only.  **Note:** The text of the default disclosure is always in English.  ## Switching to a custom disclosure  To switch to a custom disclosure, set the &#x60;custom&#x60; property to **true** and customize the value for the &#x60;eSignText&#x60; property.   You can also edit all of the other properties except for the following ones:  - &#x60;accountEsignId&#x60;: This property is read-only. - &#x60;esignAgreement&#x60;: This property is read-only. - Metadata properties: These properties are read-only.  **Note:** When you use a custom disclosure, you can create versions of it in different signer languages and se the &#x60;langCode&#x60; parameter to specify the signer language version that you are updating.  **Important:**  When you switch from a default to a custom disclosure, note the following information:  - You will not be able to return to using the default disclosure. - Only the disclosure for the currently selected signer language is saved. DocuSign will not automatically translate your custom disclosure. You must create a disclosure for each language that your signers use.  ## Updating a custom disclosure  When you update a custom disclosure, you can update all of the properties except for the following ones:  - &#x60;accountEsignId&#x60;: This property is read-only.  - &#x60;esignAgreement&#x60;: This property is read-only. - Metadata properties: These properties are read-only.  **Important:** Only the disclosure for the currently selected signer language is saved. DocuSign will not automatically translate your custom disclosure. You must create a disclosure for each language that your signers use.  
    # @param account_id The external account number (int) or account ID Guid.
    # @param lang_code The simple type enumeration the language used in the response. The supported languages, with the language value shown in parenthesis, are:Arabic (ar), Armenian (hy), Bulgarian (bg), Czech (cs), Chinese Simplified (zh_CN), Chinese Traditional (zh_TW), Croatian (hr), Danish (da), Dutch (nl), English US (en), English UK (en_GB), Estonian (et), Farsi (fa), Finnish (fi), French (fr), French Canada (fr_CA), German (de), Greek (el), Hebrew (he), Hindi (hi), Hungarian (hu), Bahasa Indonesia (id), Italian (it), Japanese (ja), Korean (ko), Latvian (lv), Lithuanian (lt), Bahasa Melayu (ms), Norwegian (no), Polish (pl), Portuguese (pt), Portuguese Brazil (pt_BR), Romanian (ro), Russian (ru), Serbian (sr), Slovak (sk), Slovenian (sl), Spanish (es),Spanish Latin America (es_MX), Swedish (sv), Thai (th), Turkish (tr), Ukrainian (uk) and Vietnamese (vi). Additionally, the value can be set to ï¿½browserï¿½ to automatically detect the browser language being used by the viewer and display the disclosure in that language.
    # @param consumer_disclosure  (optional parameter)
    # @param DocuSign_eSign::UpdateConsumerDisclosureOptions Options for modifying the behavior of the function.
    # @return [Array<(ConsumerDisclosure, Fixnum, Hash)>] ConsumerDisclosure data, response status code and response headers
    def update_consumer_disclosure_with_http_info(account_id, lang_code, consumer_disclosure, options = DocuSign_eSign::UpdateConsumerDisclosureOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_consumer_disclosure ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_consumer_disclosure" if account_id.nil?
      # verify the required parameter 'lang_code' is set
      fail ArgumentError, "Missing the required parameter 'lang_code' when calling AccountsApi.update_consumer_disclosure" if lang_code.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/consumer_disclosure/{langCode}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'langCode' + '}', lang_code.to_s)

      # query parameters
      query_params = {}
      query_params[:'include_metadata'] = options.include_metadata if !options.include_metadata.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(consumer_disclosure)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ConsumerDisclosure')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_consumer_disclosure\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates an existing account custom field.
    # This method updates an existing account custom field.
    # @param account_id The external account number (int) or account ID Guid.
    # @param custom_field_id 
    # @param custom_field  (optional parameter)
    # @param DocuSign_eSign::UpdateCustomFieldOptions Options for modifying the behavior of the function.
    # @return [CustomFields]
    def update_custom_field(account_id, custom_field_id, custom_field, options = DocuSign_eSign::UpdateCustomFieldOptions.default)
      data, _status_code, _headers = update_custom_field_with_http_info(account_id, custom_field_id,  custom_field, options)
      return data
    end

    # Updates an existing account custom field.
    # This method updates an existing account custom field.
    # @param account_id The external account number (int) or account ID Guid.
    # @param custom_field_id 
    # @param custom_field  (optional parameter)
    # @param DocuSign_eSign::UpdateCustomFieldOptions Options for modifying the behavior of the function.
    # @return [Array<(CustomFields, Fixnum, Hash)>] CustomFields data, response status code and response headers
    def update_custom_field_with_http_info(account_id, custom_field_id, custom_field, options = DocuSign_eSign::UpdateCustomFieldOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_custom_field ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_custom_field" if account_id.nil?
      # verify the required parameter 'custom_field_id' is set
      fail ArgumentError, "Missing the required parameter 'custom_field_id' when calling AccountsApi.update_custom_field" if custom_field_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/custom_fields/{customFieldId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'customFieldId' + '}', custom_field_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'apply_to_templates'] = options.apply_to_templates if !options.apply_to_templates.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(custom_field)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'CustomFields')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_custom_field\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates configuration information for the eNote eOriginal integration.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param e_note_configuration  (optional parameter)
    # @return [ENoteConfiguration]
    def update_e_note_configuration(account_id, e_note_configuration)
      data, _status_code, _headers = update_e_note_configuration_with_http_info(account_id,  e_note_configuration)
      return data
    end

    # Updates configuration information for the eNote eOriginal integration.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param e_note_configuration  (optional parameter)
    # @return [Array<(ENoteConfiguration, Fixnum, Hash)>] ENoteConfiguration data, response status code and response headers
    def update_e_note_configuration_with_http_info(account_id, e_note_configuration)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_e_note_configuration ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_e_note_configuration" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings/enote_configuration".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(e_note_configuration)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ENoteConfiguration')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_e_note_configuration\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates envelope purge configuration.
    # An envelope purge configuration enables account administrators to permanently remove documents and their field data from completed and voided envelopes after a specified retention period (`retentionDays`). This method sets the envelope purge configuration for your account.  **Note:** To use this method, you must be an account administrator.  For more information, see [Purge Envelopes](https://support.docusign.com/en/guides/ndse-user-guide-purge-envelopes).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_purge_configuration  (optional parameter)
    # @return [EnvelopePurgeConfiguration]
    def update_envelope_purge_configuration(account_id, envelope_purge_configuration)
      data, _status_code, _headers = update_envelope_purge_configuration_with_http_info(account_id,  envelope_purge_configuration)
      return data
    end

    # Updates envelope purge configuration.
    # An envelope purge configuration enables account administrators to permanently remove documents and their field data from completed and voided envelopes after a specified retention period (&#x60;retentionDays&#x60;). This method sets the envelope purge configuration for your account.  **Note:** To use this method, you must be an account administrator.  For more information, see [Purge Envelopes](https://support.docusign.com/en/guides/ndse-user-guide-purge-envelopes).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_purge_configuration  (optional parameter)
    # @return [Array<(EnvelopePurgeConfiguration, Fixnum, Hash)>] EnvelopePurgeConfiguration data, response status code and response headers
    def update_envelope_purge_configuration_with_http_info(account_id, envelope_purge_configuration)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_envelope_purge_configuration ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_envelope_purge_configuration" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings/envelope_purge_configuration".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(envelope_purge_configuration)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'EnvelopePurgeConfiguration')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_envelope_purge_configuration\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Favorites a template
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param favorite_templates_info  (optional parameter)
    # @return [FavoriteTemplatesInfo]
    def update_favorite_template(account_id, favorite_templates_info)
      data, _status_code, _headers = update_favorite_template_with_http_info(account_id,  favorite_templates_info)
      return data
    end

    # Favorites a template
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param favorite_templates_info  (optional parameter)
    # @return [Array<(FavoriteTemplatesInfo, Fixnum, Hash)>] FavoriteTemplatesInfo data, response status code and response headers
    def update_favorite_template_with_http_info(account_id, favorite_templates_info)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_favorite_template ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_favorite_template" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/favorite_templates".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(favorite_templates_info)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'FavoriteTemplatesInfo')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_favorite_template\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates default user level settings for a specified account
    # This method changes the default settings for the email notifications that signers and senders receive about envelopes.
    # @param account_id The external account number (int) or account ID Guid.
    # @param notification_defaults  (optional parameter)
    # @return [NotificationDefaults]
    def update_notification_defaults(account_id, notification_defaults)
      data, _status_code, _headers = update_notification_defaults_with_http_info(account_id,  notification_defaults)
      return data
    end

    # Updates default user level settings for a specified account
    # This method changes the default settings for the email notifications that signers and senders receive about envelopes.
    # @param account_id The external account number (int) or account ID Guid.
    # @param notification_defaults  (optional parameter)
    # @return [Array<(NotificationDefaults, Fixnum, Hash)>] NotificationDefaults data, response status code and response headers
    def update_notification_defaults_with_http_info(account_id, notification_defaults)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_notification_defaults ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_notification_defaults" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings/notification_defaults".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(notification_defaults)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'NotificationDefaults')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_notification_defaults\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update the password rules
    # This method updates the password rules for an account.  **Note:** To update the password rules for an account, you must be an account administrator.
    # @param account_id The external account number (int) or account ID Guid.
    # @param account_password_rules  (optional parameter)
    # @return [AccountPasswordRules]
    def update_password_rules(account_id, account_password_rules)
      data, _status_code, _headers = update_password_rules_with_http_info(account_id,  account_password_rules)
      return data
    end

    # Update the password rules
    # This method updates the password rules for an account.  **Note:** To update the password rules for an account, you must be an account administrator.
    # @param account_id The external account number (int) or account ID Guid.
    # @param account_password_rules  (optional parameter)
    # @return [Array<(AccountPasswordRules, Fixnum, Hash)>] AccountPasswordRules data, response status code and response headers
    def update_password_rules_with_http_info(account_id, account_password_rules)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_password_rules ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_password_rules" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings/password_rules".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(account_password_rules)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountPasswordRules')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_password_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates a permission profile within the specified account.
    # This method updates an account permission profile.  ### Related topics  - [How to update individual permission settings](/docs/esign-rest-api/how-to/permission-profile-updating/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param permission_profile_id 
    # @param permission_profile  (optional parameter)
    # @param DocuSign_eSign::UpdatePermissionProfileOptions Options for modifying the behavior of the function.
    # @return [PermissionProfile]
    def update_permission_profile(account_id, permission_profile_id, permission_profile, options = DocuSign_eSign::UpdatePermissionProfileOptions.default)
      data, _status_code, _headers = update_permission_profile_with_http_info(account_id, permission_profile_id,  permission_profile, options)
      return data
    end

    # Updates a permission profile within the specified account.
    # This method updates an account permission profile.  ### Related topics  - [How to update individual permission settings](/docs/esign-rest-api/how-to/permission-profile-updating/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param permission_profile_id 
    # @param permission_profile  (optional parameter)
    # @param DocuSign_eSign::UpdatePermissionProfileOptions Options for modifying the behavior of the function.
    # @return [Array<(PermissionProfile, Fixnum, Hash)>] PermissionProfile data, response status code and response headers
    def update_permission_profile_with_http_info(account_id, permission_profile_id, permission_profile, options = DocuSign_eSign::UpdatePermissionProfileOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_permission_profile ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_permission_profile" if account_id.nil?
      # verify the required parameter 'permission_profile_id' is set
      fail ArgumentError, "Missing the required parameter 'permission_profile_id' when calling AccountsApi.update_permission_profile" if permission_profile_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/permission_profiles/{permissionProfileId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'permissionProfileId' + '}', permission_profile_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'include'] = options.include if !options.include.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(permission_profile)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PermissionProfile')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_permission_profile\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the account settings for an account.
    # Updates the account settings for the specified account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param account_settings_information  (optional parameter)
    # @return [nil]
    def update_settings(account_id, account_settings_information)
      update_settings_with_http_info(account_id,  account_settings_information)
      return nil
    end

    # Updates the account settings for an account.
    # Updates the account settings for the specified account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param account_settings_information  (optional parameter)
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def update_settings_with_http_info(account_id, account_settings_information)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_settings ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_settings" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/settings".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(account_settings_information)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_settings\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Reserved: Sets the shared access information for users.
    # Reserved: Sets the shared access information for one or more users.
    # @param account_id The external account number (int) or account ID Guid.
    # @param account_shared_access  (optional parameter)
    # @param DocuSign_eSign::UpdateSharedAccessOptions Options for modifying the behavior of the function.
    # @return [AccountSharedAccess]
    def update_shared_access(account_id, account_shared_access, options = DocuSign_eSign::UpdateSharedAccessOptions.default)
      data, _status_code, _headers = update_shared_access_with_http_info(account_id,  account_shared_access, options)
      return data
    end

    # Reserved: Sets the shared access information for users.
    # Reserved: Sets the shared access information for one or more users.
    # @param account_id The external account number (int) or account ID Guid.
    # @param account_shared_access  (optional parameter)
    # @param DocuSign_eSign::UpdateSharedAccessOptions Options for modifying the behavior of the function.
    # @return [Array<(AccountSharedAccess, Fixnum, Hash)>] AccountSharedAccess data, response status code and response headers
    def update_shared_access_with_http_info(account_id, account_shared_access, options = DocuSign_eSign::UpdateSharedAccessOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_shared_access ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_shared_access" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/shared_access".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'item_type'] = options.item_type if !options.item_type.nil?
      query_params[:'preserve_existing_shared_access'] = options.preserve_existing_shared_access if !options.preserve_existing_shared_access.nil?
      query_params[:'user_ids'] = options.user_ids if !options.user_ids.nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(account_shared_access)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'AccountSharedAccess')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_shared_access\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the user authorization
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param authorization_id 
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param user_authorization_update_request  (optional parameter)
    # @return [UserAuthorization]
    def update_user_authorization(account_id, authorization_id, user_id, user_authorization_update_request)
      data, _status_code, _headers = update_user_authorization_with_http_info(account_id, authorization_id, user_id,  user_authorization_update_request)
      return data
    end

    # Updates the user authorization
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param authorization_id 
    # @param user_id The user ID of the user being accessed. Generally this is the user ID of the authenticated user, but if the authenticated user is an Admin on the account, this may be another user the Admin user is accessing.
    # @param user_authorization_update_request  (optional parameter)
    # @return [Array<(UserAuthorization, Fixnum, Hash)>] UserAuthorization data, response status code and response headers
    def update_user_authorization_with_http_info(account_id, authorization_id, user_id, user_authorization_update_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_user_authorization ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_user_authorization" if account_id.nil?
      # verify the required parameter 'authorization_id' is set
      fail ArgumentError, "Missing the required parameter 'authorization_id' when calling AccountsApi.update_user_authorization" if authorization_id.nil?
      # verify the required parameter 'user_id' is set
      fail ArgumentError, "Missing the required parameter 'user_id' when calling AccountsApi.update_user_authorization" if user_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/users/{userId}/authorization/{authorizationId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'authorizationId' + '}', authorization_id.to_s).sub('{' + 'userId' + '}', user_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(user_authorization_update_request)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'UserAuthorization')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_user_authorization\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update watermark information.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param watermark  (optional parameter)
    # @return [Watermark]
    def update_watermark(account_id, watermark)
      data, _status_code, _headers = update_watermark_with_http_info(account_id,  watermark)
      return data
    end

    # Update watermark information.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param watermark  (optional parameter)
    # @return [Array<(Watermark, Fixnum, Hash)>] Watermark data, response status code and response headers
    def update_watermark_with_http_info(account_id, watermark)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AccountsApi.update_watermark ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling AccountsApi.update_watermark" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/watermark".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(watermark)
      auth_names = []
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Watermark')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AccountsApi#update_watermark\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end