=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 ApplyTemplateOptions
    # 
    attr_accessor :preserve_template_recipient

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

  class ApplyTemplateToDocumentOptions
    # 
    attr_accessor :preserve_template_recipient

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

  class CreateEnvelopeOptions
    # 
    attr_accessor :cdse_mode

    # 
    attr_accessor :change_routing_order

    # If set to true then we want to set the sourceEnvelopeId to indicate that this is a\"forward\" envelope action
    attr_accessor :completed_documents_only

    # When set to **true**, merges template roles and remove empty recipients when you create an envelope with multiple templates.
    attr_accessor :merge_roles_on_draft

    # 
    attr_accessor :tab_label_exact_matches

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

  class CreateRecipientOptions
    # When set to **true**, resends the   envelope if the new recipient's routing order is before or the same as the envelope's next recipient.
    attr_accessor :resend_envelope

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

  class CreateRecipientProofFileResourceTokenOptions
    # 
    attr_accessor :token_scopes

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

  class GetChunkedUploadOptions
    # 
    attr_accessor :include

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

  class GetCommentsTranscriptOptions
    # 
    attr_accessor :encoding

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

  class GetConsumerDisclosureOptions
    # 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.
    attr_accessor :lang_code2

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

  class GetConsumerDisclosureDefaultOptions
    # 
    attr_accessor :lang_code

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

  class GetDocumentOptions
    # When set to **false**, the envelope signing certificate is removed from the download.
    attr_accessor :certificate

    # 
    attr_accessor :documents_by_userid

    # 
    attr_accessor :encoding

    # When set to **true**, the PDF bytes returned in the response are encrypted for all the key managers configured on your DocuSign account. The documents can be decrypted with the KeyManager Decrypt Document API.
    attr_accessor :encrypt

    # Specifies the language for the Certificate of Completion in the response. The supported languages, with the language value shown in parenthesis, are: Chinese Simplified (zh_CN), , Chinese Traditional (zh_TW), Dutch (nl), English US (en), French (fr), German (de), Italian (it), Japanese (ja), Korean (ko), Portuguese (pt), Portuguese (Brazil) (pt_BR), Russian (ru), Spanish (es). 
    attr_accessor :language

    # 
    attr_accessor :recipient_id

    # 
    attr_accessor :shared_user_id

    # When set to **true**, any changed fields for the returned PDF are highlighted in yellow and optional signatures or initials outlined in red. 
    attr_accessor :show_changes

    # When set to **true**, the account has the watermark feature enabled, and the envelope is not complete, the watermark for the account is added to the PDF documents. This option can remove the watermark. 
    attr_accessor :watermark

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

  class GetDocumentPageImageOptions
    # Sets the dpi for the image.
    attr_accessor :dpi

    # Sets the maximum height for the page image in pixels. The dpi is recalculated based on this setting.
    attr_accessor :max_height

    # Sets the maximum width for the page image in pixels. The dpi is recalculated based on this setting.
    attr_accessor :max_width

    # 
    attr_accessor :show_changes

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

  class GetDocumentTabsOptions
    # 
    attr_accessor :include_metadata

    # 
    attr_accessor :page_numbers

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

  class GetEnvelopeOptions
    # When true, envelope information can be added or modified.
    attr_accessor :advanced_update

    # 
    attr_accessor :include

    # 
    attr_accessor :include_anchor_tab_locations

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

  class GetEnvelopeTransferRulesOptions
    # 
    attr_accessor :count

    # 
    attr_accessor :start_position

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

  class GetPagesOptions
    # 
    attr_accessor :count

    # 
    attr_accessor :dpi

    # 
    attr_accessor :max_height

    # 
    attr_accessor :max_width

    # 
    attr_accessor :nocache

    # 
    attr_accessor :show_changes

    # 
    attr_accessor :start_position

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

  class GetRecipientInitialsImageOptions
    # The added line and identifier around the initial image. Note: Older envelopes might only have chromed images. If getting the non-chromed image fails, try getting the chromed image.
    attr_accessor :include_chrome

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

  class GetRecipientSignatureImageOptions
    # When set to **true**, indicates the chromed version of the signature image should be retrieved.
    attr_accessor :include_chrome

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

  class ListAuditEventsOptions
    # Locale setting for the response, e.g., 'en-US'.
    attr_accessor :locale

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

  class ListDocumentsOptions
    # 
    attr_accessor :documents_by_userid

    # 
    attr_accessor :include_agreement_type

    # 
    attr_accessor :include_docgen_formfields

    # 
    attr_accessor :include_document_size

    # 
    attr_accessor :include_metadata

    # 
    attr_accessor :include_tabs

    # 
    attr_accessor :recipient_id

    # 
    attr_accessor :shared_user_id

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

  class ListRecipientsOptions
    #  When set to **true** and `include_tabs` is set to **true**, all tabs with anchor tab properties are included in the response. 
    attr_accessor :include_anchor_tab_locations

    #  When set to **true**, the extended properties are included in the response. 
    attr_accessor :include_extended

    # 
    attr_accessor :include_metadata

    # When set to **true**, the tab information associated with the recipient is included in the response.
    attr_accessor :include_tabs

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

  class ListStatusOptions
    # 
    attr_accessor :ac_status

    # 
    attr_accessor :block

    # 
    attr_accessor :count

    # 
    attr_accessor :email

    # 
    attr_accessor :envelope_ids

    # 
    attr_accessor :from_date

    # 
    attr_accessor :from_to_status

    # 
    attr_accessor :start_position

    # 
    attr_accessor :status

    # 
    attr_accessor :to_date

    # 
    attr_accessor :transaction_ids

    # 
    attr_accessor :user_name

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

  class ListStatusChangesOptions
    # Specifies the Authoritative Copy Status for the envelopes. The possible values are: Unknown, Original, Transferred, AuthoritativeCopy, AuthoritativeCopyExportPending, AuthoritativeCopyExported, DepositPending, Deposited, DepositedEO, or DepositFailed.
    attr_accessor :ac_status

    # 
    attr_accessor :block

    # 
    attr_accessor :cdse_mode

    # 
    attr_accessor :continuation_token

    # 
    attr_accessor :count

    # This specifies the envelope custom field name and value searched for in the envelope information. The value portion of the query can use partial strings by adding '%' (percent sign) around the custom field query value.   Example 1: If you have an envelope custom field called \"Region\" and you want to search for all envelopes where the value is \"West\" you would use the query: `?custom_field=Region=West`.   Example 2: To search for envelopes where the `ApplicationID` custom field has the value or partial value of \"DocuSign\" in field, the query would be: `?custom_field=ApplicationId=%DocuSign%` This would find envelopes where the custom field value is \"DocuSign for Salesforce\" or \"DocuSign envelope.\"  
    attr_accessor :custom_field

    # 
    attr_accessor :email

    # 
    attr_accessor :envelope_ids

    # 
    attr_accessor :exclude

    # 
    attr_accessor :folder_ids

    # 
    attr_accessor :folder_types

    # The date/time setting that specifies the date/time when the request begins checking for status changes for envelopes in the account.  This is required unless 'envelopeId's are used.
    attr_accessor :from_date

    # This is the status type checked for in the `from_date`/`to_date` period. If `changed` is specified, then envelopes that changed status during the period are found. If for example, `created` is specified, then envelopes created during the period are found. Default is `changed`.   Possible values are: Voided, Changed, Created, Deleted, Sent, Delivered, Signed, Completed, Declined, TimedOut and Processing.
    attr_accessor :from_to_status

    # 
    attr_accessor :include

    # 
    attr_accessor :include_purge_information

    # 
    attr_accessor :intersecting_folder_ids

    # 
    attr_accessor :last_queried_date

    # 
    attr_accessor :order

    # 
    attr_accessor :order_by

    # 
    attr_accessor :powerformids

    # 
    attr_accessor :query_budget

    # 
    attr_accessor :requester_date_format

    # 
    attr_accessor :search_mode

    # 
    attr_accessor :search_text

    # 
    attr_accessor :start_position

    # The list of current statuses to include in the response. By default, all envelopes found are returned. If values are specified, then of the envelopes found, only those with the current status specified are returned in the results.   Possible values are: Voided, Created, Deleted, Sent, Delivered, Signed, Completed, Declined, TimedOut and Processing.
    attr_accessor :status

    # Optional date/time setting that specifies the date/time when the request stops for status changes for envelopes in the account. If no entry, the system uses the time of the call as the `to_date`. 
    attr_accessor :to_date

    # If included in the query string, this is a comma separated list of envelope `transactionId`s.   If included in the `request_body`, this is a list of envelope `transactionId`s.   ###### Note: `transactionId`s are only valid in the DocuSign system for seven days. 
    attr_accessor :transaction_ids

    # 
    attr_accessor :user_filter

    # 
    attr_accessor :user_id

    # 
    attr_accessor :user_name

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

  class ListTabsOptions
    # When set to **true**, all tabs with anchor tab properties are included in the response. 
    attr_accessor :include_anchor_tab_locations

    # 
    attr_accessor :include_metadata

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

  class ListTemplatesOptions
    # The possible values are:  matching_applied - This returns template matching information for the template.
    attr_accessor :include

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

  class ListTemplatesForDocumentOptions
    # 
    attr_accessor :include

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

  class UpdateOptions
    # When set to **true**, allows the caller to update recipients, tabs, custom fields, notification, email settings and other envelope attributes.
    attr_accessor :advanced_update

    # 
    attr_accessor :recycle_on_void

    # When set to **true**, sends the specified envelope again.
    attr_accessor :resend_envelope

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

  class UpdateChunkedUploadOptions
    # 
    attr_accessor :action

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

  class UpdateEnvelopeDocGenFormFieldsOptions
    # 
    attr_accessor :update_docgen_formfields_only

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

  class UpdateRecipientsOptions
    # 
    attr_accessor :combine_same_order_recipients

    # 
    attr_accessor :offline_signing

    # When set to **true**, resends the   envelope if the new recipient's routing order is before or the same as the envelope's next recipient.
    attr_accessor :resend_envelope

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


  class EnvelopesApi
    attr_accessor :api_client

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

    # Adds templates to an envelope.
    # Adds templates to the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_template_list  (optional parameter)
    # @param DocuSign_eSign::ApplyTemplateOptions Options for modifying the behavior of the function.
    # @return [DocumentTemplateList]
    def apply_template(account_id, envelope_id, document_template_list, options = DocuSign_eSign::ApplyTemplateOptions.default)
      data, _status_code, _headers = apply_template_with_http_info(account_id, envelope_id,  document_template_list, options)
      return data
    end

    # Adds templates to an envelope.
    # Adds templates to the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_template_list  (optional parameter)
    # @param DocuSign_eSign::ApplyTemplateOptions Options for modifying the behavior of the function.
    # @return [Array<(DocumentTemplateList, Fixnum, Hash)>] DocumentTemplateList data, response status code and response headers
    def apply_template_with_http_info(account_id, envelope_id, document_template_list, options = DocuSign_eSign::ApplyTemplateOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.apply_template ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.apply_template" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.apply_template" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/templates".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'preserve_template_recipient'] = options.preserve_template_recipient if !options.preserve_template_recipient.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(document_template_list)
      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 => 'DocumentTemplateList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#apply_template\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Adds templates to a document in an  envelope.
    # Adds templates to a document in the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_template_list  (optional parameter)
    # @param DocuSign_eSign::ApplyTemplateToDocumentOptions Options for modifying the behavior of the function.
    # @return [DocumentTemplateList]
    def apply_template_to_document(account_id, document_id, envelope_id, document_template_list, options = DocuSign_eSign::ApplyTemplateToDocumentOptions.default)
      data, _status_code, _headers = apply_template_to_document_with_http_info(account_id, document_id, envelope_id,  document_template_list, options)
      return data
    end

    # Adds templates to a document in an  envelope.
    # Adds templates to a document in the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_template_list  (optional parameter)
    # @param DocuSign_eSign::ApplyTemplateToDocumentOptions Options for modifying the behavior of the function.
    # @return [Array<(DocumentTemplateList, Fixnum, Hash)>] DocumentTemplateList data, response status code and response headers
    def apply_template_to_document_with_http_info(account_id, document_id, envelope_id, document_template_list, options = DocuSign_eSign::ApplyTemplateToDocumentOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.apply_template_to_document ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.apply_template_to_document" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.apply_template_to_document" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.apply_template_to_document" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/templates".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'preserve_template_recipient'] = options.preserve_template_recipient if !options.preserve_template_recipient.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(document_template_list)
      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 => 'DocumentTemplateList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#apply_template_to_document\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Initiate a new ChunkedUpload.
    # This method initiates a new chunked upload with the first part of the content.
    # @param account_id The external account number (int) or account ID Guid.
    # @param chunked_upload_request  (optional parameter)
    # @return [ChunkedUploadResponse]
    def create_chunked_upload(account_id, chunked_upload_request)
      data, _status_code, _headers = create_chunked_upload_with_http_info(account_id,  chunked_upload_request)
      return data
    end

    # Initiate a new ChunkedUpload.
    # This method initiates a new chunked upload with the first part of the content.
    # @param account_id The external account number (int) or account ID Guid.
    # @param chunked_upload_request  (optional parameter)
    # @return [Array<(ChunkedUploadResponse, Fixnum, Hash)>] ChunkedUploadResponse data, response status code and response headers
    def create_chunked_upload_with_http_info(account_id, chunked_upload_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_chunked_upload ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_chunked_upload" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/chunked_uploads".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(chunked_upload_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 => 'ChunkedUploadResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_chunked_upload\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a URL to the authentication view UI.
    # Returns a URL that allows you to embed the authentication view of the DocuSign UI in your applications.
    # @param account_id The external account number (int) or account ID Guid.
    # @param console_view_request  (optional parameter)
    # @return [ViewUrl]
    def create_console_view(account_id, console_view_request)
      data, _status_code, _headers = create_console_view_with_http_info(account_id,  console_view_request)
      return data
    end

    # Returns a URL to the authentication view UI.
    # Returns a URL that allows you to embed the authentication view of the DocuSign UI in your applications.
    # @param account_id The external account number (int) or account ID Guid.
    # @param console_view_request  (optional parameter)
    # @return [Array<(ViewUrl, Fixnum, Hash)>] ViewUrl data, response status code and response headers
    def create_console_view_with_http_info(account_id, console_view_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_console_view ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_console_view" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/views/console".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(console_view_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 => 'ViewUrl')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_console_view\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a URL to the envelope correction UI.
    # Returns a URL that allows you to embed the envelope correction view of the DocuSign UI in your applications.  Important: iFrames should not be used for embedded operations on mobile devices due to screen space issues. For iOS devices DocuSign recommends using a WebView. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_view_request  (optional parameter)
    # @return [ViewUrl]
    def create_correct_view(account_id, envelope_id, envelope_view_request)
      data, _status_code, _headers = create_correct_view_with_http_info(account_id, envelope_id,  envelope_view_request)
      return data
    end

    # Returns a URL to the envelope correction UI.
    # Returns a URL that allows you to embed the envelope correction view of the DocuSign UI in your applications.  Important: iFrames should not be used for embedded operations on mobile devices due to screen space issues. For iOS devices DocuSign recommends using a WebView. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_view_request  (optional parameter)
    # @return [Array<(ViewUrl, Fixnum, Hash)>] ViewUrl data, response status code and response headers
    def create_correct_view_with_http_info(account_id, envelope_id, envelope_view_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_correct_view ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_correct_view" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_correct_view" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/views/correct".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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_view_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 => 'ViewUrl')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_correct_view\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates envelope custom fields for an envelope.
    # Updates the envelope custom fields for draft and in-process envelopes.  Each custom field used in an envelope must have a unique name.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param custom_fields  (optional parameter)
    # @return [CustomFields]
    def create_custom_fields(account_id, envelope_id, custom_fields)
      data, _status_code, _headers = create_custom_fields_with_http_info(account_id, envelope_id,  custom_fields)
      return data
    end

    # Updates envelope custom fields for an envelope.
    # Updates the envelope custom fields for draft and in-process envelopes.  Each custom field used in an envelope must have a unique name.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param custom_fields  (optional parameter)
    # @return [Array<(CustomFields, Fixnum, Hash)>] CustomFields data, response status code and response headers
    def create_custom_fields_with_http_info(account_id, envelope_id, custom_fields)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_custom_fields ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_custom_fields" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_custom_fields" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/custom_fields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(custom_fields)
      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: EnvelopesApi#create_custom_fields\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Creates custom document fields in an existing envelope document.
    # Creates custom document fields in an existing envelope document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_fields_information  (optional parameter)
    # @return [DocumentFieldsInformation]
    def create_document_fields(account_id, document_id, envelope_id, document_fields_information)
      data, _status_code, _headers = create_document_fields_with_http_info(account_id, document_id, envelope_id,  document_fields_information)
      return data
    end

    # Creates custom document fields in an existing envelope document.
    # Creates custom document fields in an existing envelope document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_fields_information  (optional parameter)
    # @return [Array<(DocumentFieldsInformation, Fixnum, Hash)>] DocumentFieldsInformation data, response status code and response headers
    def create_document_fields_with_http_info(account_id, document_id, envelope_id, document_fields_information)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_document_fields ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_document_fields" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.create_document_fields" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_document_fields" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/fields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(document_fields_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 => 'DocumentFieldsInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_document_fields\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get Responsive HTML Preview for a document in an envelope.
    # Creates a preview of the [responsive](/docs/esign-rest-api/esign101/concepts/responsive/) HTML version of a specific document. This method enables you to preview a PDF document conversion to responsive HTML across device types prior to sending.  The request body is a `documentHtmlDefinition` object, which holds the responsive signing parameters that define how to generate the HTML version of the signing document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_html_definition  (optional parameter)
    # @return [DocumentHtmlDefinitions]
    def create_document_responsive_html_preview(account_id, document_id, envelope_id, document_html_definition)
      data, _status_code, _headers = create_document_responsive_html_preview_with_http_info(account_id, document_id, envelope_id,  document_html_definition)
      return data
    end

    # Get Responsive HTML Preview for a document in an envelope.
    # Creates a preview of the [responsive](/docs/esign-rest-api/esign101/concepts/responsive/) HTML version of a specific document. This method enables you to preview a PDF document conversion to responsive HTML across device types prior to sending.  The request body is a &#x60;documentHtmlDefinition&#x60; object, which holds the responsive signing parameters that define how to generate the HTML version of the signing document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_html_definition  (optional parameter)
    # @return [Array<(DocumentHtmlDefinitions, Fixnum, Hash)>] DocumentHtmlDefinitions data, response status code and response headers
    def create_document_responsive_html_preview_with_http_info(account_id, document_id, envelope_id, document_html_definition)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_document_responsive_html_preview ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_document_responsive_html_preview" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.create_document_responsive_html_preview" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_document_responsive_html_preview" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/responsive_html_preview".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(document_html_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 => 'DocumentHtmlDefinitions')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_document_responsive_html_preview\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Adds the tabs to an envelope document
    # Adds tabs to the document specified by `documentId` in the envelope specified by `envelopeId`.  In the request body, you only need to specify the tabs that your are adding. For example, to add a text [prefill tab](/docs/esign-rest-api/reference/envelopes/envelopedocumenttabs/create/#definition__tabs_prefilltabs), your request body might look like this:  ``` {   \"prefillTabs\": {     \"textTabs\": [       {         \"value\": \"a prefill text tab\",         \"pageNumber\": \"1\",         \"documentId\": \"1\",         \"xPosition\": 316,         \"yPosition\": 97       }     ]   } } ``` 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param tabs  (optional parameter)
    # @return [Tabs]
    def create_document_tabs(account_id, document_id, envelope_id, tabs)
      data, _status_code, _headers = create_document_tabs_with_http_info(account_id, document_id, envelope_id,  tabs)
      return data
    end

    # Adds the tabs to an envelope document
    # Adds tabs to the document specified by &#x60;documentId&#x60; in the envelope specified by &#x60;envelopeId&#x60;.  In the request body, you only need to specify the tabs that your are adding. For example, to add a text [prefill tab](/docs/esign-rest-api/reference/envelopes/envelopedocumenttabs/create/#definition__tabs_prefilltabs), your request body might look like this:  &#x60;&#x60;&#x60; {   \&quot;prefillTabs\&quot;: {     \&quot;textTabs\&quot;: [       {         \&quot;value\&quot;: \&quot;a prefill text tab\&quot;,         \&quot;pageNumber\&quot;: \&quot;1\&quot;,         \&quot;documentId\&quot;: \&quot;1\&quot;,         \&quot;xPosition\&quot;: 316,         \&quot;yPosition\&quot;: 97       }     ]   } } &#x60;&#x60;&#x60; 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param tabs  (optional parameter)
    # @return [Array<(Tabs, Fixnum, Hash)>] Tabs data, response status code and response headers
    def create_document_tabs_with_http_info(account_id, document_id, envelope_id, tabs)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_document_tabs ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_document_tabs" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.create_document_tabs" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_document_tabs" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/tabs".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(tabs)
      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 => 'Tabs')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_document_tabs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a URL to the edit view UI.
    # Returns a URL that allows you to embed the edit view of the DocuSign UI in your applications. This is a one-time use login token that allows the user to be placed into the DocuSign editing view.   Upon sending completion, the user is returned to the return URL provided by the API application.  Important: iFrames should not be used for embedded operations on mobile devices due to screen space issues. For iOS devices DocuSign recommends using a WebView. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_view_request  (optional parameter)
    # @return [ViewUrl]
    def create_edit_view(account_id, envelope_id, envelope_view_request)
      data, _status_code, _headers = create_edit_view_with_http_info(account_id, envelope_id,  envelope_view_request)
      return data
    end

    # Returns a URL to the edit view UI.
    # Returns a URL that allows you to embed the edit view of the DocuSign UI in your applications. This is a one-time use login token that allows the user to be placed into the DocuSign editing view.   Upon sending completion, the user is returned to the return URL provided by the API application.  Important: iFrames should not be used for embedded operations on mobile devices due to screen space issues. For iOS devices DocuSign recommends using a WebView. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_view_request  (optional parameter)
    # @return [Array<(ViewUrl, Fixnum, Hash)>] ViewUrl data, response status code and response headers
    def create_edit_view_with_http_info(account_id, envelope_id, envelope_view_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_edit_view ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_edit_view" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_edit_view" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/views/edit".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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_view_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 => 'ViewUrl')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_edit_view\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Adds email setting overrides to an envelope.
    # Adds email override settings, changing the email address to reply to an email address, name, or the BCC for email archive information, for the envelope. Note that adding email settings will only affect email communications that occur after the addition was made.  ### Important: The BCC Email address feature is designed to provide a copy of all email communications for external archiving purposes. DocuSign recommends that envelopes sent using the BCC for Email Archive feature, including the BCC Email Override option, include additional signer authentication options. To send a copy of the envelope to a recipient who does not need to sign, use a Carbon Copies or Certified Deliveries Recipient Type.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param email_settings  (optional parameter)
    # @return [EmailSettings]
    def create_email_settings(account_id, envelope_id, email_settings)
      data, _status_code, _headers = create_email_settings_with_http_info(account_id, envelope_id,  email_settings)
      return data
    end

    # Adds email setting overrides to an envelope.
    # Adds email override settings, changing the email address to reply to an email address, name, or the BCC for email archive information, for the envelope. Note that adding email settings will only affect email communications that occur after the addition was made.  ### Important: The BCC Email address feature is designed to provide a copy of all email communications for external archiving purposes. DocuSign recommends that envelopes sent using the BCC for Email Archive feature, including the BCC Email Override option, include additional signer authentication options. To send a copy of the envelope to a recipient who does not need to sign, use a Carbon Copies or Certified Deliveries Recipient Type.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param email_settings  (optional parameter)
    # @return [Array<(EmailSettings, Fixnum, Hash)>] EmailSettings data, response status code and response headers
    def create_email_settings_with_http_info(account_id, envelope_id, email_settings)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_email_settings ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_email_settings" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_email_settings" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/email_settings".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(email_settings)
      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 => 'EmailSettings')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_email_settings\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Creates an envelope.
    # Creates an envelope.   Using this function you can: * Create an envelope and send it. * Create an envelope from an existing template and send it.  In either case, you can choose to save the envelope as a draft envelope instead of sending it by setting the request's `status` property to `created` instead of `sent`.  ## Sending Envelopes  Documents can be included with the Envelopes::create call itself or a template can include documents. Documents can be added by using a multi-part/form request or by using the `documentBase64` field of the [`document` object](#/definitions/document)  ### Recipient Types An [`envelopeDefinition` object](#/definitions/envelopeDefinition) is used as the method's body. Envelope recipients can be defined in the envelope or in templates. The `envelopeDefinition` object's `recipients` field is an [`EnvelopeRecipients` resource object](#/definitions/EnvelopeRecipients). It includes arrays of the seven types of recipients defined by DocuSign:  Recipient type | Object definition -------------- | ----------------- agent (can add name and email information for later recipients/signers) | [`agent`](#/definitions/agent) carbon copy (receives a copy of the documents) | [`carbonCopy`](#/definitions/carbonCopy) certified delivery  (receives a copy of the documents and must acknowledge receipt) | [`certifiedDelivery`](#/definitions/certifiedDelivery) editor (can change recipients and document fields for later recipients/signers) | [`editor`](#/definitions/editor) in-person signer (\"hosts\" someone who signs in-person) | [`inPersonSigner`](#/definitions/inPersonSigner) intermediary (can add name and email information for some later recipients/signers.) | [`intermediary`](#/definitions/intermediary) signer (signs and/or updates document fields) | [`signer`](#/definitions/signer)  Additional information about the different types of recipients is available from the [`EnvelopeRecipients` resource page](../../EnvelopeRecipients) and from the [Developer Center](https://www.docusign.com/developer-center/explore/features/recipients)  ### Tabs Tabs (also referred to as `tags` and as `fields` in the web sending user interface), can be defined in the `envelopeDefinition`, in templates, by transforming PDF Form Fields, or by using Composite Templates (see below).  Defining tabs: the `inPersonSigner`, and `signer` recipient objects include a `tabs` field. It is an [`EnvelopeTabs` resource object](#/definitions/EnvelopeTabs). It includes arrays of the 24 different tab types available. See the [`EnvelopeTabs` resource](../../EnvelopeTabs) for more information.  ## Using Templates Envelopes use specific people or groups as recipients. Templates can specify a role, eg `account_manager.` When a template is used in an envelope, the roles must be replaced with specific people or groups.  When you create an envelope using a `templateId`, the different recipient type objects within the [`EnvelopeRecipients` object](#/definitions/EnvelopeRecipients) are used to assign recipients to the template's roles via the `roleName` property. The recipient objects can also override settings that were specified in the template, and set values for tab fields that were defined in the template.  ### Message Lock When a template is added or applied to an envelope and the template has a locked email subject and message, that subject and message are used for the envelope and cannot be changed even if another locked template is subsequently added or applied to the envelope. The field `messageLock` is used to lock the email subject and message.  If an email subject or message is entered before adding or applying a template with `messageLock` **true**, the email subject and message is overwritten with the locked email subject and message from the template.  ## Envelope Status The status of sent envelopes can be determined through the DocuSign webhook system or by polling. Webhooks are highly recommended: they provide your application with the quickest updates when an envelope's status changes. DocuSign limits polling to once every 15 minutes or less frequently.  When a webhook is used, DocuSign calls your application, via the URL you provide, with a notification XML message.   See the [Webhook recipe](https://www.docusign.com/developer-center/recipes/webhook-status) for examples and live demos of using webhooks.  ## Webhook Options The two webhook options, *eventNotification* and *Connect* use the same notification mechanism and message formats. eventNotification is used to create a webhook for a specific envelope sent via the API. Connect webhooks can be used for any envelope sent from an account, from any user, from any client.   ### eventNotification Webhooks The Envelopes::create method includes an optional [eventNotification object](#definition-eventNotification) that adds a webhook to the envelope. eventNotification webhooks are available for all DocuSign accounts with API access.  ### Connect Webhooks Connect can be used to create a webhook for all envelopes sent by all users in an account, either through the API or via other DocuSign clients (web, mobile, etc). Connect configurations are independent of specific envelopes. A Connect configuration includes a filter that may be used to limit the webhook to specific users, envelope statuses, etc.   Connect configurations may be created and managed using the [ConnectConfigurations resource](../../Connect/ConnectConfigurations). Configurations can also be created and managed from the Administration tool accessed by selecting \"Go to Admin\" from the menu next to your picture on the DocuSign web app. See the Integrations/Connect section of the Admin tool. For repeatability, and to minimize support questions, creating Connect configurations via the API is recommended, especially for ISVs.  Connect is available for some DocuSign account types. Please contact DocuSign Sales for more information.  ## Composite Templates  The Composite Templates feature, like [compositing in film production](https://en.wikipedia.org/wiki/Compositing), enables you to *overlay* document, recipient, and tab definitions from multiple sources, including PDF Form Field definitions, templates defined on the server, and more.  Each Composite Template consists of optional elements: server templates, inline templates, PDF Metadata templates, and documents.  * The Composite Template ID is an optional element used to identify the composite template. It is used as a reference when adding document object information via a multi-part HTTP message. If used, the document content-disposition must include the `compositeTemplateId` to which the document should be added. If `compositeTemplateId` is not specified in the content-disposition, the document is applied based on the `documentId` only. If no document object is specified, the composite template inherits the first document.  * Server Templates are server-side templates stored on the DocuSign platform. If supplied, they are overlaid into the envelope in the order of their Sequence value.  * Inline Templates provide a container to add documents, recipients, tabs, and custom fields. If inline templates are supplied, they are overlaid into the envelope in the order of their Sequence value.  * Document objects are optional structures that provide a container to pass in a document or form. If this object is not included, the composite template inherits the *first* document it finds from a server template or inline template, starting with the lowest sequence value.  PDF Form objects are only transformed from the document object. DocuSign does not derive PDF form properties from server templates or inline templates. To instruct DocuSign to transform fields from the PDF form, set `transformPdfFields` to \"true\" for the document. See the Transform PDF Fields section for more information about process.  * PDF Metadata Templates provide a container to embed design-time template information into a PDF document. DocuSign uses this information when processing the Envelope. This convention allows the document to carry the signing instructions with it, so that less information needs to be provided at run-time through an inline template or synchronized with an external structure like a server template. PDF Metadata templates are stored in the Metadata layer of a PDF in accordance with Acrobat's XMP specification. DocuSign will only find PDF Metadata templates inside documents passed in the Document object (see below). If supplied, the PDF metadata template will be overlaid into the envelope in the order of its Sequence value.  ### Compositing the definitions Each Composite Template adds a new document and templates overlay into the envelope. For each Composite Template these rules are applied:  * Templates are overlaid in the order of their Sequence value. * If Document is not passed into the Composite Template's `document` field, the *first* template's document (based on the template's Sequence value) is used. * Last in wins in all cases except for the document (i.e. envelope information, recipient information, secure field information). There is no special casing.  For example, if you want higher security on a tab, then that needs to be specified in a later template (by sequence number) then where the tab is included. If you want higher security on a role recipient, then it needs to be in a later template then where that role recipient is specified.  * Recipient matching is based on Recipient Role and Routing Order. If there are matches, the recipient information is merged together. A final pass is done on all Composite Templates, after all template overlays have been applied, to collapse recipients with the same email, username and routing order. This prevents having the same recipients at the same routing order.  * If you specify in a template that a recipient is locked, once that recipient is overlaid the recipient attributes can no longer be changed. The only items that can be changed for the recipient in this case are the email, username, access code and IDCheckInformationInput.  * Tab matching is based on Tab Labels, Tab Types and Documents. If a Tab Label matches but the Document is not supplied, the Tab is overlaid for all the Documents.  For example, if you have a simple inline template with only one tab in it with a label and a value, the Signature, Initial, Company, Envelope ID, User Name tabs will only be matched and collapsed if they fall in the exact same X and Y locations.  * roleName and tabLabel matching is case sensitive.  * The defaultRecipient field enables you to specify which recipient the generated tabs from a PDF form are mapped to. You can also set PDF form generated tabs to a recipient other than the DefaultRecipient by specifying the mapping of the tab label that is created to one of the template recipients.  * You can use tabLabel wild carding to map a series of tabs from the PDF form. To use this you must end a tab label with \"\\*\" and then the system matches tabs that start with the label.  * If no DefaultRecipient is specified, tabs must be explicitly mapped to recipients in order to be generated from the form. Unmapped form objects will not be generated into their DocuSign equivalents. (In the case of Signature/Initials, the tabs will be disregarded entirely; in the case of pdf text fields, the field data will be flattened on the Envelope document, but there will not be a corresponding DocuSign data tab.)  ### Including the Document Content for Composite Templates Document content can be supplied inline, using the `documentBase64` or can be included in a multi-part HTTP message.  If a multi-part message is used and there are multiple Composite Templates, the document content-disposition can include the `compositeTemplateId` to which the document should be added. Using the `compositeTemplateId` sets which documents are associated with particular composite templates. An example of this usage is:  ```    --5cd3320a-5aac-4453-b3a4-cbb52a4cba5d    Content-Type: application/pdf    Content-Disposition: file; filename=\"eula.pdf\"; documentId=1; compositeTemplateId=\"1\"    Content-Transfer-Encoding: base64 ```  ### PDF Form Field Transformation Only the following PDF Form FieldTypes will be transformed to DocuSign tabs: CheckBox, DateTime, ListBox, Numeric, Password, Radio, Signature, and Text  Field Properties that will be transformed: Read Only, Required, Max Length, Positions, and Initial Data.  When transforming a *PDF Form Digital Signature Field,* the following rules are used:  If the PDF Field Name Contains | Then the DocuSign Tab Will be ------- | -------- DocuSignSignHere or eSignSignHere | Signature DocuSignSignHereOptional or eSignSignHereOptional | Optional Signature DocuSignInitialHere or eSignInitialHere | Initials DocuSignInitialHereOptional or eSignInitialHereOptional | Optional Initials  Any other PDF Form Digital Signature Field will be transformed to a DocuSign Signature tab  When transforming *PDF Form Text Fields,* the following rules are used:  If the PDF Field Name Contains | Then the DocuSign Tab Will be ------- | -------- DocuSignSignHere or eSignSignHere | Signature DocuSignSignHereOptional or eSignSignHereOptional | Optional Signature DocuSignInitialHere or eSignInitialHere | Initials DocuSignInitialHereOptional or eSignInitialHereOptional | Optional Initials DocuSignEnvelopeID or eSignEnvelopeID | EnvelopeID DocuSignCompany or eSignCompany | Company DocuSignDateSigned or eSignDateSigned | Date Signed DocuSignTitle or eSignTitle | Title DocuSignFullName or eSignFullName |  Full Name DocuSignSignerAttachmentOptional or eSignSignerAttachmentOptional | Optional Signer Attachment  Any other PDF Form Text Field will be transformed to a DocuSign data (text) tab.  PDF Form Field Names that include \"DocuSignIgnoreTransform\" or \"eSignIgnoreTransform\" will not be transformed.  PDF Form Date fields will be transformed to Date Signed fields if their name includes DocuSignDateSigned or eSignDateSigned.  ## Template Email Subject Merge Fields This feature enables you to insert recipient name and email address merge fields into the email subject line when creating or sending from a template.  The merge fields, based on the recipient's `roleName`, are added to the `emailSubject` when the template is created or when the template is used to create an envelope. After a template sender adds the name and email information for the recipient and sends the envelope, the recipient information is automatically merged into the appropriate fields in the email subject line.  Both the sender and the recipients will see the information in the email subject line for any emails associated with the template. This provides an easy way for senders to organize their envelope emails without having to open an envelope to check the recipient.  If merging the recipient information into the subject line causes the subject line to exceed 100 characters, then any characters over the 100 character limit are not included in the subject line. For cases where the recipient name or email is expected to be long, you should consider placing the merge field at the start of the email subject.  * To add a recipient's name in the subject line add the following text in the `emailSubject` when creating the template or when sending an envelope from a template:     [[<roleName>_UserName]]     Example:     `\"emailSubject\":\"[[Signer 1_UserName]], Please sign this NDA\",`  * To add a recipient's email address in the subject line add the following text in the emailSubject when creating the template or when sending an envelope from a template:     [[<roleName>_Email]]     Example:     `\"emailSubject\":\"[[Signer 1_Email]], Please sign this NDA\",`  In both cases the <roleName> is the recipient's `roleName` in the template.  For cases where another recipient (such as an Agent, Editor, or Intermediary recipient) is entering the name and email information for the recipient included in the email subject, then [[<roleName>_UserName]] or [[<roleName>_Email]] is shown in the email subject.  ## Branding an envelope The following rules are used to determine the `brandId` used in an envelope:  * If a `brandId` is specified in the envelope/template and that brandId is available to the account, that brand is used in the envelope. * If more than one template is used in an envelope and more than one `brandId` is specified, the first `brandId` specified is used throughout the envelope. * In cases where no brand is specified and the sender belongs to a Group; if there is only one brand associated with the Group, then that brand is used in the envelope. Otherwise, the account's default signing brand is used. * For envelopes that do not meet any of the previous criteria, the account's default signing brand is used for the envelope.  ## BCC Email address feature  The BCC Email address feature is designed to provide a copy of all email communications for external archiving purposes. DocuSign recommends that envelopes sent using the BCC for Email Archive feature, including the BCC Email Override option, include additional signer authentication options. To send a copy of the envelope to a recipient who does not need to sign, don't use the BCC Email field. Use a Carbon Copy or Certified Delivery Recipient type.  ## Merge Recipient Roles for Draft Envelopes When an envelope with multiple templates is sent, the recipients from the templates are merged according to the template roles, and empty recipients are removed. When creating an envelope with multiple templates, but not sending it (keeping it in a created state), duplicate recipients are not merged, which could cause leave duplicate recipients in the envelope.  To prevent this, the query parameter `merge_roles_on_draft` should be added when posting a draft envelope (status=created) with multiple templates. Doing this will merge template roles and remove empty recipients.  ###### Note: DocuSign recommends that the `merge_roles_on_draft` query parameter be used anytime you are creating an envelope with multiple templates and keeping it in draft (created) status.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_definition  (optional parameter)
    # @param DocuSign_eSign::CreateEnvelopeOptions Options for modifying the behavior of the function.
    # @return [EnvelopeSummary]
    def create_envelope(account_id, envelope_definition, options = DocuSign_eSign::CreateEnvelopeOptions.default)
      data, _status_code, _headers = create_envelope_with_http_info(account_id,  envelope_definition, options)
      return data
    end

    # Creates an envelope.
    # Creates an envelope.   Using this function you can: * Create an envelope and send it. * Create an envelope from an existing template and send it.  In either case, you can choose to save the envelope as a draft envelope instead of sending it by setting the request&#39;s &#x60;status&#x60; property to &#x60;created&#x60; instead of &#x60;sent&#x60;.  ## Sending Envelopes  Documents can be included with the Envelopes::create call itself or a template can include documents. Documents can be added by using a multi-part/form request or by using the &#x60;documentBase64&#x60; field of the [&#x60;document&#x60; object](#/definitions/document)  ### Recipient Types An [&#x60;envelopeDefinition&#x60; object](#/definitions/envelopeDefinition) is used as the method&#39;s body. Envelope recipients can be defined in the envelope or in templates. The &#x60;envelopeDefinition&#x60; object&#39;s &#x60;recipients&#x60; field is an [&#x60;EnvelopeRecipients&#x60; resource object](#/definitions/EnvelopeRecipients). It includes arrays of the seven types of recipients defined by DocuSign:  Recipient type | Object definition -------------- | ----------------- agent (can add name and email information for later recipients/signers) | [&#x60;agent&#x60;](#/definitions/agent) carbon copy (receives a copy of the documents) | [&#x60;carbonCopy&#x60;](#/definitions/carbonCopy) certified delivery  (receives a copy of the documents and must acknowledge receipt) | [&#x60;certifiedDelivery&#x60;](#/definitions/certifiedDelivery) editor (can change recipients and document fields for later recipients/signers) | [&#x60;editor&#x60;](#/definitions/editor) in-person signer (\&quot;hosts\&quot; someone who signs in-person) | [&#x60;inPersonSigner&#x60;](#/definitions/inPersonSigner) intermediary (can add name and email information for some later recipients/signers.) | [&#x60;intermediary&#x60;](#/definitions/intermediary) signer (signs and/or updates document fields) | [&#x60;signer&#x60;](#/definitions/signer)  Additional information about the different types of recipients is available from the [&#x60;EnvelopeRecipients&#x60; resource page](../../EnvelopeRecipients) and from the [Developer Center](https://www.docusign.com/developer-center/explore/features/recipients)  ### Tabs Tabs (also referred to as &#x60;tags&#x60; and as &#x60;fields&#x60; in the web sending user interface), can be defined in the &#x60;envelopeDefinition&#x60;, in templates, by transforming PDF Form Fields, or by using Composite Templates (see below).  Defining tabs: the &#x60;inPersonSigner&#x60;, and &#x60;signer&#x60; recipient objects include a &#x60;tabs&#x60; field. It is an [&#x60;EnvelopeTabs&#x60; resource object](#/definitions/EnvelopeTabs). It includes arrays of the 24 different tab types available. See the [&#x60;EnvelopeTabs&#x60; resource](../../EnvelopeTabs) for more information.  ## Using Templates Envelopes use specific people or groups as recipients. Templates can specify a role, eg &#x60;account_manager.&#x60; When a template is used in an envelope, the roles must be replaced with specific people or groups.  When you create an envelope using a &#x60;templateId&#x60;, the different recipient type objects within the [&#x60;EnvelopeRecipients&#x60; object](#/definitions/EnvelopeRecipients) are used to assign recipients to the template&#39;s roles via the &#x60;roleName&#x60; property. The recipient objects can also override settings that were specified in the template, and set values for tab fields that were defined in the template.  ### Message Lock When a template is added or applied to an envelope and the template has a locked email subject and message, that subject and message are used for the envelope and cannot be changed even if another locked template is subsequently added or applied to the envelope. The field &#x60;messageLock&#x60; is used to lock the email subject and message.  If an email subject or message is entered before adding or applying a template with &#x60;messageLock&#x60; **true**, the email subject and message is overwritten with the locked email subject and message from the template.  ## Envelope Status The status of sent envelopes can be determined through the DocuSign webhook system or by polling. Webhooks are highly recommended: they provide your application with the quickest updates when an envelope&#39;s status changes. DocuSign limits polling to once every 15 minutes or less frequently.  When a webhook is used, DocuSign calls your application, via the URL you provide, with a notification XML message.   See the [Webhook recipe](https://www.docusign.com/developer-center/recipes/webhook-status) for examples and live demos of using webhooks.  ## Webhook Options The two webhook options, *eventNotification* and *Connect* use the same notification mechanism and message formats. eventNotification is used to create a webhook for a specific envelope sent via the API. Connect webhooks can be used for any envelope sent from an account, from any user, from any client.   ### eventNotification Webhooks The Envelopes::create method includes an optional [eventNotification object](#definition-eventNotification) that adds a webhook to the envelope. eventNotification webhooks are available for all DocuSign accounts with API access.  ### Connect Webhooks Connect can be used to create a webhook for all envelopes sent by all users in an account, either through the API or via other DocuSign clients (web, mobile, etc). Connect configurations are independent of specific envelopes. A Connect configuration includes a filter that may be used to limit the webhook to specific users, envelope statuses, etc.   Connect configurations may be created and managed using the [ConnectConfigurations resource](../../Connect/ConnectConfigurations). Configurations can also be created and managed from the Administration tool accessed by selecting \&quot;Go to Admin\&quot; from the menu next to your picture on the DocuSign web app. See the Integrations/Connect section of the Admin tool. For repeatability, and to minimize support questions, creating Connect configurations via the API is recommended, especially for ISVs.  Connect is available for some DocuSign account types. Please contact DocuSign Sales for more information.  ## Composite Templates  The Composite Templates feature, like [compositing in film production](https://en.wikipedia.org/wiki/Compositing), enables you to *overlay* document, recipient, and tab definitions from multiple sources, including PDF Form Field definitions, templates defined on the server, and more.  Each Composite Template consists of optional elements: server templates, inline templates, PDF Metadata templates, and documents.  * The Composite Template ID is an optional element used to identify the composite template. It is used as a reference when adding document object information via a multi-part HTTP message. If used, the document content-disposition must include the &#x60;compositeTemplateId&#x60; to which the document should be added. If &#x60;compositeTemplateId&#x60; is not specified in the content-disposition, the document is applied based on the &#x60;documentId&#x60; only. If no document object is specified, the composite template inherits the first document.  * Server Templates are server-side templates stored on the DocuSign platform. If supplied, they are overlaid into the envelope in the order of their Sequence value.  * Inline Templates provide a container to add documents, recipients, tabs, and custom fields. If inline templates are supplied, they are overlaid into the envelope in the order of their Sequence value.  * Document objects are optional structures that provide a container to pass in a document or form. If this object is not included, the composite template inherits the *first* document it finds from a server template or inline template, starting with the lowest sequence value.  PDF Form objects are only transformed from the document object. DocuSign does not derive PDF form properties from server templates or inline templates. To instruct DocuSign to transform fields from the PDF form, set &#x60;transformPdfFields&#x60; to \&quot;true\&quot; for the document. See the Transform PDF Fields section for more information about process.  * PDF Metadata Templates provide a container to embed design-time template information into a PDF document. DocuSign uses this information when processing the Envelope. This convention allows the document to carry the signing instructions with it, so that less information needs to be provided at run-time through an inline template or synchronized with an external structure like a server template. PDF Metadata templates are stored in the Metadata layer of a PDF in accordance with Acrobat&#39;s XMP specification. DocuSign will only find PDF Metadata templates inside documents passed in the Document object (see below). If supplied, the PDF metadata template will be overlaid into the envelope in the order of its Sequence value.  ### Compositing the definitions Each Composite Template adds a new document and templates overlay into the envelope. For each Composite Template these rules are applied:  * Templates are overlaid in the order of their Sequence value. * If Document is not passed into the Composite Template&#39;s &#x60;document&#x60; field, the *first* template&#39;s document (based on the template&#39;s Sequence value) is used. * Last in wins in all cases except for the document (i.e. envelope information, recipient information, secure field information). There is no special casing.  For example, if you want higher security on a tab, then that needs to be specified in a later template (by sequence number) then where the tab is included. If you want higher security on a role recipient, then it needs to be in a later template then where that role recipient is specified.  * Recipient matching is based on Recipient Role and Routing Order. If there are matches, the recipient information is merged together. A final pass is done on all Composite Templates, after all template overlays have been applied, to collapse recipients with the same email, username and routing order. This prevents having the same recipients at the same routing order.  * If you specify in a template that a recipient is locked, once that recipient is overlaid the recipient attributes can no longer be changed. The only items that can be changed for the recipient in this case are the email, username, access code and IDCheckInformationInput.  * Tab matching is based on Tab Labels, Tab Types and Documents. If a Tab Label matches but the Document is not supplied, the Tab is overlaid for all the Documents.  For example, if you have a simple inline template with only one tab in it with a label and a value, the Signature, Initial, Company, Envelope ID, User Name tabs will only be matched and collapsed if they fall in the exact same X and Y locations.  * roleName and tabLabel matching is case sensitive.  * The defaultRecipient field enables you to specify which recipient the generated tabs from a PDF form are mapped to. You can also set PDF form generated tabs to a recipient other than the DefaultRecipient by specifying the mapping of the tab label that is created to one of the template recipients.  * You can use tabLabel wild carding to map a series of tabs from the PDF form. To use this you must end a tab label with \&quot;\\*\&quot; and then the system matches tabs that start with the label.  * If no DefaultRecipient is specified, tabs must be explicitly mapped to recipients in order to be generated from the form. Unmapped form objects will not be generated into their DocuSign equivalents. (In the case of Signature/Initials, the tabs will be disregarded entirely; in the case of pdf text fields, the field data will be flattened on the Envelope document, but there will not be a corresponding DocuSign data tab.)  ### Including the Document Content for Composite Templates Document content can be supplied inline, using the &#x60;documentBase64&#x60; or can be included in a multi-part HTTP message.  If a multi-part message is used and there are multiple Composite Templates, the document content-disposition can include the &#x60;compositeTemplateId&#x60; to which the document should be added. Using the &#x60;compositeTemplateId&#x60; sets which documents are associated with particular composite templates. An example of this usage is:  &#x60;&#x60;&#x60;    --5cd3320a-5aac-4453-b3a4-cbb52a4cba5d    Content-Type: application/pdf    Content-Disposition: file; filename&#x3D;\&quot;eula.pdf\&quot;; documentId&#x3D;1; compositeTemplateId&#x3D;\&quot;1\&quot;    Content-Transfer-Encoding: base64 &#x60;&#x60;&#x60;  ### PDF Form Field Transformation Only the following PDF Form FieldTypes will be transformed to DocuSign tabs: CheckBox, DateTime, ListBox, Numeric, Password, Radio, Signature, and Text  Field Properties that will be transformed: Read Only, Required, Max Length, Positions, and Initial Data.  When transforming a *PDF Form Digital Signature Field,* the following rules are used:  If the PDF Field Name Contains | Then the DocuSign Tab Will be ------- | -------- DocuSignSignHere or eSignSignHere | Signature DocuSignSignHereOptional or eSignSignHereOptional | Optional Signature DocuSignInitialHere or eSignInitialHere | Initials DocuSignInitialHereOptional or eSignInitialHereOptional | Optional Initials  Any other PDF Form Digital Signature Field will be transformed to a DocuSign Signature tab  When transforming *PDF Form Text Fields,* the following rules are used:  If the PDF Field Name Contains | Then the DocuSign Tab Will be ------- | -------- DocuSignSignHere or eSignSignHere | Signature DocuSignSignHereOptional or eSignSignHereOptional | Optional Signature DocuSignInitialHere or eSignInitialHere | Initials DocuSignInitialHereOptional or eSignInitialHereOptional | Optional Initials DocuSignEnvelopeID or eSignEnvelopeID | EnvelopeID DocuSignCompany or eSignCompany | Company DocuSignDateSigned or eSignDateSigned | Date Signed DocuSignTitle or eSignTitle | Title DocuSignFullName or eSignFullName |  Full Name DocuSignSignerAttachmentOptional or eSignSignerAttachmentOptional | Optional Signer Attachment  Any other PDF Form Text Field will be transformed to a DocuSign data (text) tab.  PDF Form Field Names that include \&quot;DocuSignIgnoreTransform\&quot; or \&quot;eSignIgnoreTransform\&quot; will not be transformed.  PDF Form Date fields will be transformed to Date Signed fields if their name includes DocuSignDateSigned or eSignDateSigned.  ## Template Email Subject Merge Fields This feature enables you to insert recipient name and email address merge fields into the email subject line when creating or sending from a template.  The merge fields, based on the recipient&#39;s &#x60;roleName&#x60;, are added to the &#x60;emailSubject&#x60; when the template is created or when the template is used to create an envelope. After a template sender adds the name and email information for the recipient and sends the envelope, the recipient information is automatically merged into the appropriate fields in the email subject line.  Both the sender and the recipients will see the information in the email subject line for any emails associated with the template. This provides an easy way for senders to organize their envelope emails without having to open an envelope to check the recipient.  If merging the recipient information into the subject line causes the subject line to exceed 100 characters, then any characters over the 100 character limit are not included in the subject line. For cases where the recipient name or email is expected to be long, you should consider placing the merge field at the start of the email subject.  * To add a recipient&#39;s name in the subject line add the following text in the &#x60;emailSubject&#x60; when creating the template or when sending an envelope from a template:     [[&lt;roleName&gt;_UserName]]     Example:     &#x60;\&quot;emailSubject\&quot;:\&quot;[[Signer 1_UserName]], Please sign this NDA\&quot;,&#x60;  * To add a recipient&#39;s email address in the subject line add the following text in the emailSubject when creating the template or when sending an envelope from a template:     [[&lt;roleName&gt;_Email]]     Example:     &#x60;\&quot;emailSubject\&quot;:\&quot;[[Signer 1_Email]], Please sign this NDA\&quot;,&#x60;  In both cases the &lt;roleName&gt; is the recipient&#39;s &#x60;roleName&#x60; in the template.  For cases where another recipient (such as an Agent, Editor, or Intermediary recipient) is entering the name and email information for the recipient included in the email subject, then [[&lt;roleName&gt;_UserName]] or [[&lt;roleName&gt;_Email]] is shown in the email subject.  ## Branding an envelope The following rules are used to determine the &#x60;brandId&#x60; used in an envelope:  * If a &#x60;brandId&#x60; is specified in the envelope/template and that brandId is available to the account, that brand is used in the envelope. * If more than one template is used in an envelope and more than one &#x60;brandId&#x60; is specified, the first &#x60;brandId&#x60; specified is used throughout the envelope. * In cases where no brand is specified and the sender belongs to a Group; if there is only one brand associated with the Group, then that brand is used in the envelope. Otherwise, the account&#39;s default signing brand is used. * For envelopes that do not meet any of the previous criteria, the account&#39;s default signing brand is used for the envelope.  ## BCC Email address feature  The BCC Email address feature is designed to provide a copy of all email communications for external archiving purposes. DocuSign recommends that envelopes sent using the BCC for Email Archive feature, including the BCC Email Override option, include additional signer authentication options. To send a copy of the envelope to a recipient who does not need to sign, don&#39;t use the BCC Email field. Use a Carbon Copy or Certified Delivery Recipient type.  ## Merge Recipient Roles for Draft Envelopes When an envelope with multiple templates is sent, the recipients from the templates are merged according to the template roles, and empty recipients are removed. When creating an envelope with multiple templates, but not sending it (keeping it in a created state), duplicate recipients are not merged, which could cause leave duplicate recipients in the envelope.  To prevent this, the query parameter &#x60;merge_roles_on_draft&#x60; should be added when posting a draft envelope (status&#x3D;created) with multiple templates. Doing this will merge template roles and remove empty recipients.  ###### Note: DocuSign recommends that the &#x60;merge_roles_on_draft&#x60; query parameter be used anytime you are creating an envelope with multiple templates and keeping it in draft (created) status.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_definition  (optional parameter)
    # @param DocuSign_eSign::CreateEnvelopeOptions Options for modifying the behavior of the function.
    # @return [Array<(EnvelopeSummary, Fixnum, Hash)>] EnvelopeSummary data, response status code and response headers
    def create_envelope_with_http_info(account_id, envelope_definition, options = DocuSign_eSign::CreateEnvelopeOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_envelope ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_envelope" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'cdse_mode'] = options.cdse_mode if !options.cdse_mode.nil?
      query_params[:'change_routing_order'] = options.change_routing_order if !options.change_routing_order.nil?
      query_params[:'completed_documents_only'] = options.completed_documents_only if !options.completed_documents_only.nil?
      query_params[:'merge_roles_on_draft'] = options.merge_roles_on_draft if !options.merge_roles_on_draft.nil?
      query_params[:'tab_label_exact_matches'] = options.tab_label_exact_matches if !options.tab_label_exact_matches.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(envelope_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 => 'EnvelopeSummary')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_envelope\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Posts a list of comments for authorized user
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param comments_publish  (optional parameter)
    # @return [CommentHistoryResult]
    def create_envelope_comments(account_id, envelope_id, comments_publish)
      data, _status_code, _headers = create_envelope_comments_with_http_info(account_id, envelope_id,  comments_publish)
      return data
    end

    # Posts a list of comments for authorized user
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param comments_publish  (optional parameter)
    # @return [Array<(CommentHistoryResult, Fixnum, Hash)>] CommentHistoryResult data, response status code and response headers
    def create_envelope_comments_with_http_info(account_id, envelope_id, comments_publish)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_envelope_comments ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_envelope_comments" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_envelope_comments" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/comments".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(comments_publish)
      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 => 'CommentHistoryResult')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_envelope_comments\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Provides a URL to start a recipient view of the Envelope UI
    # This method returns a URL for an envelope recipient preview  in the DocuSign UI that you can embed in your application. You use this method to enable the sender to preview the recipients' experience.  For more information, see [Preview and Send](https://support.docusign.com/en/guides/ndse-user-guide-send-your-documents).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_preview_request  (optional parameter)
    # @return [ViewUrl]
    def create_envelope_recipient_preview(account_id, envelope_id, recipient_preview_request)
      data, _status_code, _headers = create_envelope_recipient_preview_with_http_info(account_id, envelope_id,  recipient_preview_request)
      return data
    end

    # Provides a URL to start a recipient view of the Envelope UI
    # This method returns a URL for an envelope recipient preview  in the DocuSign UI that you can embed in your application. You use this method to enable the sender to preview the recipients&#39; experience.  For more information, see [Preview and Send](https://support.docusign.com/en/guides/ndse-user-guide-send-your-documents).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_preview_request  (optional parameter)
    # @return [Array<(ViewUrl, Fixnum, Hash)>] ViewUrl data, response status code and response headers
    def create_envelope_recipient_preview_with_http_info(account_id, envelope_id, recipient_preview_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_envelope_recipient_preview ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_envelope_recipient_preview" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_envelope_recipient_preview" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/views/recipient_preview".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(recipient_preview_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 => 'ViewUrl')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_envelope_recipient_preview\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Provides a URL to start a shared recipient view of the Envelope UI
    # Returns a URL that enables you to embed the DocuSign UI recipient view of a [shared envelope](https://support.docusign.com/en/guides/ndse-admin-guide-share-envelopes) in your applications. This is the view that a user sees of an envelope that a recipient on the same account has shared with them.  Due to screen space issues, do not use an `<iframe>` for embedded operations on mobile devices. For iOS devices, DocuSign recommends using a WebView.  ### Revoking the URL  You can revoke this URL by making a DELETE HTTP request to the URL with no request body.  ### Related topics  - [Embedded signing and sending](/docs/esign-rest-api/esign101/concepts/embedding/) - [How to send an envelope via your app](/docs/esign-rest-api/how-to/embedded-sending/) - [How to embed the DocuSign UI in your app](/docs/esign-rest-api/how-to/embed-ui/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_view_request  (optional parameter)
    # @return [ViewUrl]
    def create_envelope_recipient_shared_view(account_id, envelope_id, recipient_view_request)
      data, _status_code, _headers = create_envelope_recipient_shared_view_with_http_info(account_id, envelope_id,  recipient_view_request)
      return data
    end

    # Provides a URL to start a shared recipient view of the Envelope UI
    # Returns a URL that enables you to embed the DocuSign UI recipient view of a [shared envelope](https://support.docusign.com/en/guides/ndse-admin-guide-share-envelopes) in your applications. This is the view that a user sees of an envelope that a recipient on the same account has shared with them.  Due to screen space issues, do not use an &#x60;&lt;iframe&gt;&#x60; for embedded operations on mobile devices. For iOS devices, DocuSign recommends using a WebView.  ### Revoking the URL  You can revoke this URL by making a DELETE HTTP request to the URL with no request body.  ### Related topics  - [Embedded signing and sending](/docs/esign-rest-api/esign101/concepts/embedding/) - [How to send an envelope via your app](/docs/esign-rest-api/how-to/embedded-sending/) - [How to embed the DocuSign UI in your app](/docs/esign-rest-api/how-to/embed-ui/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_view_request  (optional parameter)
    # @return [Array<(ViewUrl, Fixnum, Hash)>] ViewUrl data, response status code and response headers
    def create_envelope_recipient_shared_view_with_http_info(account_id, envelope_id, recipient_view_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_envelope_recipient_shared_view ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_envelope_recipient_shared_view" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_envelope_recipient_shared_view" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/views/shared".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(recipient_view_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 => 'ViewUrl')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_envelope_recipient_shared_view\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Add envelope transfer rules to an account.
    # This method creates an envelope transfer rule.  When you create an envelope transfer rule, you specify the following properties:   - `eventType` - `fromGroups` - `toUser` - `toFolder` - `carbonCopyOriginalOwner` - `enabled`  **Note:** Only Administrators can create envelope transfer rules. In addition, to use envelope transfer rules, the **Transfer Custody** feature must be enabled for your account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_transfer_rule_request  (optional parameter)
    # @return [EnvelopeTransferRuleInformation]
    def create_envelope_transfer_rules(account_id, envelope_transfer_rule_request)
      data, _status_code, _headers = create_envelope_transfer_rules_with_http_info(account_id,  envelope_transfer_rule_request)
      return data
    end

    # Add envelope transfer rules to an account.
    # This method creates an envelope transfer rule.  When you create an envelope transfer rule, you specify the following properties:   - &#x60;eventType&#x60; - &#x60;fromGroups&#x60; - &#x60;toUser&#x60; - &#x60;toFolder&#x60; - &#x60;carbonCopyOriginalOwner&#x60; - &#x60;enabled&#x60;  **Note:** Only Administrators can create envelope transfer rules. In addition, to use envelope transfer rules, the **Transfer Custody** feature must be enabled for your account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_transfer_rule_request  (optional parameter)
    # @return [Array<(EnvelopeTransferRuleInformation, Fixnum, Hash)>] EnvelopeTransferRuleInformation data, response status code and response headers
    def create_envelope_transfer_rules_with_http_info(account_id, envelope_transfer_rule_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_envelope_transfer_rules ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_envelope_transfer_rules" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/transfer_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(envelope_transfer_rule_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 => 'EnvelopeTransferRuleInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_envelope_transfer_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Creates and adds a new workflow step definition for an envelope's workflow
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step  (optional parameter)
    # @return [WorkflowStep]
    def create_envelope_workflow_step_definition(account_id, envelope_id, workflow_step)
      data, _status_code, _headers = create_envelope_workflow_step_definition_with_http_info(account_id, envelope_id,  workflow_step)
      return data
    end

    # Creates and adds a new workflow step definition for an envelope&#39;s workflow
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step  (optional parameter)
    # @return [Array<(WorkflowStep, Fixnum, Hash)>] WorkflowStep data, response status code and response headers
    def create_envelope_workflow_step_definition_with_http_info(account_id, envelope_id, workflow_step)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_envelope_workflow_step_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_envelope_workflow_step_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_envelope_workflow_step_definition" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow/steps".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(workflow_step)
      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 => 'WorkflowStep')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_envelope_workflow_step_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Submits a batch of historical envelopes for republish to an adhoc config.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param connect_historical_envelope_republish  (optional parameter)
    # @return [EnvelopePublishTransaction]
    def create_historical_envelope_publish_transaction(account_id, connect_historical_envelope_republish)
      data, _status_code, _headers = create_historical_envelope_publish_transaction_with_http_info(account_id,  connect_historical_envelope_republish)
      return data
    end

    # Submits a batch of historical envelopes for republish to an adhoc config.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param connect_historical_envelope_republish  (optional parameter)
    # @return [Array<(EnvelopePublishTransaction, Fixnum, Hash)>] EnvelopePublishTransaction data, response status code and response headers
    def create_historical_envelope_publish_transaction_with_http_info(account_id, connect_historical_envelope_republish)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_historical_envelope_publish_transaction ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_historical_envelope_publish_transaction" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/connect/envelopes/publish/historical".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(connect_historical_envelope_republish)
      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 => 'EnvelopePublishTransaction')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_historical_envelope_publish_transaction\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Lock an envelope.
    # Locks the specified envelope, and sets the time until the lock expires, to prevent other users or recipients from accessing and changing the envelope.  ###### Note: Users must have envelope locking capability enabled to use this function (userSetting `canLockEnvelopes` must be  set to true for the user).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param lock_request  (optional parameter)
    # @return [LockInformation]
    def create_lock(account_id, envelope_id, lock_request)
      data, _status_code, _headers = create_lock_with_http_info(account_id, envelope_id,  lock_request)
      return data
    end

    # Lock an envelope.
    # Locks the specified envelope, and sets the time until the lock expires, to prevent other users or recipients from accessing and changing the envelope.  ###### Note: Users must have envelope locking capability enabled to use this function (userSetting &#x60;canLockEnvelopes&#x60; must be  set to true for the user).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param lock_request  (optional parameter)
    # @return [Array<(LockInformation, Fixnum, Hash)>] LockInformation data, response status code and response headers
    def create_lock_with_http_info(account_id, envelope_id, lock_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_lock ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_lock" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_lock" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/lock".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(lock_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 => 'LockInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_lock\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Adds one or more recipients to an envelope.
    # Adds one or more recipients to an envelope.  For an in process envelope, one that has been sent and has not been completed or voided, an email is sent to a new recipient when they are reached in the routing order. If the new recipient's routing order is before or the same as the envelope's next recipient, an email is only sent if the optional `resend_envelope` query string is set to **true**.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipients  (optional parameter)
    # @param DocuSign_eSign::CreateRecipientOptions Options for modifying the behavior of the function.
    # @return [Recipients]
    def create_recipient(account_id, envelope_id, recipients, options = DocuSign_eSign::CreateRecipientOptions.default)
      data, _status_code, _headers = create_recipient_with_http_info(account_id, envelope_id,  recipients, options)
      return data
    end

    # Adds one or more recipients to an envelope.
    # Adds one or more recipients to an envelope.  For an in process envelope, one that has been sent and has not been completed or voided, an email is sent to a new recipient when they are reached in the routing order. If the new recipient&#39;s routing order is before or the same as the envelope&#39;s next recipient, an email is only sent if the optional &#x60;resend_envelope&#x60; query string is set to **true**.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipients  (optional parameter)
    # @param DocuSign_eSign::CreateRecipientOptions Options for modifying the behavior of the function.
    # @return [Array<(Recipients, Fixnum, Hash)>] Recipients data, response status code and response headers
    def create_recipient_with_http_info(account_id, envelope_id, recipients, options = DocuSign_eSign::CreateRecipientOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_recipient ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_recipient" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_recipient" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'resend_envelope'] = options.resend_envelope if !options.resend_envelope.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(recipients)
      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 => 'Recipients')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_recipient\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Provides a link to access the Identity manual review related to a recipient.
    # This method returns the URL of the page that allows a sender to [manually review](https://support.docusign.com/en/guides/ndse-user-guide-send-documents-with-id-verification) the ID of a recipient. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [ViewUrl]
    def create_recipient_manual_review_view(account_id, envelope_id, recipient_id)
      data, _status_code, _headers = create_recipient_manual_review_view_with_http_info(account_id, envelope_id, recipient_id)
      return data
    end

    # Provides a link to access the Identity manual review related to a recipient.
    # This method returns the URL of the page that allows a sender to [manually review](https://support.docusign.com/en/guides/ndse-user-guide-send-documents-with-id-verification) the ID of a recipient. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [Array<(ViewUrl, Fixnum, Hash)>] ViewUrl data, response status code and response headers
    def create_recipient_manual_review_view_with_http_info(account_id, envelope_id, recipient_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_recipient_manual_review_view ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_recipient_manual_review_view" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_recipient_manual_review_view" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.create_recipient_manual_review_view" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/views/identity_manual_review".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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(: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 => 'ViewUrl')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_recipient_manual_review_view\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a link to access to the identity events stored in the proof service related to this recipient.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [IdEvidenceViewLink]
    def create_recipient_proof_file_link(account_id, envelope_id, recipient_id)
      data, _status_code, _headers = create_recipient_proof_file_link_with_http_info(account_id, envelope_id, recipient_id)
      return data
    end

    # Returns a link to access to the identity events stored in the proof service related to this recipient.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [Array<(IdEvidenceViewLink, Fixnum, Hash)>] IdEvidenceViewLink data, response status code and response headers
    def create_recipient_proof_file_link_with_http_info(account_id, envelope_id, recipient_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_recipient_proof_file_link ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_recipient_proof_file_link" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_recipient_proof_file_link" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.create_recipient_proof_file_link" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/identity_proof".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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(: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 => 'IdEvidenceViewLink')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_recipient_proof_file_link\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a resource token to get access to the identity events stored in the proof service related to this recipient.
    # Creates a resource token for a sender. This token allows a sender to return identification data for a recipient using the [ID Evidence API](/docs/idevidence-api/).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param DocuSign_eSign::CreateRecipientProofFileResourceTokenOptions Options for modifying the behavior of the function.
    # @return [IdEvidenceResourceToken]
    def create_recipient_proof_file_resource_token(account_id, envelope_id, recipient_id, options = DocuSign_eSign::CreateRecipientProofFileResourceTokenOptions.default)
      data, _status_code, _headers = create_recipient_proof_file_resource_token_with_http_info(account_id, envelope_id, recipient_id, options)
      return data
    end

    # Returns a resource token to get access to the identity events stored in the proof service related to this recipient.
    # Creates a resource token for a sender. This token allows a sender to return identification data for a recipient using the [ID Evidence API](/docs/idevidence-api/).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param DocuSign_eSign::CreateRecipientProofFileResourceTokenOptions Options for modifying the behavior of the function.
    # @return [Array<(IdEvidenceResourceToken, Fixnum, Hash)>] IdEvidenceResourceToken data, response status code and response headers
    def create_recipient_proof_file_resource_token_with_http_info(account_id, envelope_id, recipient_id, options = DocuSign_eSign::CreateRecipientProofFileResourceTokenOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_recipient_proof_file_resource_token ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_recipient_proof_file_resource_token" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_recipient_proof_file_resource_token" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.create_recipient_proof_file_resource_token" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/identity_proof_token".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'token_scopes'] = options.token_scopes if !options.token_scopes.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(: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 => 'IdEvidenceResourceToken')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_recipient_proof_file_resource_token\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a URL to the recipient view UI.
    # Returns a URL that allows you to embed the recipient view of the DocuSign UI in your applications. This call cannot be used to view draft envelopes, since those envelopes have not been sent.   Important: iFrames should not be used for embedded operations on mobile devices due to screen space issues. For iOS devices DocuSign recommends using a WebView.   An entry is added into the Security Level section of the DocuSign Certificate of Completion that reflects the `securityDomain` and `authenticationMethod` properties used to verify the user identity.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_view_request  (optional parameter)
    # @return [ViewUrl]
    def create_recipient_view(account_id, envelope_id, recipient_view_request)
      data, _status_code, _headers = create_recipient_view_with_http_info(account_id, envelope_id,  recipient_view_request)
      return data
    end

    # Returns a URL to the recipient view UI.
    # Returns a URL that allows you to embed the recipient view of the DocuSign UI in your applications. This call cannot be used to view draft envelopes, since those envelopes have not been sent.   Important: iFrames should not be used for embedded operations on mobile devices due to screen space issues. For iOS devices DocuSign recommends using a WebView.   An entry is added into the Security Level section of the DocuSign Certificate of Completion that reflects the &#x60;securityDomain&#x60; and &#x60;authenticationMethod&#x60; properties used to verify the user identity.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_view_request  (optional parameter)
    # @return [Array<(ViewUrl, Fixnum, Hash)>] ViewUrl data, response status code and response headers
    def create_recipient_view_with_http_info(account_id, envelope_id, recipient_view_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_recipient_view ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_recipient_view" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_recipient_view" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/views/recipient".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(recipient_view_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 => 'ViewUrl')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_recipient_view\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get Responsive HTML Preview for all documents in an envelope.
    # Creates a preview of the [responsive](/docs/esign-rest-api/esign101/concepts/responsive/), HTML versions of all of the documents in an envelope. This method enables you to preview the PDF document conversions to responsive HTML across device types prior to sending.  The request body is a `documentHtmlDefinition` object, which holds the responsive signing parameters that define how to generate the HTML version of the documents. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_html_definition  (optional parameter)
    # @return [DocumentHtmlDefinitions]
    def create_responsive_html_preview(account_id, envelope_id, document_html_definition)
      data, _status_code, _headers = create_responsive_html_preview_with_http_info(account_id, envelope_id,  document_html_definition)
      return data
    end

    # Get Responsive HTML Preview for all documents in an envelope.
    # Creates a preview of the [responsive](/docs/esign-rest-api/esign101/concepts/responsive/), HTML versions of all of the documents in an envelope. This method enables you to preview the PDF document conversions to responsive HTML across device types prior to sending.  The request body is a &#x60;documentHtmlDefinition&#x60; object, which holds the responsive signing parameters that define how to generate the HTML version of the documents. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_html_definition  (optional parameter)
    # @return [Array<(DocumentHtmlDefinitions, Fixnum, Hash)>] DocumentHtmlDefinitions data, response status code and response headers
    def create_responsive_html_preview_with_http_info(account_id, envelope_id, document_html_definition)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_responsive_html_preview ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_responsive_html_preview" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_responsive_html_preview" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/responsive_html_preview".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(document_html_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 => 'DocumentHtmlDefinitions')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_responsive_html_preview\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a URL to the sender view UI.
    # Returns a URL that allows you to embed the sender view of the DocuSign UI in your applications. This is a one-time use login token that allows the user to be placed into the DocuSign sending view.   Upon sending completion, the user is returned to the return URL provided by the API application.  Important: iFrames should not be used for embedded operations on mobile devices due to screen space issues. For iOS devices DocuSign recommends using a WebView. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_view_request  (optional parameter)
    # @return [ViewUrl]
    def create_sender_view(account_id, envelope_id, envelope_view_request)
      data, _status_code, _headers = create_sender_view_with_http_info(account_id, envelope_id,  envelope_view_request)
      return data
    end

    # Returns a URL to the sender view UI.
    # Returns a URL that allows you to embed the sender view of the DocuSign UI in your applications. This is a one-time use login token that allows the user to be placed into the DocuSign sending view.   Upon sending completion, the user is returned to the return URL provided by the API application.  Important: iFrames should not be used for embedded operations on mobile devices due to screen space issues. For iOS devices DocuSign recommends using a WebView. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_view_request  (optional parameter)
    # @return [Array<(ViewUrl, Fixnum, Hash)>] ViewUrl data, response status code and response headers
    def create_sender_view_with_http_info(account_id, envelope_id, envelope_view_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_sender_view ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_sender_view" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_sender_view" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/views/sender".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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_view_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 => 'ViewUrl')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_sender_view\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Adds tabs for a recipient.
    # Adds one or more tabs for a recipient.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param tabs  (optional parameter)
    # @return [Tabs]
    def create_tabs(account_id, envelope_id, recipient_id, tabs)
      data, _status_code, _headers = create_tabs_with_http_info(account_id, envelope_id, recipient_id,  tabs)
      return data
    end

    # Adds tabs for a recipient.
    # Adds one or more tabs for a recipient.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param tabs  (optional parameter)
    # @return [Array<(Tabs, Fixnum, Hash)>] Tabs data, response status code and response headers
    def create_tabs_with_http_info(account_id, envelope_id, recipient_id, tabs)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_tabs ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_tabs" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.create_tabs" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.create_tabs" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/tabs".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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(tabs)
      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 => 'Tabs')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_tabs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Creates and adds a new workflow step definition for a template's workflow
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step  (optional parameter)
    # @return [WorkflowStep]
    def create_template_workflow_step_definition(account_id, template_id, workflow_step)
      data, _status_code, _headers = create_template_workflow_step_definition_with_http_info(account_id, template_id,  workflow_step)
      return data
    end

    # Creates and adds a new workflow step definition for a template&#39;s workflow
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step  (optional parameter)
    # @return [Array<(WorkflowStep, Fixnum, Hash)>] WorkflowStep data, response status code and response headers
    def create_template_workflow_step_definition_with_http_info(account_id, template_id, workflow_step)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.create_template_workflow_step_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.create_template_workflow_step_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.create_template_workflow_step_definition" if template_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow/steps".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_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(workflow_step)
      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 => 'WorkflowStep')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#create_template_workflow_step_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete one or more attachments from a DRAFT envelope.
    # Deletes one or more attachments from a draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_attachments_request  (optional parameter)
    # @return [EnvelopeAttachmentsResult]
    def delete_attachments(account_id, envelope_id, envelope_attachments_request)
      data, _status_code, _headers = delete_attachments_with_http_info(account_id, envelope_id,  envelope_attachments_request)
      return data
    end

    # Delete one or more attachments from a DRAFT envelope.
    # Deletes one or more attachments from a draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_attachments_request  (optional parameter)
    # @return [Array<(EnvelopeAttachmentsResult, Fixnum, Hash)>] EnvelopeAttachmentsResult data, response status code and response headers
    def delete_attachments_with_http_info(account_id, envelope_id, envelope_attachments_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_attachments ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_attachments" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_attachments" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/attachments".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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_attachments_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 => 'EnvelopeAttachmentsResult')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_attachments\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete an existing ChunkedUpload.
    # Deletes a chunked upload that has been committed but not yet consumed.  This method cannot be used to delete the following types of chunked uploads, which the system deletes automatically:   - Chunked uploads that have been consumed by use in another API call. - Expired chunked uploads.  **Note:** If you are aware of a chunked upload that can be discarded, the best practice is to explicitly delete it. If you wait for the system to automatically delete it after it expires, the chunked upload will continue to count against your quota.
    # @param account_id The external account number (int) or account ID Guid.
    # @param chunked_upload_id 
    # @return [ChunkedUploadResponse]
    def delete_chunked_upload(account_id, chunked_upload_id)
      data, _status_code, _headers = delete_chunked_upload_with_http_info(account_id, chunked_upload_id)
      return data
    end

    # Delete an existing ChunkedUpload.
    # Deletes a chunked upload that has been committed but not yet consumed.  This method cannot be used to delete the following types of chunked uploads, which the system deletes automatically:   - Chunked uploads that have been consumed by use in another API call. - Expired chunked uploads.  **Note:** If you are aware of a chunked upload that can be discarded, the best practice is to explicitly delete it. If you wait for the system to automatically delete it after it expires, the chunked upload will continue to count against your quota.
    # @param account_id The external account number (int) or account ID Guid.
    # @param chunked_upload_id 
    # @return [Array<(ChunkedUploadResponse, Fixnum, Hash)>] ChunkedUploadResponse data, response status code and response headers
    def delete_chunked_upload_with_http_info(account_id, chunked_upload_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_chunked_upload ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_chunked_upload" if account_id.nil?
      # verify the required parameter 'chunked_upload_id' is set
      fail ArgumentError, "Missing the required parameter 'chunked_upload_id' when calling EnvelopesApi.delete_chunked_upload" if chunked_upload_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/chunked_uploads/{chunkedUploadId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'chunkedUploadId' + '}', chunked_upload_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 => 'ChunkedUploadResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_chunked_upload\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes envelope custom fields for draft and in-process envelopes.
    # Deletes envelope custom fields for draft and in-process envelopes.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param custom_fields  (optional parameter)
    # @return [CustomFields]
    def delete_custom_fields(account_id, envelope_id, custom_fields)
      data, _status_code, _headers = delete_custom_fields_with_http_info(account_id, envelope_id,  custom_fields)
      return data
    end

    # Deletes envelope custom fields for draft and in-process envelopes.
    # Deletes envelope custom fields for draft and in-process envelopes.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param custom_fields  (optional parameter)
    # @return [Array<(CustomFields, Fixnum, Hash)>] CustomFields data, response status code and response headers
    def delete_custom_fields_with_http_info(account_id, envelope_id, custom_fields)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_custom_fields ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_custom_fields" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_custom_fields" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/custom_fields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(custom_fields)
      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 => 'CustomFields')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_custom_fields\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes custom document fields from an existing envelope document.
    # Deletes custom document fields from an existing envelope document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_fields_information  (optional parameter)
    # @return [DocumentFieldsInformation]
    def delete_document_fields(account_id, document_id, envelope_id, document_fields_information)
      data, _status_code, _headers = delete_document_fields_with_http_info(account_id, document_id, envelope_id,  document_fields_information)
      return data
    end

    # Deletes custom document fields from an existing envelope document.
    # Deletes custom document fields from an existing envelope document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_fields_information  (optional parameter)
    # @return [Array<(DocumentFieldsInformation, Fixnum, Hash)>] DocumentFieldsInformation data, response status code and response headers
    def delete_document_fields_with_http_info(account_id, document_id, envelope_id, document_fields_information)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_document_fields ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_document_fields" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.delete_document_fields" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_document_fields" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/fields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(document_fields_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 => 'DocumentFieldsInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_document_fields\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes a page from a document in an envelope.
    # Deletes a page from a document in an envelope based on the page number.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param page_number The page number being accessed.
    # @return [nil]
    def delete_document_page(account_id, document_id, envelope_id, page_number)
      delete_document_page_with_http_info(account_id, document_id, envelope_id, page_number)
      return nil
    end

    # Deletes a page from a document in an envelope.
    # Deletes a page from a document in an envelope based on the page number.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param page_number The page number being accessed.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_document_page_with_http_info(account_id, document_id, envelope_id, page_number)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_document_page ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_document_page" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.delete_document_page" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_document_page" if envelope_id.nil?
      # verify the required parameter 'page_number' is set
      fail ArgumentError, "Missing the required parameter 'page_number' when calling EnvelopesApi.delete_document_page" if page_number.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/pages/{pageNumber}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'pageNumber' + '}', page_number.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: EnvelopesApi#delete_document_page\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes tabs from an envelope document
    # Deletes tabs from the document specified by `documentId` in the envelope specified by `envelopeId`. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param tabs  (optional parameter)
    # @return [Tabs]
    def delete_document_tabs(account_id, document_id, envelope_id, tabs)
      data, _status_code, _headers = delete_document_tabs_with_http_info(account_id, document_id, envelope_id,  tabs)
      return data
    end

    # Deletes tabs from an envelope document
    # Deletes tabs from the document specified by &#x60;documentId&#x60; in the envelope specified by &#x60;envelopeId&#x60;. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param tabs  (optional parameter)
    # @return [Array<(Tabs, Fixnum, Hash)>] Tabs data, response status code and response headers
    def delete_document_tabs_with_http_info(account_id, document_id, envelope_id, tabs)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_document_tabs ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_document_tabs" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.delete_document_tabs" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_document_tabs" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/tabs".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(tabs)
      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 => 'Tabs')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_document_tabs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes documents from a draft envelope.
    # Deletes one or more documents from an existing draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_definition  (optional parameter)
    # @return [EnvelopeDocumentsResult]
    def delete_documents(account_id, envelope_id, envelope_definition)
      data, _status_code, _headers = delete_documents_with_http_info(account_id, envelope_id,  envelope_definition)
      return data
    end

    # Deletes documents from a draft envelope.
    # Deletes one or more documents from an existing draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_definition  (optional parameter)
    # @return [Array<(EnvelopeDocumentsResult, Fixnum, Hash)>] EnvelopeDocumentsResult data, response status code and response headers
    def delete_documents_with_http_info(account_id, envelope_id, envelope_definition)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_documents ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_documents" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_documents" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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_definition)
      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 => 'EnvelopeDocumentsResult')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_documents\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes the email setting overrides for an envelope.
    # Deletes all existing email override settings for the envelope. If you want to delete an individual email override setting, use the PUT and set the value to an empty string. Note that deleting email settings will only affect email communications that occur after the deletion and the normal account email settings are used for future email communications.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [EmailSettings]
    def delete_email_settings(account_id, envelope_id)
      data, _status_code, _headers = delete_email_settings_with_http_info(account_id, envelope_id)
      return data
    end

    # Deletes the email setting overrides for an envelope.
    # Deletes all existing email override settings for the envelope. If you want to delete an individual email override setting, use the PUT and set the value to an empty string. Note that deleting email settings will only affect email communications that occur after the deletion and the normal account email settings are used for future email communications.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(EmailSettings, Fixnum, Hash)>] EmailSettings data, response status code and response headers
    def delete_email_settings_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_email_settings ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_email_settings" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_email_settings" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/email_settings".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'EmailSettings')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_email_settings\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Revokes the correction view URL to the Envelope UI
    # Revokes the correction view URL to the Envelope UI.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param correct_view_request  (optional parameter)
    # @return [nil]
    def delete_envelope_correct_view(account_id, envelope_id, correct_view_request)
      delete_envelope_correct_view_with_http_info(account_id, envelope_id,  correct_view_request)
      return nil
    end

    # Revokes the correction view URL to the Envelope UI
    # Revokes the correction view URL to the Envelope UI.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param correct_view_request  (optional parameter)
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_envelope_correct_view_with_http_info(account_id, envelope_id, correct_view_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_envelope_correct_view ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_envelope_correct_view" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_envelope_correct_view" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/views/correct".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(correct_view_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)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_envelope_correct_view\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes the delayed routing rules for the specified envelope workflow step.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @return [nil]
    def delete_envelope_delayed_routing_definition(account_id, envelope_id, workflow_step_id)
      delete_envelope_delayed_routing_definition_with_http_info(account_id, envelope_id, workflow_step_id)
      return nil
    end

    # Deletes the delayed routing rules for the specified envelope workflow step.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_envelope_delayed_routing_definition_with_http_info(account_id, envelope_id, workflow_step_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_envelope_delayed_routing_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_envelope_delayed_routing_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_envelope_delayed_routing_definition" if envelope_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.delete_envelope_delayed_routing_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow/steps/{workflowStepId}/delayedRouting".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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: EnvelopesApi#delete_envelope_delayed_routing_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes the scheduled sending rules for the envelope's workflow.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [nil]
    def delete_envelope_scheduled_sending_definition(account_id, envelope_id)
      delete_envelope_scheduled_sending_definition_with_http_info(account_id, envelope_id)
      return nil
    end

    # Deletes the scheduled sending rules for the envelope&#39;s workflow.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_envelope_scheduled_sending_definition_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_envelope_scheduled_sending_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_envelope_scheduled_sending_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_envelope_scheduled_sending_definition" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow/scheduledSending".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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: EnvelopesApi#delete_envelope_scheduled_sending_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete envelope transfer rules for an account.
    # This method deletes an envelope transfer rule.  **Note:** Only Administrators can delete envelope transfer rules. In addition, to use envelope transfer rules, the **Transfer Custody** feature must be enabled for your account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_transfer_rule_id 
    # @return [nil]
    def delete_envelope_transfer_rules(account_id, envelope_transfer_rule_id)
      delete_envelope_transfer_rules_with_http_info(account_id, envelope_transfer_rule_id)
      return nil
    end

    # Delete envelope transfer rules for an account.
    # This method deletes an envelope transfer rule.  **Note:** Only Administrators can delete envelope transfer rules. In addition, to use envelope transfer rules, the **Transfer Custody** feature must be enabled for your account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_transfer_rule_id 
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_envelope_transfer_rules_with_http_info(account_id, envelope_transfer_rule_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_envelope_transfer_rules ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_envelope_transfer_rules" if account_id.nil?
      # verify the required parameter 'envelope_transfer_rule_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_transfer_rule_id' when calling EnvelopesApi.delete_envelope_transfer_rules" if envelope_transfer_rule_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/transfer_rules/{envelopeTransferRuleId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeTransferRuleId' + '}', envelope_transfer_rule_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: EnvelopesApi#delete_envelope_transfer_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete the workflow definition for an envelope.
    # Deletes the specified envelope's workflow definition if it has one. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [nil]
    def delete_envelope_workflow_definition(account_id, envelope_id)
      delete_envelope_workflow_definition_with_http_info(account_id, envelope_id)
      return nil
    end

    # Delete the workflow definition for an envelope.
    # Deletes the specified envelope&#39;s workflow definition if it has one. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_envelope_workflow_definition_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_envelope_workflow_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_envelope_workflow_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_envelope_workflow_definition" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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: EnvelopesApi#delete_envelope_workflow_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes the envelope workflow step definition for an envelope's workflow by step id.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @return [nil]
    def delete_envelope_workflow_step_definition(account_id, envelope_id, workflow_step_id)
      delete_envelope_workflow_step_definition_with_http_info(account_id, envelope_id, workflow_step_id)
      return nil
    end

    # Deletes the envelope workflow step definition for an envelope&#39;s workflow by step id.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_envelope_workflow_step_definition_with_http_info(account_id, envelope_id, workflow_step_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_envelope_workflow_step_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_envelope_workflow_step_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_envelope_workflow_step_definition" if envelope_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.delete_envelope_workflow_step_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow/steps/{workflowStepId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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: EnvelopesApi#delete_envelope_workflow_step_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes an envelope lock.
    # Deletes the lock from the specified envelope. The `X-DocuSign-Edit` header must be included in the request.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [LockInformation]
    def delete_lock(account_id, envelope_id)
      data, _status_code, _headers = delete_lock_with_http_info(account_id, envelope_id)
      return data
    end

    # Deletes an envelope lock.
    # Deletes the lock from the specified envelope. The &#x60;X-DocuSign-Edit&#x60; header must be included in the request.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(LockInformation, Fixnum, Hash)>] LockInformation data, response status code and response headers
    def delete_lock_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_lock ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_lock" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_lock" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/lock".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'LockInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_lock\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes a recipient from an envelope.
    # Deletes the specified recipient file from the specified envelope. This cannot be used if the envelope has been sent.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [Recipients]
    def delete_recipient(account_id, envelope_id, recipient_id)
      data, _status_code, _headers = delete_recipient_with_http_info(account_id, envelope_id, recipient_id)
      return data
    end

    # Deletes a recipient from an envelope.
    # Deletes the specified recipient file from the specified envelope. This cannot be used if the envelope has been sent.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [Array<(Recipients, Fixnum, Hash)>] Recipients data, response status code and response headers
    def delete_recipient_with_http_info(account_id, envelope_id, recipient_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_recipient ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_recipient" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_recipient" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.delete_recipient" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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 => 'Recipients')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_recipient\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes recipients from an envelope.
    # Deletes one or more recipients from a draft or sent envelope. Recipients to be deleted are listed in the request, with the `recipientId` being used as the key for deleting recipients.  If the envelope is `In Process`, meaning that it has been sent and has not  been completed or voided, recipients that have completed their actions cannot be deleted.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipients  (optional parameter)
    # @return [Recipients]
    def delete_recipients(account_id, envelope_id, recipients)
      data, _status_code, _headers = delete_recipients_with_http_info(account_id, envelope_id,  recipients)
      return data
    end

    # Deletes recipients from an envelope.
    # Deletes one or more recipients from a draft or sent envelope. Recipients to be deleted are listed in the request, with the &#x60;recipientId&#x60; being used as the key for deleting recipients.  If the envelope is &#x60;In Process&#x60;, meaning that it has been sent and has not  been completed or voided, recipients that have completed their actions cannot be deleted.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipients  (optional parameter)
    # @return [Array<(Recipients, Fixnum, Hash)>] Recipients data, response status code and response headers
    def delete_recipients_with_http_info(account_id, envelope_id, recipients)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_recipients ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_recipients" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_recipients" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(recipients)
      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 => 'Recipients')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_recipients\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes the tabs associated with a recipient.
    # Deletes one or more tabs associated with a recipient in a draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param tabs  (optional parameter)
    # @return [Tabs]
    def delete_tabs(account_id, envelope_id, recipient_id, tabs)
      data, _status_code, _headers = delete_tabs_with_http_info(account_id, envelope_id, recipient_id,  tabs)
      return data
    end

    # Deletes the tabs associated with a recipient.
    # Deletes one or more tabs associated with a recipient in a draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param tabs  (optional parameter)
    # @return [Array<(Tabs, Fixnum, Hash)>] Tabs data, response status code and response headers
    def delete_tabs_with_http_info(account_id, envelope_id, recipient_id, tabs)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_tabs ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_tabs" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_tabs" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.delete_tabs" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/tabs".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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(tabs)
      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 => 'Tabs')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#delete_tabs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes the delayed routing rules for the specified template workflow step.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @return [nil]
    def delete_template_delayed_routing_definition(account_id, template_id, workflow_step_id)
      delete_template_delayed_routing_definition_with_http_info(account_id, template_id, workflow_step_id)
      return nil
    end

    # Deletes the delayed routing rules for the specified template workflow step.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_template_delayed_routing_definition_with_http_info(account_id, template_id, workflow_step_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_template_delayed_routing_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_template_delayed_routing_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.delete_template_delayed_routing_definition" if template_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.delete_template_delayed_routing_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow/steps/{workflowStepId}/delayedRouting".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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: EnvelopesApi#delete_template_delayed_routing_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes the scheduled sending rules for the template's workflow.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @return [nil]
    def delete_template_scheduled_sending_definition(account_id, template_id)
      delete_template_scheduled_sending_definition_with_http_info(account_id, template_id)
      return nil
    end

    # Deletes the scheduled sending rules for the template&#39;s workflow.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_template_scheduled_sending_definition_with_http_info(account_id, template_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_template_scheduled_sending_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_template_scheduled_sending_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.delete_template_scheduled_sending_definition" if template_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow/scheduledSending".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_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: EnvelopesApi#delete_template_scheduled_sending_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete the workflow definition for a template.
    # Deletes the specified template's workflow definition if it has one.
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @return [nil]
    def delete_template_workflow_definition(account_id, template_id)
      delete_template_workflow_definition_with_http_info(account_id, template_id)
      return nil
    end

    # Delete the workflow definition for a template.
    # Deletes the specified template&#39;s workflow definition if it has one.
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_template_workflow_definition_with_http_info(account_id, template_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_template_workflow_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_template_workflow_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.delete_template_workflow_definition" if template_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_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: EnvelopesApi#delete_template_workflow_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes the workflow step definition for an template's workflow by step id.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @return [nil]
    def delete_template_workflow_step_definition(account_id, template_id, workflow_step_id)
      delete_template_workflow_step_definition_with_http_info(account_id, template_id, workflow_step_id)
      return nil
    end

    # Deletes the workflow step definition for an template&#39;s workflow by step id.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_template_workflow_step_definition_with_http_info(account_id, template_id, workflow_step_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_template_workflow_step_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_template_workflow_step_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.delete_template_workflow_step_definition" if template_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.delete_template_workflow_step_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow/steps/{workflowStepId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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: EnvelopesApi#delete_template_workflow_step_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes a template from a document in an existing envelope.
    # Deletes the specified template from a document in an existing envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param template_id The ID of the template being accessed.
    # @return [nil]
    def delete_templates_from_document(account_id, document_id, envelope_id, template_id)
      delete_templates_from_document_with_http_info(account_id, document_id, envelope_id, template_id)
      return nil
    end

    # Deletes a template from a document in an existing envelope.
    # Deletes the specified template from a document in an existing envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param template_id The ID of the template being accessed.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_templates_from_document_with_http_info(account_id, document_id, envelope_id, template_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.delete_templates_from_document ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.delete_templates_from_document" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.delete_templates_from_document" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.delete_templates_from_document" if envelope_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.delete_templates_from_document" if template_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/templates/{templateId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'templateId' + '}', template_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: EnvelopesApi#delete_templates_from_document\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Retrieves an attachment from the envelope.
    # Retrieves an attachment from an envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param attachment_id 
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [File]
    def get_attachment(account_id, attachment_id, envelope_id)
      data, _status_code, _headers = get_attachment_with_http_info(account_id, attachment_id, envelope_id)
      return data
    end

    # Retrieves an attachment from the envelope.
    # Retrieves an attachment from an envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param attachment_id 
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(File, Fixnum, Hash)>] File data, response status code and response headers
    def get_attachment_with_http_info(account_id, attachment_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_attachment ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_attachment" if account_id.nil?
      # verify the required parameter 'attachment_id' is set
      fail ArgumentError, "Missing the required parameter 'attachment_id' when calling EnvelopesApi.get_attachment" if attachment_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_attachment" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/attachments/{attachmentId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'attachmentId' + '}', attachment_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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/octet-stream'])

      # 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: EnvelopesApi#get_attachment\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a list of attachments associated with the specified envelope
    # Returns a list of attachments associated with a specified envelope
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [EnvelopeAttachmentsResult]
    def get_attachments(account_id, envelope_id)
      data, _status_code, _headers = get_attachments_with_http_info(account_id, envelope_id)
      return data
    end

    # Returns a list of attachments associated with the specified envelope
    # Returns a list of attachments associated with a specified envelope
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(EnvelopeAttachmentsResult, Fixnum, Hash)>] EnvelopeAttachmentsResult data, response status code and response headers
    def get_attachments_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_attachments ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_attachments" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_attachments" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/attachments".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'EnvelopeAttachmentsResult')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_attachments\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Retrieves the current metadata of a ChunkedUpload.
    # Returns the details (but not the content) about a chunked upload.  **Note:** You cannot obtain details about a chunked upload that has expired, been deleted, or consumed by other actions.
    # @param account_id The external account number (int) or account ID Guid.
    # @param chunked_upload_id 
    # @param DocuSign_eSign::GetChunkedUploadOptions Options for modifying the behavior of the function.
    # @return [ChunkedUploadResponse]
    def get_chunked_upload(account_id, chunked_upload_id, options = DocuSign_eSign::GetChunkedUploadOptions.default)
      data, _status_code, _headers = get_chunked_upload_with_http_info(account_id, chunked_upload_id, options)
      return data
    end

    # Retrieves the current metadata of a ChunkedUpload.
    # Returns the details (but not the content) about a chunked upload.  **Note:** You cannot obtain details about a chunked upload that has expired, been deleted, or consumed by other actions.
    # @param account_id The external account number (int) or account ID Guid.
    # @param chunked_upload_id 
    # @param DocuSign_eSign::GetChunkedUploadOptions Options for modifying the behavior of the function.
    # @return [Array<(ChunkedUploadResponse, Fixnum, Hash)>] ChunkedUploadResponse data, response status code and response headers
    def get_chunked_upload_with_http_info(account_id, chunked_upload_id, options = DocuSign_eSign::GetChunkedUploadOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_chunked_upload ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_chunked_upload" if account_id.nil?
      # verify the required parameter 'chunked_upload_id' is set
      fail ArgumentError, "Missing the required parameter 'chunked_upload_id' when calling EnvelopesApi.get_chunked_upload" if chunked_upload_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/chunked_uploads/{chunkedUploadId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'chunkedUploadId' + '}', chunked_upload_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 => 'ChunkedUploadResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_chunked_upload\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets comment transcript for envelope and user
    # Retrieves a PDF file containing all of the comments that senders and recipients have added to the documents in an envelope.  The response body of this method is the PDF file as a byte stream.   **Note:** Comments are disabled by default. To use the comments feature, an account administrator must enable comments on the account (in the `accountSettingsInformation` object, set the `enableSigningExtensionComments` property to **true**). 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::GetCommentsTranscriptOptions Options for modifying the behavior of the function.
    # @return [File]
    def get_comments_transcript(account_id, envelope_id, options = DocuSign_eSign::GetCommentsTranscriptOptions.default)
      data, _status_code, _headers = get_comments_transcript_with_http_info(account_id, envelope_id, options)
      return data
    end

    # Gets comment transcript for envelope and user
    # Retrieves a PDF file containing all of the comments that senders and recipients have added to the documents in an envelope.  The response body of this method is the PDF file as a byte stream.   **Note:** Comments are disabled by default. To use the comments feature, an account administrator must enable comments on the account (in the &#x60;accountSettingsInformation&#x60; object, set the &#x60;enableSigningExtensionComments&#x60; property to **true**). 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::GetCommentsTranscriptOptions Options for modifying the behavior of the function.
    # @return [Array<(File, Fixnum, Hash)>] File data, response status code and response headers
    def get_comments_transcript_with_http_info(account_id, envelope_id, options = DocuSign_eSign::GetCommentsTranscriptOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_comments_transcript ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_comments_transcript" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_comments_transcript" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/comments/transcript".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

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

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

      # 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: EnvelopesApi#get_comments_transcript\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Reserved: Gets the Electronic Record and Signature Disclosure associated with the account.
    # Reserved: Retrieves the Electronic Record and Signature Disclosure, with HTML formatting, associated with the account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @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 recipient_id The ID of the recipient being accessed.
    # @param DocuSign_eSign::GetConsumerDisclosureOptions Options for modifying the behavior of the function.
    # @return [ConsumerDisclosure]
    def get_consumer_disclosure(account_id, envelope_id, lang_code, recipient_id, options = DocuSign_eSign::GetConsumerDisclosureOptions.default)
      data, _status_code, _headers = get_consumer_disclosure_with_http_info(account_id, envelope_id, lang_code, recipient_id, options)
      return data
    end

    # Reserved: Gets the Electronic Record and Signature Disclosure associated with the account.
    # Reserved: Retrieves the Electronic Record and Signature Disclosure, with HTML formatting, associated with the account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @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 recipient_id The ID of the recipient being accessed.
    # @param DocuSign_eSign::GetConsumerDisclosureOptions 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_with_http_info(account_id, envelope_id, lang_code, recipient_id, options = DocuSign_eSign::GetConsumerDisclosureOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_consumer_disclosure ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_consumer_disclosure" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_consumer_disclosure" if envelope_id.nil?
      # verify the required parameter 'lang_code' is set
      fail ArgumentError, "Missing the required parameter 'lang_code' when calling EnvelopesApi.get_consumer_disclosure" if lang_code.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.get_consumer_disclosure" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/consumer_disclosure/{langCode}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'langCode' + '}', lang_code.to_s).sub('{' + 'recipientId' + '}', recipient_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'langCode'] = options.lang_code2 if !options.lang_code2.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: EnvelopesApi#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 associated with 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 envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param DocuSign_eSign::GetConsumerDisclosureDefaultOptions Options for modifying the behavior of the function.
    # @return [ConsumerDisclosure]
    def get_consumer_disclosure_default(account_id, envelope_id, recipient_id, options = DocuSign_eSign::GetConsumerDisclosureDefaultOptions.default)
      data, _status_code, _headers = get_consumer_disclosure_default_with_http_info(account_id, envelope_id, recipient_id, options)
      return data
    end

    # Gets the Electronic Record and Signature Disclosure associated with 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 envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @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, envelope_id, recipient_id, options = DocuSign_eSign::GetConsumerDisclosureDefaultOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_consumer_disclosure_default ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_consumer_disclosure_default" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_consumer_disclosure_default" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.get_consumer_disclosure_default" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/consumer_disclosure".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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: EnvelopesApi#get_consumer_disclosure_default\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets a document from an envelope.
    # Retrieves the specified document from the envelope. If the account has the Highlight Data Changes feature enabled, there is an option to request that any changes in the envelope be highlighted.  You can also use this method to retrieve a PDF containing the combined content of all documents and the certificate. If the account has the Highlight Data Changes feature enabled, there is an option to request that any changes in the envelope be highlighted.   To retrieve the combined content replace the `{documentId}` parameter in the endpoint with `combined`. /accounts/{accountId}/envelopes/{envelopeId}/documents/combined
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::GetDocumentOptions Options for modifying the behavior of the function.
    # @return [File]
    def get_document(account_id, document_id, envelope_id, options = DocuSign_eSign::GetDocumentOptions.default)
      data, _status_code, _headers = get_document_with_http_info(account_id, document_id, envelope_id, options)
      return data
    end

    # Gets a document from an envelope.
    # Retrieves the specified document from the envelope. If the account has the Highlight Data Changes feature enabled, there is an option to request that any changes in the envelope be highlighted.  You can also use this method to retrieve a PDF containing the combined content of all documents and the certificate. If the account has the Highlight Data Changes feature enabled, there is an option to request that any changes in the envelope be highlighted.   To retrieve the combined content replace the &#x60;{documentId}&#x60; parameter in the endpoint with &#x60;combined&#x60;. /accounts/{accountId}/envelopes/{envelopeId}/documents/combined
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::GetDocumentOptions Options for modifying the behavior of the function.
    # @return [Array<(File, Fixnum, Hash)>] File data, response status code and response headers
    def get_document_with_http_info(account_id, document_id, envelope_id, options = DocuSign_eSign::GetDocumentOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_document ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_document" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.get_document" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_document" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'certificate'] = options.certificate if !options.certificate.nil?
      query_params[:'documents_by_userid'] = options.documents_by_userid if !options.documents_by_userid.nil?
      query_params[:'encoding'] = options.encoding if !options.encoding.nil?
      query_params[:'encrypt'] = options.encrypt if !options.encrypt.nil?
      query_params[:'language'] = options.language if !options.language.nil?
      query_params[:'recipient_id'] = options.recipient_id if !options.recipient_id.nil?
      query_params[:'shared_user_id'] = options.shared_user_id if !options.shared_user_id.nil?
      query_params[:'show_changes'] = options.show_changes if !options.show_changes.nil?
      query_params[:'watermark'] = options.watermark if !options.watermark.nil?

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

      # 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: EnvelopesApi#get_document\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets a page image from an envelope for display.
    # Retrieves a page image for display from the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param page_number The page number being accessed.
    # @param DocuSign_eSign::GetDocumentPageImageOptions Options for modifying the behavior of the function.
    # @return [File]
    def get_document_page_image(account_id, document_id, envelope_id, page_number, options = DocuSign_eSign::GetDocumentPageImageOptions.default)
      data, _status_code, _headers = get_document_page_image_with_http_info(account_id, document_id, envelope_id, page_number, options)
      return data
    end

    # Gets a page image from an envelope for display.
    # Retrieves a page image for display from the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param page_number The page number being accessed.
    # @param DocuSign_eSign::GetDocumentPageImageOptions Options for modifying the behavior of the function.
    # @return [Array<(File, Fixnum, Hash)>] File data, response status code and response headers
    def get_document_page_image_with_http_info(account_id, document_id, envelope_id, page_number, options = DocuSign_eSign::GetDocumentPageImageOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_document_page_image ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_document_page_image" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.get_document_page_image" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_document_page_image" if envelope_id.nil?
      # verify the required parameter 'page_number' is set
      fail ArgumentError, "Missing the required parameter 'page_number' when calling EnvelopesApi.get_document_page_image" if page_number.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/pages/{pageNumber}/page_image".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'pageNumber' + '}', page_number.to_s)

      # query parameters
      query_params = {}
      query_params[:'dpi'] = options.dpi if !options.dpi.nil?
      query_params[:'max_height'] = options.max_height if !options.max_height.nil?
      query_params[:'max_width'] = options.max_width if !options.max_width.nil?
      query_params[:'show_changes'] = options.show_changes if !options.show_changes.nil?

      # 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: EnvelopesApi#get_document_page_image\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns tabs on the document.
    # Returns the tabs on the document specified by `documentId` in the envelope specified by `envelopeId`. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::GetDocumentTabsOptions Options for modifying the behavior of the function.
    # @return [Tabs]
    def get_document_tabs(account_id, document_id, envelope_id, options = DocuSign_eSign::GetDocumentTabsOptions.default)
      data, _status_code, _headers = get_document_tabs_with_http_info(account_id, document_id, envelope_id, options)
      return data
    end

    # Returns tabs on the document.
    # Returns the tabs on the document specified by &#x60;documentId&#x60; in the envelope specified by &#x60;envelopeId&#x60;. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::GetDocumentTabsOptions Options for modifying the behavior of the function.
    # @return [Array<(Tabs, Fixnum, Hash)>] Tabs data, response status code and response headers
    def get_document_tabs_with_http_info(account_id, document_id, envelope_id, options = DocuSign_eSign::GetDocumentTabsOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_document_tabs ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_document_tabs" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.get_document_tabs" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_document_tabs" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/tabs".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'include_metadata'] = options.include_metadata if !options.include_metadata.nil?
      query_params[:'page_numbers'] = options.page_numbers if !options.page_numbers.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 => 'Tabs')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_document_tabs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the email setting overrides for an envelope.
    # Retrieves the email override settings for the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [EmailSettings]
    def get_email_settings(account_id, envelope_id)
      data, _status_code, _headers = get_email_settings_with_http_info(account_id, envelope_id)
      return data
    end

    # Gets the email setting overrides for an envelope.
    # Retrieves the email override settings for the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(EmailSettings, Fixnum, Hash)>] EmailSettings data, response status code and response headers
    def get_email_settings_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_email_settings ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_email_settings" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_email_settings" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/email_settings".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'EmailSettings')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_email_settings\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the status of a envelope.
    # Retrieves the overall status for the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::GetEnvelopeOptions Options for modifying the behavior of the function.
    # @return [Envelope]
    def get_envelope(account_id, envelope_id, options = DocuSign_eSign::GetEnvelopeOptions.default)
      data, _status_code, _headers = get_envelope_with_http_info(account_id, envelope_id, options)
      return data
    end

    # Gets the status of a envelope.
    # Retrieves the overall status for the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::GetEnvelopeOptions Options for modifying the behavior of the function.
    # @return [Array<(Envelope, Fixnum, Hash)>] Envelope data, response status code and response headers
    def get_envelope_with_http_info(account_id, envelope_id, options = DocuSign_eSign::GetEnvelopeOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_envelope ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_envelope" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_envelope" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'advanced_update'] = options.advanced_update if !options.advanced_update.nil?
      query_params[:'include'] = options.include if !options.include.nil?
      query_params[:'include_anchor_tab_locations'] = options.include_anchor_tab_locations if !options.include_anchor_tab_locations.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 => 'Envelope')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_envelope\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the delayed routing rules for an envelope's workflow step definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @return [DelayedRouting]
    def get_envelope_delayed_routing_definition(account_id, envelope_id, workflow_step_id)
      data, _status_code, _headers = get_envelope_delayed_routing_definition_with_http_info(account_id, envelope_id, workflow_step_id)
      return data
    end

    # Returns the delayed routing rules for an envelope&#39;s workflow step definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @return [Array<(DelayedRouting, Fixnum, Hash)>] DelayedRouting data, response status code and response headers
    def get_envelope_delayed_routing_definition_with_http_info(account_id, envelope_id, workflow_step_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_envelope_delayed_routing_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_envelope_delayed_routing_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_envelope_delayed_routing_definition" if envelope_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.get_envelope_delayed_routing_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow/steps/{workflowStepId}/delayedRouting".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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 => 'DelayedRouting')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_envelope_delayed_routing_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns formfields for an envelope
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [DocGenFormFieldResponse]
    def get_envelope_doc_gen_form_fields(account_id, envelope_id)
      data, _status_code, _headers = get_envelope_doc_gen_form_fields_with_http_info(account_id, envelope_id)
      return data
    end

    # Returns formfields for an envelope
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(DocGenFormFieldResponse, Fixnum, Hash)>] DocGenFormFieldResponse data, response status code and response headers
    def get_envelope_doc_gen_form_fields_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_envelope_doc_gen_form_fields ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_envelope_doc_gen_form_fields" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_envelope_doc_gen_form_fields" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/docGenFormFields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'DocGenFormFieldResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_envelope_doc_gen_form_fields\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get the Original HTML Definition used to generate the Responsive HTML for a given document.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [DocumentHtmlDefinitionOriginals]
    def get_envelope_document_html_definitions(account_id, document_id, envelope_id)
      data, _status_code, _headers = get_envelope_document_html_definitions_with_http_info(account_id, document_id, envelope_id)
      return data
    end

    # Get the Original HTML Definition used to generate the Responsive HTML for a given document.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(DocumentHtmlDefinitionOriginals, Fixnum, Hash)>] DocumentHtmlDefinitionOriginals data, response status code and response headers
    def get_envelope_document_html_definitions_with_http_info(account_id, document_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_envelope_document_html_definitions ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_envelope_document_html_definitions" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.get_envelope_document_html_definitions" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_envelope_document_html_definitions" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/html_definitions".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'DocumentHtmlDefinitionOriginals')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_envelope_document_html_definitions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get the Original HTML Definition used to generate the Responsive HTML for the envelope.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [DocumentHtmlDefinitionOriginals]
    def get_envelope_html_definitions(account_id, envelope_id)
      data, _status_code, _headers = get_envelope_html_definitions_with_http_info(account_id, envelope_id)
      return data
    end

    # Get the Original HTML Definition used to generate the Responsive HTML for the envelope.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(DocumentHtmlDefinitionOriginals, Fixnum, Hash)>] DocumentHtmlDefinitionOriginals data, response status code and response headers
    def get_envelope_html_definitions_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_envelope_html_definitions ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_envelope_html_definitions" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_envelope_html_definitions" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/html_definitions".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'DocumentHtmlDefinitionOriginals')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_envelope_html_definitions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the scheduled sending rules for an envelope's workflow definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [ScheduledSending]
    def get_envelope_scheduled_sending_definition(account_id, envelope_id)
      data, _status_code, _headers = get_envelope_scheduled_sending_definition_with_http_info(account_id, envelope_id)
      return data
    end

    # Returns the scheduled sending rules for an envelope&#39;s workflow definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(ScheduledSending, Fixnum, Hash)>] ScheduledSending data, response status code and response headers
    def get_envelope_scheduled_sending_definition_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_envelope_scheduled_sending_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_envelope_scheduled_sending_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_envelope_scheduled_sending_definition" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow/scheduledSending".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'ScheduledSending')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_envelope_scheduled_sending_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a list of envelope transfer rules in the specified account.
    # This method retrieves a list of envelope transfer rules associated with an account.  **Note:** Only Administrators can create and use envelope transfer rules. In addition, to use envelope transfer rules, the **Transfer Custody** feature must be enabled for your account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetEnvelopeTransferRulesOptions Options for modifying the behavior of the function.
    # @return [EnvelopeTransferRuleInformation]
    def get_envelope_transfer_rules(account_id, options = DocuSign_eSign::GetEnvelopeTransferRulesOptions.default)
      data, _status_code, _headers = get_envelope_transfer_rules_with_http_info(account_id, options)
      return data
    end

    # Returns a list of envelope transfer rules in the specified account.
    # This method retrieves a list of envelope transfer rules associated with an account.  **Note:** Only Administrators can create and use envelope transfer rules. In addition, to use envelope transfer rules, the **Transfer Custody** feature must be enabled for your account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetEnvelopeTransferRulesOptions Options for modifying the behavior of the function.
    # @return [Array<(EnvelopeTransferRuleInformation, Fixnum, Hash)>] EnvelopeTransferRuleInformation data, response status code and response headers
    def get_envelope_transfer_rules_with_http_info(account_id, options = DocuSign_eSign::GetEnvelopeTransferRulesOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_envelope_transfer_rules ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_envelope_transfer_rules" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/transfer_rules".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'count'] = options.count if !options.count.nil?
      query_params[:'start_position'] = options.start_position if !options.start_position.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 => 'EnvelopeTransferRuleInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_envelope_transfer_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the workflow definition for an envelope.
    # Returns an envelope's workflow definition if the envelope specified by `envelopeId` has one.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Workflow]
    def get_envelope_workflow_definition(account_id, envelope_id)
      data, _status_code, _headers = get_envelope_workflow_definition_with_http_info(account_id, envelope_id)
      return data
    end

    # Returns the workflow definition for an envelope.
    # Returns an envelope&#39;s workflow definition if the envelope specified by &#x60;envelopeId&#x60; has one.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(Workflow, Fixnum, Hash)>] Workflow data, response status code and response headers
    def get_envelope_workflow_definition_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_envelope_workflow_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_envelope_workflow_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_envelope_workflow_definition" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'Workflow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_envelope_workflow_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the workflow step definition for an envelope by step id.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @return [WorkflowStep]
    def get_envelope_workflow_step_definition(account_id, envelope_id, workflow_step_id)
      data, _status_code, _headers = get_envelope_workflow_step_definition_with_http_info(account_id, envelope_id, workflow_step_id)
      return data
    end

    # Returns the workflow step definition for an envelope by step id.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @return [Array<(WorkflowStep, Fixnum, Hash)>] WorkflowStep data, response status code and response headers
    def get_envelope_workflow_step_definition_with_http_info(account_id, envelope_id, workflow_step_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_envelope_workflow_step_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_envelope_workflow_step_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_envelope_workflow_step_definition" if envelope_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.get_envelope_workflow_step_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow/steps/{workflowStepId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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 => 'WorkflowStep')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_envelope_workflow_step_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns envelope form data for an existing envelope.
    # This method downloads the envelope and tab data (also called form data) from any in-process, completed, or canceled envelope that you sent or that is shared with you. Recipients who are also full administrators on an account can view form data for any envelopes that another user on the account has sent to them.  **Note:** To use this feature, the Sending Setting \"Allow sender to download form data\" must be enabled for the account.  ### Related topics  - [How to get envelope tab values](/docs/esign-rest-api/how-to/get-envelope-tab-values/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [EnvelopeFormData]
    def get_form_data(account_id, envelope_id)
      data, _status_code, _headers = get_form_data_with_http_info(account_id, envelope_id)
      return data
    end

    # Returns envelope form data for an existing envelope.
    # This method downloads the envelope and tab data (also called form data) from any in-process, completed, or canceled envelope that you sent or that is shared with you. Recipients who are also full administrators on an account can view form data for any envelopes that another user on the account has sent to them.  **Note:** To use this feature, the Sending Setting \&quot;Allow sender to download form data\&quot; must be enabled for the account.  ### Related topics  - [How to get envelope tab values](/docs/esign-rest-api/how-to/get-envelope-tab-values/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(EnvelopeFormData, Fixnum, Hash)>] EnvelopeFormData data, response status code and response headers
    def get_form_data_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_form_data ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_form_data" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_form_data" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/form_data".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'EnvelopeFormData')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_form_data\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets envelope lock information.
    # Retrieves general information about the envelope lock.  If the call is made by the locked by user and the request has the same integrator key as original, then the `X-DocuSign-Edit` header and additional lock information is included in the response. This allows users to recover a lost editing session token and the `X-DocuSign-Edit` header.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [LockInformation]
    def get_lock(account_id, envelope_id)
      data, _status_code, _headers = get_lock_with_http_info(account_id, envelope_id)
      return data
    end

    # Gets envelope lock information.
    # Retrieves general information about the envelope lock.  If the call is made by the locked by user and the request has the same integrator key as original, then the &#x60;X-DocuSign-Edit&#x60; header and additional lock information is included in the response. This allows users to recover a lost editing session token and the &#x60;X-DocuSign-Edit&#x60; header.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(LockInformation, Fixnum, Hash)>] LockInformation data, response status code and response headers
    def get_lock_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_lock ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_lock" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_lock" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/lock".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'LockInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_lock\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets envelope notification information.
    # Retrieves the envelope notification, reminders and expirations, information for an existing envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Notification]
    def get_notification_settings(account_id, envelope_id)
      data, _status_code, _headers = get_notification_settings_with_http_info(account_id, envelope_id)
      return data
    end

    # Gets envelope notification information.
    # Retrieves the envelope notification, reminders and expirations, information for an existing envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(Notification, Fixnum, Hash)>] Notification data, response status code and response headers
    def get_notification_settings_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_notification_settings ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_notification_settings" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_notification_settings" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/notification".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'Notification')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_notification_settings\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns tabs on the specified page.
    # Returns the tabs from the page specified by `pageNumber` of the document specified by `documentId` in the envelope specified by `envelopeId`. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param page_number The page number being accessed.
    # @return [Tabs]
    def get_page_tabs(account_id, document_id, envelope_id, page_number)
      data, _status_code, _headers = get_page_tabs_with_http_info(account_id, document_id, envelope_id, page_number)
      return data
    end

    # Returns tabs on the specified page.
    # Returns the tabs from the page specified by &#x60;pageNumber&#x60; of the document specified by &#x60;documentId&#x60; in the envelope specified by &#x60;envelopeId&#x60;. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param page_number The page number being accessed.
    # @return [Array<(Tabs, Fixnum, Hash)>] Tabs data, response status code and response headers
    def get_page_tabs_with_http_info(account_id, document_id, envelope_id, page_number)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_page_tabs ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_page_tabs" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.get_page_tabs" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_page_tabs" if envelope_id.nil?
      # verify the required parameter 'page_number' is set
      fail ArgumentError, "Missing the required parameter 'page_number' when calling EnvelopesApi.get_page_tabs" if page_number.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/pages/{pageNumber}/tabs".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'pageNumber' + '}', page_number.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 => 'Tabs')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_page_tabs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns document page image(s) based on input.
    # Returns images of the pages in a document for display based on the parameters that you specify.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::GetPagesOptions Options for modifying the behavior of the function.
    # @return [PageImages]
    def get_pages(account_id, document_id, envelope_id, options = DocuSign_eSign::GetPagesOptions.default)
      data, _status_code, _headers = get_pages_with_http_info(account_id, document_id, envelope_id, options)
      return data
    end

    # Returns document page image(s) based on input.
    # Returns images of the pages in a document for display based on the parameters that you specify.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::GetPagesOptions Options for modifying the behavior of the function.
    # @return [Array<(PageImages, Fixnum, Hash)>] PageImages data, response status code and response headers
    def get_pages_with_http_info(account_id, document_id, envelope_id, options = DocuSign_eSign::GetPagesOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_pages ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_pages" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.get_pages" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_pages" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/pages".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'count'] = options.count if !options.count.nil?
      query_params[:'dpi'] = options.dpi if !options.dpi.nil?
      query_params[:'max_height'] = options.max_height if !options.max_height.nil?
      query_params[:'max_width'] = options.max_width if !options.max_width.nil?
      query_params[:'nocache'] = options.nocache if !options.nocache.nil?
      query_params[:'show_changes'] = options.show_changes if !options.show_changes.nil?
      query_params[:'start_position'] = options.start_position if !options.start_position.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 => 'PageImages')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_pages\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns document visibility for the recipients
    # This method returns information about document visibility for a recipient.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [DocumentVisibilityList]
    def get_recipient_document_visibility(account_id, envelope_id, recipient_id)
      data, _status_code, _headers = get_recipient_document_visibility_with_http_info(account_id, envelope_id, recipient_id)
      return data
    end

    # Returns document visibility for the recipients
    # This method returns information about document visibility for a recipient.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [Array<(DocumentVisibilityList, Fixnum, Hash)>] DocumentVisibilityList data, response status code and response headers
    def get_recipient_document_visibility_with_http_info(account_id, envelope_id, recipient_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_recipient_document_visibility ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_recipient_document_visibility" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_recipient_document_visibility" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.get_recipient_document_visibility" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/document_visibility".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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 => 'DocumentVisibilityList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_recipient_document_visibility\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the initials image for a user.
    # Retrieves the initials image for the specified user. The image is returned in the same format as it was uploaded. In the request you can specify if the chrome (the added line and identifier around the initial image) is returned with the image.  The userId specified in the endpoint must match the authenticated user's user id and the user must be a member of the account.  The `signatureIdOrName` paramter accepts signature ID or signature name. DocuSign recommends you use signature ID (`signatureId`), since some names contain characters that do not properly URL encode. If you use the user name, it is likely that the name includes spaces and you might need to URL encode the name before using it in the endpoint.   For example: \"Bob Smith\" to \"Bob%20Smith\"  Older envelopes might only contain chromed images. If getting the non-chromed image fails, try getting the chromed image.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param DocuSign_eSign::GetRecipientInitialsImageOptions Options for modifying the behavior of the function.
    # @return [File]
    def get_recipient_initials_image(account_id, envelope_id, recipient_id, options = DocuSign_eSign::GetRecipientInitialsImageOptions.default)
      data, _status_code, _headers = get_recipient_initials_image_with_http_info(account_id, envelope_id, recipient_id, options)
      return data
    end

    # Gets the initials image for a user.
    # Retrieves the initials image for the specified user. The image is returned in the same format as it was uploaded. In the request you can specify if the chrome (the added line and identifier around the initial image) is returned with the image.  The userId specified in the endpoint must match the authenticated user&#39;s user id and the user must be a member of the account.  The &#x60;signatureIdOrName&#x60; paramter accepts signature ID or signature name. DocuSign recommends you use signature ID (&#x60;signatureId&#x60;), since some names contain characters that do not properly URL encode. If you use the user name, it is likely that the name includes spaces and you might need to URL encode the name before using it in the endpoint.   For example: \&quot;Bob Smith\&quot; to \&quot;Bob%20Smith\&quot;  Older envelopes might only contain chromed images. If getting the non-chromed image fails, try getting the chromed image.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param DocuSign_eSign::GetRecipientInitialsImageOptions Options for modifying the behavior of the function.
    # @return [Array<(File, Fixnum, Hash)>] File data, response status code and response headers
    def get_recipient_initials_image_with_http_info(account_id, envelope_id, recipient_id, options = DocuSign_eSign::GetRecipientInitialsImageOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_recipient_initials_image ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_recipient_initials_image" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_recipient_initials_image" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.get_recipient_initials_image" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/initials_image".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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: EnvelopesApi#get_recipient_initials_image\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets signature information for a signer or sign-in-person recipient.
    # Retrieves signature information for a signer or sign-in-person recipient.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [UserSignature]
    def get_recipient_signature(account_id, envelope_id, recipient_id)
      data, _status_code, _headers = get_recipient_signature_with_http_info(account_id, envelope_id, recipient_id)
      return data
    end

    # Gets signature information for a signer or sign-in-person recipient.
    # Retrieves signature information for a signer or sign-in-person recipient.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [Array<(UserSignature, Fixnum, Hash)>] UserSignature data, response status code and response headers
    def get_recipient_signature_with_http_info(account_id, envelope_id, recipient_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_recipient_signature ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_recipient_signature" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_recipient_signature" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.get_recipient_signature" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/signature".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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 => 'UserSignature')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_recipient_signature\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Retrieve signature image information for a signer/sign-in-person recipient.
    # Retrieves the specified user signature image. The image is returned in the same format as uploaded. In the request you can specify if the chrome (the added line and identifier around the initial image) is returned with the image.  The userId specified in the endpoint must match the authenticated user's user ID and the user must be a member of the account.  The `signatureIdOrName` parameter accepts signature ID or signature name. DocuSign recommends you use signature ID (`signatureId`), since some names contain characters that don't properly URL encode. If you use the user name, it is likely that the name includes spaces and you might need to URL encode the name before using it in the endpoint.   For example: \"Bob Smith\" to \"Bob%20Smith\"  Older envelopes might only have chromed images. If getting the non-chromed image fails, try getting the chromed image.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param DocuSign_eSign::GetRecipientSignatureImageOptions Options for modifying the behavior of the function.
    # @return [File]
    def get_recipient_signature_image(account_id, envelope_id, recipient_id, options = DocuSign_eSign::GetRecipientSignatureImageOptions.default)
      data, _status_code, _headers = get_recipient_signature_image_with_http_info(account_id, envelope_id, recipient_id, options)
      return data
    end

    # Retrieve signature image information for a signer/sign-in-person recipient.
    # Retrieves the specified user signature image. The image is returned in the same format as uploaded. In the request you can specify if the chrome (the added line and identifier around the initial image) is returned with the image.  The userId specified in the endpoint must match the authenticated user&#39;s user ID and the user must be a member of the account.  The &#x60;signatureIdOrName&#x60; parameter accepts signature ID or signature name. DocuSign recommends you use signature ID (&#x60;signatureId&#x60;), since some names contain characters that don&#39;t properly URL encode. If you use the user name, it is likely that the name includes spaces and you might need to URL encode the name before using it in the endpoint.   For example: \&quot;Bob Smith\&quot; to \&quot;Bob%20Smith\&quot;  Older envelopes might only have chromed images. If getting the non-chromed image fails, try getting the chromed image.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param DocuSign_eSign::GetRecipientSignatureImageOptions Options for modifying the behavior of the function.
    # @return [Array<(File, Fixnum, Hash)>] File data, response status code and response headers
    def get_recipient_signature_image_with_http_info(account_id, envelope_id, recipient_id, options = DocuSign_eSign::GetRecipientSignatureImageOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_recipient_signature_image ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_recipient_signature_image" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_recipient_signature_image" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.get_recipient_signature_image" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/signature_image".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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: EnvelopesApi#get_recipient_signature_image\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get encrypted tabs for envelope.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [nil]
    def get_tabs_blob(account_id, envelope_id)
      get_tabs_blob_with_http_info(account_id, envelope_id)
      return nil
    end

    # Get encrypted tabs for envelope.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def get_tabs_blob_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_tabs_blob ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_tabs_blob" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.get_tabs_blob" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/tabs_blob".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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: EnvelopesApi#get_tabs_blob\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the delayed routing rules for a template's workflow step definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @return [DelayedRouting]
    def get_template_delayed_routing_definition(account_id, template_id, workflow_step_id)
      data, _status_code, _headers = get_template_delayed_routing_definition_with_http_info(account_id, template_id, workflow_step_id)
      return data
    end

    # Returns the delayed routing rules for a template&#39;s workflow step definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @return [Array<(DelayedRouting, Fixnum, Hash)>] DelayedRouting data, response status code and response headers
    def get_template_delayed_routing_definition_with_http_info(account_id, template_id, workflow_step_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_template_delayed_routing_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_template_delayed_routing_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.get_template_delayed_routing_definition" if template_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.get_template_delayed_routing_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow/steps/{workflowStepId}/delayedRouting".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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 => 'DelayedRouting')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_template_delayed_routing_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns document visibility for the recipients
    # This method returns information about document visibility for a template recipient.
    # @param account_id The external account number (int) or account ID Guid.
    # @param recipient_id The ID of the recipient being accessed.
    # @param template_id The ID of the template being accessed.
    # @return [DocumentVisibilityList]
    def get_template_recipient_document_visibility(account_id, recipient_id, template_id)
      data, _status_code, _headers = get_template_recipient_document_visibility_with_http_info(account_id, recipient_id, template_id)
      return data
    end

    # Returns document visibility for the recipients
    # This method returns information about document visibility for a template recipient.
    # @param account_id The external account number (int) or account ID Guid.
    # @param recipient_id The ID of the recipient being accessed.
    # @param template_id The ID of the template being accessed.
    # @return [Array<(DocumentVisibilityList, Fixnum, Hash)>] DocumentVisibilityList data, response status code and response headers
    def get_template_recipient_document_visibility_with_http_info(account_id, recipient_id, template_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_template_recipient_document_visibility ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_template_recipient_document_visibility" if account_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.get_template_recipient_document_visibility" if recipient_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.get_template_recipient_document_visibility" if template_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/recipients/{recipientId}/document_visibility".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'recipientId' + '}', recipient_id.to_s).sub('{' + 'templateId' + '}', template_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 => 'DocumentVisibilityList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_template_recipient_document_visibility\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the scheduled sending rules for a template's workflow definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @return [ScheduledSending]
    def get_template_scheduled_sending_definition(account_id, template_id)
      data, _status_code, _headers = get_template_scheduled_sending_definition_with_http_info(account_id, template_id)
      return data
    end

    # Returns the scheduled sending rules for a template&#39;s workflow definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @return [Array<(ScheduledSending, Fixnum, Hash)>] ScheduledSending data, response status code and response headers
    def get_template_scheduled_sending_definition_with_http_info(account_id, template_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_template_scheduled_sending_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_template_scheduled_sending_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.get_template_scheduled_sending_definition" if template_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow/scheduledSending".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_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 => 'ScheduledSending')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_template_scheduled_sending_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the workflow definition for a template.
    # Returns template's workflow definition if the template specified by `templateId` has one.
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @return [Workflow]
    def get_template_workflow_definition(account_id, template_id)
      data, _status_code, _headers = get_template_workflow_definition_with_http_info(account_id, template_id)
      return data
    end

    # Returns the workflow definition for a template.
    # Returns template&#39;s workflow definition if the template specified by &#x60;templateId&#x60; has one.
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @return [Array<(Workflow, Fixnum, Hash)>] Workflow data, response status code and response headers
    def get_template_workflow_definition_with_http_info(account_id, template_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_template_workflow_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_template_workflow_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.get_template_workflow_definition" if template_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_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 => 'Workflow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_template_workflow_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the workflow step definition for a template by step id.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @return [WorkflowStep]
    def get_template_workflow_step_definition(account_id, template_id, workflow_step_id)
      data, _status_code, _headers = get_template_workflow_step_definition_with_http_info(account_id, template_id, workflow_step_id)
      return data
    end

    # Returns the workflow step definition for a template by step id.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @return [Array<(WorkflowStep, Fixnum, Hash)>] WorkflowStep data, response status code and response headers
    def get_template_workflow_step_definition_with_http_info(account_id, template_id, workflow_step_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.get_template_workflow_step_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.get_template_workflow_step_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.get_template_workflow_step_definition" if template_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.get_template_workflow_step_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow/steps/{workflowStepId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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 => 'WorkflowStep')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#get_template_workflow_step_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the envelope audit events for an envelope.
    # Gets the envelope audit events for the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::ListAuditEventsOptions Options for modifying the behavior of the function.
    # @return [EnvelopeAuditEventResponse]
    def list_audit_events(account_id, envelope_id, options = DocuSign_eSign::ListAuditEventsOptions.default)
      data, _status_code, _headers = list_audit_events_with_http_info(account_id, envelope_id, options)
      return data
    end

    # Gets the envelope audit events for an envelope.
    # Gets the envelope audit events for the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::ListAuditEventsOptions Options for modifying the behavior of the function.
    # @return [Array<(EnvelopeAuditEventResponse, Fixnum, Hash)>] EnvelopeAuditEventResponse data, response status code and response headers
    def list_audit_events_with_http_info(account_id, envelope_id, options = DocuSign_eSign::ListAuditEventsOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.list_audit_events ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.list_audit_events" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.list_audit_events" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/audit_events".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'locale'] = options.locale if !options.locale.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 => 'EnvelopeAuditEventResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#list_audit_events\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the custom field information for the specified envelope.
    # Retrieves the custom field information for the specified envelope. 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. With a list custom field, the sender selects the value of the field from a pre-made list.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [CustomFieldsEnvelope]
    def list_custom_fields(account_id, envelope_id)
      data, _status_code, _headers = list_custom_fields_with_http_info(account_id, envelope_id)
      return data
    end

    # Gets the custom field information for the specified envelope.
    # Retrieves the custom field information for the specified envelope. 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. With a list custom field, the sender selects the value of the field from a pre-made list.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(CustomFieldsEnvelope, Fixnum, Hash)>] CustomFieldsEnvelope data, response status code and response headers
    def list_custom_fields_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.list_custom_fields ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.list_custom_fields" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.list_custom_fields" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/custom_fields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'CustomFieldsEnvelope')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#list_custom_fields\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the custom document fields from an  existing envelope document.
    # Retrieves the custom document field information from an existing envelope document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [DocumentFieldsInformation]
    def list_document_fields(account_id, document_id, envelope_id)
      data, _status_code, _headers = list_document_fields_with_http_info(account_id, document_id, envelope_id)
      return data
    end

    # Gets the custom document fields from an  existing envelope document.
    # Retrieves the custom document field information from an existing envelope document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(DocumentFieldsInformation, Fixnum, Hash)>] DocumentFieldsInformation data, response status code and response headers
    def list_document_fields_with_http_info(account_id, document_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.list_document_fields ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.list_document_fields" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.list_document_fields" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.list_document_fields" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/fields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'DocumentFieldsInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#list_document_fields\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets a list of envelope documents.
    # Retrieves a list of documents associated with the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::ListDocumentsOptions Options for modifying the behavior of the function.
    # @return [EnvelopeDocumentsResult]
    def list_documents(account_id, envelope_id, options = DocuSign_eSign::ListDocumentsOptions.default)
      data, _status_code, _headers = list_documents_with_http_info(account_id, envelope_id, options)
      return data
    end

    # Gets a list of envelope documents.
    # Retrieves a list of documents associated with the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::ListDocumentsOptions Options for modifying the behavior of the function.
    # @return [Array<(EnvelopeDocumentsResult, Fixnum, Hash)>] EnvelopeDocumentsResult data, response status code and response headers
    def list_documents_with_http_info(account_id, envelope_id, options = DocuSign_eSign::ListDocumentsOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.list_documents ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.list_documents" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.list_documents" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'documents_by_userid'] = options.documents_by_userid if !options.documents_by_userid.nil?
      query_params[:'include_agreement_type'] = options.include_agreement_type if !options.include_agreement_type.nil?
      query_params[:'include_docgen_formfields'] = options.include_docgen_formfields if !options.include_docgen_formfields.nil?
      query_params[:'include_document_size'] = options.include_document_size if !options.include_document_size.nil?
      query_params[:'include_metadata'] = options.include_metadata if !options.include_metadata.nil?
      query_params[:'include_tabs'] = options.include_tabs if !options.include_tabs.nil?
      query_params[:'recipient_id'] = options.recipient_id if !options.recipient_id.nil?
      query_params[:'shared_user_id'] = options.shared_user_id if !options.shared_user_id.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 => 'EnvelopeDocumentsResult')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#list_documents\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the status of recipients for an envelope.
    # Retrieves the status of all recipients in a single envelope and identifies the current recipient in the routing list.   The `currentRoutingOrder` property of the response contains the `routingOrder` value of the current recipient indicating that the envelope has been sent to the recipient, but the recipient has not completed their actions.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::ListRecipientsOptions Options for modifying the behavior of the function.
    # @return [Recipients]
    def list_recipients(account_id, envelope_id, options = DocuSign_eSign::ListRecipientsOptions.default)
      data, _status_code, _headers = list_recipients_with_http_info(account_id, envelope_id, options)
      return data
    end

    # Gets the status of recipients for an envelope.
    # Retrieves the status of all recipients in a single envelope and identifies the current recipient in the routing list.   The &#x60;currentRoutingOrder&#x60; property of the response contains the &#x60;routingOrder&#x60; value of the current recipient indicating that the envelope has been sent to the recipient, but the recipient has not completed their actions.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::ListRecipientsOptions Options for modifying the behavior of the function.
    # @return [Array<(Recipients, Fixnum, Hash)>] Recipients data, response status code and response headers
    def list_recipients_with_http_info(account_id, envelope_id, options = DocuSign_eSign::ListRecipientsOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.list_recipients ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.list_recipients" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.list_recipients" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'include_anchor_tab_locations'] = options.include_anchor_tab_locations if !options.include_anchor_tab_locations.nil?
      query_params[:'include_extended'] = options.include_extended if !options.include_extended.nil?
      query_params[:'include_metadata'] = options.include_metadata if !options.include_metadata.nil?
      query_params[:'include_tabs'] = options.include_tabs if !options.include_tabs.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 => 'Recipients')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#list_recipients\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the envelope status for the specified envelopes.
    # Retrieves the envelope status for the specified envelopes.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_ids_request  (optional parameter)
    # @param DocuSign_eSign::ListStatusOptions Options for modifying the behavior of the function.
    # @return [EnvelopesInformation]
    def list_status(account_id, envelope_ids_request, options = DocuSign_eSign::ListStatusOptions.default)
      data, _status_code, _headers = list_status_with_http_info(account_id,  envelope_ids_request, options)
      return data
    end

    # Gets the envelope status for the specified envelopes.
    # Retrieves the envelope status for the specified envelopes.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_ids_request  (optional parameter)
    # @param DocuSign_eSign::ListStatusOptions Options for modifying the behavior of the function.
    # @return [Array<(EnvelopesInformation, Fixnum, Hash)>] EnvelopesInformation data, response status code and response headers
    def list_status_with_http_info(account_id, envelope_ids_request, options = DocuSign_eSign::ListStatusOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.list_status ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.list_status" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/status".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'ac_status'] = options.ac_status if !options.ac_status.nil?
      query_params[:'block'] = options.block if !options.block.nil?
      query_params[:'count'] = options.count if !options.count.nil?
      query_params[:'email'] = options.email if !options.email.nil?
      query_params[:'envelope_ids'] = options.envelope_ids if !options.envelope_ids.nil?
      query_params[:'from_date'] = options.from_date if !options.from_date.nil?
      query_params[:'from_to_status'] = options.from_to_status if !options.from_to_status.nil?
      query_params[:'start_position'] = options.start_position if !options.start_position.nil?
      query_params[:'status'] = options.status if !options.status.nil?
      query_params[:'to_date'] = options.to_date if !options.to_date.nil?
      query_params[:'transaction_ids'] = options.transaction_ids if !options.transaction_ids.nil?
      query_params[:'user_name'] = options.user_name if !options.user_name.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(envelope_ids_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 => 'EnvelopesInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#list_status\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets status changes for one or more envelopes.
    # Retrieves envelope status changes for all envelopes. You can modify the information returned by adding query strings to limit the request to check between certain dates and times, or for certain envelopes, or for certain status codes. It is recommended that you use one or more of the query strings in order to limit the size of the response.  ### Important: Unless you are requesting the status for specific envelopes (using the `envelopeIds` or `transactionIds` properties), you must add a set the `from_date` property in the request.  Getting envelope status using `transactionIds` is useful for offline signing situations where it can be used determine if an envelope was created or not, for the cases where a network connection was lost, before the envelope status could be returned.  ### Request Envelope Status Notes ###  The REST API GET /envelopes call uses certain filters to find results. In some cases requests are check for \"any status change\" instead of the just the single status requested. In these cases, more envelopes might be returned by the request than otherwise would be. For example, for a request with the begin date is set to Jan 1st, an end date set to Jan 7th and the status qualifier (`from_to_status`) set to `Delivered` &mdash; the response set might contain envelopes that were created during that time period, but not delivered during the time period.  To avoid unnecessary database queries, the DocuSign system checks requests to ensure that the added filters will not result in a zero-size response before acting on the request. The following table shows the valid envelope statuses (in the Valid Current Statuses column) for the status qualifiers in the request. If the status and status qualifiers in the API request do not contain any of the values shown in the valid current statuses column, then an empty list is returned.  For example, a request with a status qualifier (from_to_status) of `Delivered` and a status of \"`Created`,`Sent`\", DocuSign will always return an empty list. This is because the request essentially translates to: find the envelopes that were delivered between the begin and end dates that have a current status of `Created` or `Sent`, and since an envelope that has been delivered can never have a status of `Created` or `Sent`, a zero-size response would be generated. In this case, DocuSign does not run the request, but just returns the empty list.  Client applications should check that the statuses they are requesting make sense for a given status qualifier.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::ListStatusChangesOptions Options for modifying the behavior of the function.
    # @return [EnvelopesInformation]
    def list_status_changes(account_id, options = DocuSign_eSign::ListStatusChangesOptions.default)
      data, _status_code, _headers = list_status_changes_with_http_info(account_id, options)
      return data
    end

    # Gets status changes for one or more envelopes.
    # Retrieves envelope status changes for all envelopes. You can modify the information returned by adding query strings to limit the request to check between certain dates and times, or for certain envelopes, or for certain status codes. It is recommended that you use one or more of the query strings in order to limit the size of the response.  ### Important: Unless you are requesting the status for specific envelopes (using the &#x60;envelopeIds&#x60; or &#x60;transactionIds&#x60; properties), you must add a set the &#x60;from_date&#x60; property in the request.  Getting envelope status using &#x60;transactionIds&#x60; is useful for offline signing situations where it can be used determine if an envelope was created or not, for the cases where a network connection was lost, before the envelope status could be returned.  ### Request Envelope Status Notes ###  The REST API GET /envelopes call uses certain filters to find results. In some cases requests are check for \&quot;any status change\&quot; instead of the just the single status requested. In these cases, more envelopes might be returned by the request than otherwise would be. For example, for a request with the begin date is set to Jan 1st, an end date set to Jan 7th and the status qualifier (&#x60;from_to_status&#x60;) set to &#x60;Delivered&#x60; &amp;mdash; the response set might contain envelopes that were created during that time period, but not delivered during the time period.  To avoid unnecessary database queries, the DocuSign system checks requests to ensure that the added filters will not result in a zero-size response before acting on the request. The following table shows the valid envelope statuses (in the Valid Current Statuses column) for the status qualifiers in the request. If the status and status qualifiers in the API request do not contain any of the values shown in the valid current statuses column, then an empty list is returned.  For example, a request with a status qualifier (from_to_status) of &#x60;Delivered&#x60; and a status of \&quot;&#x60;Created&#x60;,&#x60;Sent&#x60;\&quot;, DocuSign will always return an empty list. This is because the request essentially translates to: find the envelopes that were delivered between the begin and end dates that have a current status of &#x60;Created&#x60; or &#x60;Sent&#x60;, and since an envelope that has been delivered can never have a status of &#x60;Created&#x60; or &#x60;Sent&#x60;, a zero-size response would be generated. In this case, DocuSign does not run the request, but just returns the empty list.  Client applications should check that the statuses they are requesting make sense for a given status qualifier.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::ListStatusChangesOptions Options for modifying the behavior of the function.
    # @return [Array<(EnvelopesInformation, Fixnum, Hash)>] EnvelopesInformation data, response status code and response headers
    def list_status_changes_with_http_info(account_id, options = DocuSign_eSign::ListStatusChangesOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.list_status_changes ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.list_status_changes" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'ac_status'] = options.ac_status if !options.ac_status.nil?
      query_params[:'block'] = options.block if !options.block.nil?
      query_params[:'cdse_mode'] = options.cdse_mode if !options.cdse_mode.nil?
      query_params[:'continuation_token'] = options.continuation_token if !options.continuation_token.nil?
      query_params[:'count'] = options.count if !options.count.nil?
      query_params[:'custom_field'] = options.custom_field if !options.custom_field.nil?
      query_params[:'email'] = options.email if !options.email.nil?
      query_params[:'envelope_ids'] = options.envelope_ids if !options.envelope_ids.nil?
      query_params[:'exclude'] = options.exclude if !options.exclude.nil?
      query_params[:'folder_ids'] = options.folder_ids if !options.folder_ids.nil?
      query_params[:'folder_types'] = options.folder_types if !options.folder_types.nil?
      query_params[:'from_date'] = options.from_date if !options.from_date.nil?
      query_params[:'from_to_status'] = options.from_to_status if !options.from_to_status.nil?
      query_params[:'include'] = options.include if !options.include.nil?
      query_params[:'include_purge_information'] = options.include_purge_information if !options.include_purge_information.nil?
      query_params[:'intersecting_folder_ids'] = options.intersecting_folder_ids if !options.intersecting_folder_ids.nil?
      query_params[:'last_queried_date'] = options.last_queried_date if !options.last_queried_date.nil?
      query_params[:'order'] = options.order if !options.order.nil?
      query_params[:'order_by'] = options.order_by if !options.order_by.nil?
      query_params[:'powerformids'] = options.powerformids if !options.powerformids.nil?
      query_params[:'query_budget'] = options.query_budget if !options.query_budget.nil?
      query_params[:'requester_date_format'] = options.requester_date_format if !options.requester_date_format.nil?
      query_params[:'search_mode'] = options.search_mode if !options.search_mode.nil?
      query_params[:'search_text'] = options.search_text if !options.search_text.nil?
      query_params[:'start_position'] = options.start_position if !options.start_position.nil?
      query_params[:'status'] = options.status if !options.status.nil?
      query_params[:'to_date'] = options.to_date if !options.to_date.nil?
      query_params[:'transaction_ids'] = options.transaction_ids if !options.transaction_ids.nil?
      query_params[:'user_filter'] = options.user_filter if !options.user_filter.nil?
      query_params[:'user_id'] = options.user_id if !options.user_id.nil?
      query_params[:'user_name'] = options.user_name if !options.user_name.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 => 'EnvelopesInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#list_status_changes\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the tabs information for a signer or sign-in-person recipient in an envelope.
    # Retrieves information about the tabs associated with a recipient in a draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param DocuSign_eSign::ListTabsOptions Options for modifying the behavior of the function.
    # @return [Tabs]
    def list_tabs(account_id, envelope_id, recipient_id, options = DocuSign_eSign::ListTabsOptions.default)
      data, _status_code, _headers = list_tabs_with_http_info(account_id, envelope_id, recipient_id, options)
      return data
    end

    # Gets the tabs information for a signer or sign-in-person recipient in an envelope.
    # Retrieves information about the tabs associated with a recipient in a draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param DocuSign_eSign::ListTabsOptions Options for modifying the behavior of the function.
    # @return [Array<(Tabs, Fixnum, Hash)>] Tabs data, response status code and response headers
    def list_tabs_with_http_info(account_id, envelope_id, recipient_id, options = DocuSign_eSign::ListTabsOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.list_tabs ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.list_tabs" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.list_tabs" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.list_tabs" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/tabs".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'include_anchor_tab_locations'] = options.include_anchor_tab_locations if !options.include_anchor_tab_locations.nil?
      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 = 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 => 'Tabs')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#list_tabs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get List of Templates used in an Envelope
    # This returns a list of the server-side templates, their name and ID, used in an envelope. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::ListTemplatesOptions Options for modifying the behavior of the function.
    # @return [TemplateInformation]
    def list_templates(account_id, envelope_id, options = DocuSign_eSign::ListTemplatesOptions.default)
      data, _status_code, _headers = list_templates_with_http_info(account_id, envelope_id, options)
      return data
    end

    # Get List of Templates used in an Envelope
    # This returns a list of the server-side templates, their name and ID, used in an envelope. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::ListTemplatesOptions Options for modifying the behavior of the function.
    # @return [Array<(TemplateInformation, Fixnum, Hash)>] TemplateInformation data, response status code and response headers
    def list_templates_with_http_info(account_id, envelope_id, options = DocuSign_eSign::ListTemplatesOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.list_templates ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.list_templates" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.list_templates" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/templates".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'TemplateInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#list_templates\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets the templates associated with a document in an existing envelope.
    # Retrieves the templates associated with a document in the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::ListTemplatesForDocumentOptions Options for modifying the behavior of the function.
    # @return [TemplateInformation]
    def list_templates_for_document(account_id, document_id, envelope_id, options = DocuSign_eSign::ListTemplatesForDocumentOptions.default)
      data, _status_code, _headers = list_templates_for_document_with_http_info(account_id, document_id, envelope_id, options)
      return data
    end

    # Gets the templates associated with a document in an existing envelope.
    # Retrieves the templates associated with a document in the specified envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param DocuSign_eSign::ListTemplatesForDocumentOptions Options for modifying the behavior of the function.
    # @return [Array<(TemplateInformation, Fixnum, Hash)>] TemplateInformation data, response status code and response headers
    def list_templates_for_document_with_http_info(account_id, document_id, envelope_id, options = DocuSign_eSign::ListTemplatesForDocumentOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.list_templates_for_document ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.list_templates_for_document" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.list_templates_for_document" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.list_templates_for_document" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/templates".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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 => 'TemplateInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#list_templates_for_document\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Add an attachment to a DRAFT or IN-PROCESS envelope.
    # Adds an attachment to a draft or in-process envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param attachment_id 
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param attachment  (optional parameter)
    # @return [EnvelopeAttachmentsResult]
    def put_attachment(account_id, attachment_id, envelope_id, attachment)
      data, _status_code, _headers = put_attachment_with_http_info(account_id, attachment_id, envelope_id,  attachment)
      return data
    end

    # Add an attachment to a DRAFT or IN-PROCESS envelope.
    # Adds an attachment to a draft or in-process envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param attachment_id 
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param attachment  (optional parameter)
    # @return [Array<(EnvelopeAttachmentsResult, Fixnum, Hash)>] EnvelopeAttachmentsResult data, response status code and response headers
    def put_attachment_with_http_info(account_id, attachment_id, envelope_id, attachment)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.put_attachment ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.put_attachment" if account_id.nil?
      # verify the required parameter 'attachment_id' is set
      fail ArgumentError, "Missing the required parameter 'attachment_id' when calling EnvelopesApi.put_attachment" if attachment_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.put_attachment" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/attachments/{attachmentId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'attachmentId' + '}', attachment_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(attachment)
      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 => 'EnvelopeAttachmentsResult')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#put_attachment\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Add one or more attachments to a DRAFT or IN-PROCESS envelope.
    # Adds one or more attachments to a draft or in-process envelope.  Envelope attachments are files that an application can include in an envelope. They are not converted to PDF. Envelope attachments are available only through the API. There is no user interface in the DocuSign web application for them.  For a list of supported file formats, see [Supported File Formats](https://support.docusign.com/guides/ndse-user-guide-supported-file-formats).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_attachments_request  (optional parameter)
    # @return [EnvelopeAttachmentsResult]
    def put_attachments(account_id, envelope_id, envelope_attachments_request)
      data, _status_code, _headers = put_attachments_with_http_info(account_id, envelope_id,  envelope_attachments_request)
      return data
    end

    # Add one or more attachments to a DRAFT or IN-PROCESS envelope.
    # Adds one or more attachments to a draft or in-process envelope.  Envelope attachments are files that an application can include in an envelope. They are not converted to PDF. Envelope attachments are available only through the API. There is no user interface in the DocuSign web application for them.  For a list of supported file formats, see [Supported File Formats](https://support.docusign.com/guides/ndse-user-guide-supported-file-formats).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_attachments_request  (optional parameter)
    # @return [Array<(EnvelopeAttachmentsResult, Fixnum, Hash)>] EnvelopeAttachmentsResult data, response status code and response headers
    def put_attachments_with_http_info(account_id, envelope_id, envelope_attachments_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.put_attachments ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.put_attachments" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.put_attachments" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/attachments".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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_attachments_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 => 'EnvelopeAttachmentsResult')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#put_attachments\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Rotates page image from an envelope for display.
    # Rotates page image from an envelope for display. The page image can be rotated to the left or right.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param page_number The page number being accessed.
    # @param page_request  (optional parameter)
    # @return [nil]
    def rotate_document_page(account_id, document_id, envelope_id, page_number, page_request)
      rotate_document_page_with_http_info(account_id, document_id, envelope_id, page_number,  page_request)
      return nil
    end

    # Rotates page image from an envelope for display.
    # Rotates page image from an envelope for display. The page image can be rotated to the left or right.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param page_number The page number being accessed.
    # @param page_request  (optional parameter)
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def rotate_document_page_with_http_info(account_id, document_id, envelope_id, page_number, page_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.rotate_document_page ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.rotate_document_page" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.rotate_document_page" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.rotate_document_page" if envelope_id.nil?
      # verify the required parameter 'page_number' is set
      fail ArgumentError, "Missing the required parameter 'page_number' when calling EnvelopesApi.rotate_document_page" if page_number.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/pages/{pageNumber}/page_image".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'pageNumber' + '}', page_number.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(page_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)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#rotate_document_page\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Send Draft Envelope/Void Envelope/Move/Purge Envelope/Modify draft
    # The Put Envelopes endpoint provides the following functionality:  * Sends the specified single draft envelope. Add {\"status\":\"sent\"} to the request body to send the envelope.  * Voids the specified in-process envelope. Add {\"status\":\"voided\", \"voidedReason\":\"The reason for voiding the envelope\"} to the request body to void the envelope.  * Replaces the current email subject and message for a draft envelope. Add {\"emailSubject\":\"subject\",  \"emailBlurb\":\"message\"}  to the request body to modify the subject and message.  * Place the envelope documents and envelope metadata in a purge queue so that this information is removed from the DocuSign system. Add {\"purgeState\":\"purge type\"} to the request body.  *Additional information on purging documents*  The purge request can only be used for completed envelopes that are not marked as the authoritative copy. The requesting user must have permission to purge documents and must be the sender (the requesting user can act as the sender using Send On Behalf Of).  ###### Note: If you have set the Document Retention policy on your account, envelope documents are automatically placed in the purge queue and the warning emails are sent at the end of the retention period.  ###### Note: You can set the Document Retention policy in the Classic DocuSign Experience by specifying the number of days to retain documents.  ###### Note: Setting a Document Retention policy is the same as setting a schedule for purging documents.  When the purge request is initiated the envelope documents, or documents and envelope metadata, are placed in a purge queue for deletion in 14 days. A warning email notification is sent to the sender and recipients associated with the envelope, notifying them that the envelope documents will be deleted in 14 days and providing a link to the documents. A second email is sent 7 days later with the same message. At the end of the 14-day period, the envelope documents are deleted from the system.  If `purgeState=\"documents_queued\"` is used in the request, then only the documents are deleted and any corresponding attachments and tabs remain in the DocuSign system. If `purgeState= \"documents_and_metadata_queued\"` is used in the request, then the documents, attachments, and tabs are deleted.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope  (optional parameter)
    # @param DocuSign_eSign::UpdateOptions Options for modifying the behavior of the function.
    # @return [EnvelopeUpdateSummary]
    def update(account_id, envelope_id, envelope, options = DocuSign_eSign::UpdateOptions.default)
      data, _status_code, _headers = update_with_http_info(account_id, envelope_id,  envelope, options)
      return data
    end

    # Send Draft Envelope/Void Envelope/Move/Purge Envelope/Modify draft
    # The Put Envelopes endpoint provides the following functionality:  * Sends the specified single draft envelope. Add {\&quot;status\&quot;:\&quot;sent\&quot;} to the request body to send the envelope.  * Voids the specified in-process envelope. Add {\&quot;status\&quot;:\&quot;voided\&quot;, \&quot;voidedReason\&quot;:\&quot;The reason for voiding the envelope\&quot;} to the request body to void the envelope.  * Replaces the current email subject and message for a draft envelope. Add {\&quot;emailSubject\&quot;:\&quot;subject\&quot;,  \&quot;emailBlurb\&quot;:\&quot;message\&quot;}  to the request body to modify the subject and message.  * Place the envelope documents and envelope metadata in a purge queue so that this information is removed from the DocuSign system. Add {\&quot;purgeState\&quot;:\&quot;purge type\&quot;} to the request body.  *Additional information on purging documents*  The purge request can only be used for completed envelopes that are not marked as the authoritative copy. The requesting user must have permission to purge documents and must be the sender (the requesting user can act as the sender using Send On Behalf Of).  ###### Note: If you have set the Document Retention policy on your account, envelope documents are automatically placed in the purge queue and the warning emails are sent at the end of the retention period.  ###### Note: You can set the Document Retention policy in the Classic DocuSign Experience by specifying the number of days to retain documents.  ###### Note: Setting a Document Retention policy is the same as setting a schedule for purging documents.  When the purge request is initiated the envelope documents, or documents and envelope metadata, are placed in a purge queue for deletion in 14 days. A warning email notification is sent to the sender and recipients associated with the envelope, notifying them that the envelope documents will be deleted in 14 days and providing a link to the documents. A second email is sent 7 days later with the same message. At the end of the 14-day period, the envelope documents are deleted from the system.  If &#x60;purgeState&#x3D;\&quot;documents_queued\&quot;&#x60; is used in the request, then only the documents are deleted and any corresponding attachments and tabs remain in the DocuSign system. If &#x60;purgeState&#x3D; \&quot;documents_and_metadata_queued\&quot;&#x60; is used in the request, then the documents, attachments, and tabs are deleted.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope  (optional parameter)
    # @param DocuSign_eSign::UpdateOptions Options for modifying the behavior of the function.
    # @return [Array<(EnvelopeUpdateSummary, Fixnum, Hash)>] EnvelopeUpdateSummary data, response status code and response headers
    def update_with_http_info(account_id, envelope_id, envelope, options = DocuSign_eSign::UpdateOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'advanced_update'] = options.advanced_update if !options.advanced_update.nil?
      query_params[:'recycle_on_void'] = options.recycle_on_void if !options.recycle_on_void.nil?
      query_params[:'resend_envelope'] = options.resend_envelope if !options.resend_envelope.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(envelope)
      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 => 'EnvelopeUpdateSummary')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Integrity-Check and Commit a ChunkedUpload, readying it for use elsewhere.
    # This method checks the integrity of a chunked upload and then commits it. When this request is successful, the chunked upload is then ready to be referenced in other API calls.  If the request is unsuccessful, ensure that you have uploaded all of the parts by using the Update method.  **Note:** After you commit a chunked upload, it no longer accepts additional parts.
    # @param account_id The external account number (int) or account ID Guid.
    # @param chunked_upload_id 
    # @param DocuSign_eSign::UpdateChunkedUploadOptions Options for modifying the behavior of the function.
    # @return [ChunkedUploadResponse]
    def update_chunked_upload(account_id, chunked_upload_id, options = DocuSign_eSign::UpdateChunkedUploadOptions.default)
      data, _status_code, _headers = update_chunked_upload_with_http_info(account_id, chunked_upload_id, options)
      return data
    end

    # Integrity-Check and Commit a ChunkedUpload, readying it for use elsewhere.
    # This method checks the integrity of a chunked upload and then commits it. When this request is successful, the chunked upload is then ready to be referenced in other API calls.  If the request is unsuccessful, ensure that you have uploaded all of the parts by using the Update method.  **Note:** After you commit a chunked upload, it no longer accepts additional parts.
    # @param account_id The external account number (int) or account ID Guid.
    # @param chunked_upload_id 
    # @param DocuSign_eSign::UpdateChunkedUploadOptions Options for modifying the behavior of the function.
    # @return [Array<(ChunkedUploadResponse, Fixnum, Hash)>] ChunkedUploadResponse data, response status code and response headers
    def update_chunked_upload_with_http_info(account_id, chunked_upload_id, options = DocuSign_eSign::UpdateChunkedUploadOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_chunked_upload ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_chunked_upload" if account_id.nil?
      # verify the required parameter 'chunked_upload_id' is set
      fail ArgumentError, "Missing the required parameter 'chunked_upload_id' when calling EnvelopesApi.update_chunked_upload" if chunked_upload_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/chunked_uploads/{chunkedUploadId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'chunkedUploadId' + '}', chunked_upload_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'action'] = options.action if !options.action.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(: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 => 'ChunkedUploadResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_chunked_upload\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Add a chunk, a chunk 'part', to an existing ChunkedUpload.
    # Adds a chunk or part to an existing chunked upload. After you use the Create method to initiate a new chunked upload and upload the first part,  use this method to upload subsequent parts.  For simplicity, DocuSign recommends that you upload the parts in their sequential order ( 1,2, 3, 4, etc.). The Create method adds the first part and assigns it the `sequence` value `0`. As a result, DocuSign recommends that you start with a `sequence` value of `1` when you use this method, and continue uploading parts contiguously until you have uploaded the entirety of the original content to DocuSign.  Example:   ``` PUT /v2.1/accounts/{accountId}/chunked_uploads/{chunkedUploadId}/1 PUT /v2.1/accounts/{accountId}/chunked_uploads/{chunkedUploadId}/2 PUT /v2.1/accounts/{accountId}/chunked_uploads/{chunkedUploadId}/3 ```  **Note:** You cannot replace a part that DocuSign has already received, or add parts to a chunked upload that is already successfully committed.
    # @param account_id The external account number (int) or account ID Guid.
    # @param chunked_upload_id 
    # @param chunked_upload_part_seq 
    # @param chunked_upload_request  (optional parameter)
    # @return [ChunkedUploadResponse]
    def update_chunked_upload_part(account_id, chunked_upload_id, chunked_upload_part_seq, chunked_upload_request)
      data, _status_code, _headers = update_chunked_upload_part_with_http_info(account_id, chunked_upload_id, chunked_upload_part_seq,  chunked_upload_request)
      return data
    end

    # Add a chunk, a chunk &#39;part&#39;, to an existing ChunkedUpload.
    # Adds a chunk or part to an existing chunked upload. After you use the Create method to initiate a new chunked upload and upload the first part,  use this method to upload subsequent parts.  For simplicity, DocuSign recommends that you upload the parts in their sequential order ( 1,2, 3, 4, etc.). The Create method adds the first part and assigns it the &#x60;sequence&#x60; value &#x60;0&#x60;. As a result, DocuSign recommends that you start with a &#x60;sequence&#x60; value of &#x60;1&#x60; when you use this method, and continue uploading parts contiguously until you have uploaded the entirety of the original content to DocuSign.  Example:   &#x60;&#x60;&#x60; PUT /v2.1/accounts/{accountId}/chunked_uploads/{chunkedUploadId}/1 PUT /v2.1/accounts/{accountId}/chunked_uploads/{chunkedUploadId}/2 PUT /v2.1/accounts/{accountId}/chunked_uploads/{chunkedUploadId}/3 &#x60;&#x60;&#x60;  **Note:** You cannot replace a part that DocuSign has already received, or add parts to a chunked upload that is already successfully committed.
    # @param account_id The external account number (int) or account ID Guid.
    # @param chunked_upload_id 
    # @param chunked_upload_part_seq 
    # @param chunked_upload_request  (optional parameter)
    # @return [Array<(ChunkedUploadResponse, Fixnum, Hash)>] ChunkedUploadResponse data, response status code and response headers
    def update_chunked_upload_part_with_http_info(account_id, chunked_upload_id, chunked_upload_part_seq, chunked_upload_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_chunked_upload_part ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_chunked_upload_part" if account_id.nil?
      # verify the required parameter 'chunked_upload_id' is set
      fail ArgumentError, "Missing the required parameter 'chunked_upload_id' when calling EnvelopesApi.update_chunked_upload_part" if chunked_upload_id.nil?
      # verify the required parameter 'chunked_upload_part_seq' is set
      fail ArgumentError, "Missing the required parameter 'chunked_upload_part_seq' when calling EnvelopesApi.update_chunked_upload_part" if chunked_upload_part_seq.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/chunked_uploads/{chunkedUploadId}/{chunkedUploadPartSeq}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'chunkedUploadId' + '}', chunked_upload_id.to_s).sub('{' + 'chunkedUploadPartSeq' + '}', chunked_upload_part_seq.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(chunked_upload_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 => 'ChunkedUploadResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_chunked_upload_part\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates envelope custom fields in an envelope.
    # Updates the envelope custom fields in draft and in-process envelopes.  Each custom field used in an envelope must have a unique name. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param custom_fields  (optional parameter)
    # @return [CustomFields]
    def update_custom_fields(account_id, envelope_id, custom_fields)
      data, _status_code, _headers = update_custom_fields_with_http_info(account_id, envelope_id,  custom_fields)
      return data
    end

    # Updates envelope custom fields in an envelope.
    # Updates the envelope custom fields in draft and in-process envelopes.  Each custom field used in an envelope must have a unique name. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param custom_fields  (optional parameter)
    # @return [Array<(CustomFields, Fixnum, Hash)>] CustomFields data, response status code and response headers
    def update_custom_fields_with_http_info(account_id, envelope_id, custom_fields)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_custom_fields ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_custom_fields" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_custom_fields" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/custom_fields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(custom_fields)
      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: EnvelopesApi#update_custom_fields\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Adds a document to an existing draft envelope.
    # Adds a document to an existing draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_file_bytes Updated document content. 
    # @return [EnvelopeDocument]
    def update_document(account_id, document_id, envelope_id, document_file_bytes)
      data, _status_code, _headers = update_document_with_http_info(account_id, document_id, envelope_id,  document_file_bytes)
      return data
    end

    # Adds a document to an existing draft envelope.
    # Adds a document to an existing draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_file_bytes Updated document content. 
    # @return [Array<(EnvelopeDocument, Fixnum, Hash)>] EnvelopeDocument data, response status code and response headers
    def update_document_with_http_info(account_id, document_id, envelope_id, document_file_bytes)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_document ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_document" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.update_document" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_document" if envelope_id.nil?
      # verify the required parameter 'document_file_bytes' is set
      fail ArgumentError, "Missing the required parameter 'document_file_bytes' when calling EnvelopesApi.update_document" if document_file_bytes.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/pdf'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(document_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,
        :return_type => 'EnvelopeDocument')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_document\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates existing custom document fields in an existing envelope document.
    # Updates existing custom document fields in an existing envelope document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_fields_information  (optional parameter)
    # @return [DocumentFieldsInformation]
    def update_document_fields(account_id, document_id, envelope_id, document_fields_information)
      data, _status_code, _headers = update_document_fields_with_http_info(account_id, document_id, envelope_id,  document_fields_information)
      return data
    end

    # Updates existing custom document fields in an existing envelope document.
    # Updates existing custom document fields in an existing envelope document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_fields_information  (optional parameter)
    # @return [Array<(DocumentFieldsInformation, Fixnum, Hash)>] DocumentFieldsInformation data, response status code and response headers
    def update_document_fields_with_http_info(account_id, document_id, envelope_id, document_fields_information)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_document_fields ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_document_fields" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.update_document_fields" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_document_fields" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/fields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(document_fields_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 => 'DocumentFieldsInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_document_fields\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the tabs for an envelope document
    # Updates tabs in the document specified by `documentId` in the envelope specified by `envelopeId`. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param tabs  (optional parameter)
    # @return [Tabs]
    def update_document_tabs(account_id, document_id, envelope_id, tabs)
      data, _status_code, _headers = update_document_tabs_with_http_info(account_id, document_id, envelope_id,  tabs)
      return data
    end

    # Updates the tabs for an envelope document
    # Updates tabs in the document specified by &#x60;documentId&#x60; in the envelope specified by &#x60;envelopeId&#x60;. 
    # @param account_id The external account number (int) or account ID Guid.
    # @param document_id The ID of the document being accessed.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param tabs  (optional parameter)
    # @return [Array<(Tabs, Fixnum, Hash)>] Tabs data, response status code and response headers
    def update_document_tabs_with_http_info(account_id, document_id, envelope_id, tabs)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_document_tabs ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_document_tabs" if account_id.nil?
      # verify the required parameter 'document_id' is set
      fail ArgumentError, "Missing the required parameter 'document_id' when calling EnvelopesApi.update_document_tabs" if document_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_document_tabs" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}/tabs".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'documentId' + '}', document_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(tabs)
      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 => 'Tabs')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_document_tabs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Adds one or more documents to an existing envelope document.
    # Adds one or more documents to an existing envelope document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_definition  (optional parameter)
    # @return [EnvelopeDocumentsResult]
    def update_documents(account_id, envelope_id, envelope_definition)
      data, _status_code, _headers = update_documents_with_http_info(account_id, envelope_id,  envelope_definition)
      return data
    end

    # Adds one or more documents to an existing envelope document.
    # Adds one or more documents to an existing envelope document.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_definition  (optional parameter)
    # @return [Array<(EnvelopeDocumentsResult, Fixnum, Hash)>] EnvelopeDocumentsResult data, response status code and response headers
    def update_documents_with_http_info(account_id, envelope_id, envelope_definition)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_documents ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_documents" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_documents" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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_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 => 'EnvelopeDocumentsResult')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_documents\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the email setting overrides for an envelope.
    # Updates the existing email override settings for the specified envelope. Note that modifying email settings will only affect email communications that occur after the modification was made.  This can also be used to delete an individual email override setting by using an empty string for the value to be deleted.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param email_settings  (optional parameter)
    # @return [EmailSettings]
    def update_email_settings(account_id, envelope_id, email_settings)
      data, _status_code, _headers = update_email_settings_with_http_info(account_id, envelope_id,  email_settings)
      return data
    end

    # Updates the email setting overrides for an envelope.
    # Updates the existing email override settings for the specified envelope. Note that modifying email settings will only affect email communications that occur after the modification was made.  This can also be used to delete an individual email override setting by using an empty string for the value to be deleted.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param email_settings  (optional parameter)
    # @return [Array<(EmailSettings, Fixnum, Hash)>] EmailSettings data, response status code and response headers
    def update_email_settings_with_http_info(account_id, envelope_id, email_settings)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_email_settings ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_email_settings" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_email_settings" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/email_settings".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(email_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 => 'EmailSettings')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_email_settings\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the delayed routing rules for an envelope's workflow step definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @param delayed_routing  (optional parameter)
    # @return [DelayedRouting]
    def update_envelope_delayed_routing_definition(account_id, envelope_id, workflow_step_id, delayed_routing)
      data, _status_code, _headers = update_envelope_delayed_routing_definition_with_http_info(account_id, envelope_id, workflow_step_id,  delayed_routing)
      return data
    end

    # Updates the delayed routing rules for an envelope&#39;s workflow step definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @param delayed_routing  (optional parameter)
    # @return [Array<(DelayedRouting, Fixnum, Hash)>] DelayedRouting data, response status code and response headers
    def update_envelope_delayed_routing_definition_with_http_info(account_id, envelope_id, workflow_step_id, delayed_routing)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_envelope_delayed_routing_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_envelope_delayed_routing_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_envelope_delayed_routing_definition" if envelope_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.update_envelope_delayed_routing_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow/steps/{workflowStepId}/delayedRouting".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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(delayed_routing)
      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 => 'DelayedRouting')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_envelope_delayed_routing_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates formfields for an envelope
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param doc_gen_form_field_request  (optional parameter)
    # @param DocuSign_eSign::UpdateEnvelopeDocGenFormFieldsOptions Options for modifying the behavior of the function.
    # @return [DocGenFormFieldResponse]
    def update_envelope_doc_gen_form_fields(account_id, envelope_id, doc_gen_form_field_request, options = DocuSign_eSign::UpdateEnvelopeDocGenFormFieldsOptions.default)
      data, _status_code, _headers = update_envelope_doc_gen_form_fields_with_http_info(account_id, envelope_id,  doc_gen_form_field_request, options)
      return data
    end

    # Updates formfields for an envelope
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param doc_gen_form_field_request  (optional parameter)
    # @param DocuSign_eSign::UpdateEnvelopeDocGenFormFieldsOptions Options for modifying the behavior of the function.
    # @return [Array<(DocGenFormFieldResponse, Fixnum, Hash)>] DocGenFormFieldResponse data, response status code and response headers
    def update_envelope_doc_gen_form_fields_with_http_info(account_id, envelope_id, doc_gen_form_field_request, options = DocuSign_eSign::UpdateEnvelopeDocGenFormFieldsOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_envelope_doc_gen_form_fields ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_envelope_doc_gen_form_fields" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_envelope_doc_gen_form_fields" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/docGenFormFields".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'update_docgen_formfields_only'] = options.update_docgen_formfields_only if !options.update_docgen_formfields_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(doc_gen_form_field_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 => 'DocGenFormFieldResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_envelope_doc_gen_form_fields\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the scheduled sending rules for an envelope's workflow definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param scheduled_sending  (optional parameter)
    # @return [ScheduledSending]
    def update_envelope_scheduled_sending_definition(account_id, envelope_id, scheduled_sending)
      data, _status_code, _headers = update_envelope_scheduled_sending_definition_with_http_info(account_id, envelope_id,  scheduled_sending)
      return data
    end

    # Updates the scheduled sending rules for an envelope&#39;s workflow definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param scheduled_sending  (optional parameter)
    # @return [Array<(ScheduledSending, Fixnum, Hash)>] ScheduledSending data, response status code and response headers
    def update_envelope_scheduled_sending_definition_with_http_info(account_id, envelope_id, scheduled_sending)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_envelope_scheduled_sending_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_envelope_scheduled_sending_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_envelope_scheduled_sending_definition" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow/scheduledSending".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(scheduled_sending)
      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 => 'ScheduledSending')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_envelope_scheduled_sending_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update an envelope transfer rule for an account.
    # This method changes the status of an envelope transfer rule. You use this method to change whether or not the rule is enabled.  You must include the `envelopeTransferRuleId` both as a query parameter, and in the request body.  **Note:** You cannot change any other information about the envelope transfer rule. Only Administrators can update an envelope transfer rule. In addition, to use envelope transfer rules, the **Transfer Custody** feature must be enabled for your account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_transfer_rule_id 
    # @param envelope_transfer_rule  (optional parameter)
    # @return [EnvelopeTransferRule]
    def update_envelope_transfer_rule(account_id, envelope_transfer_rule_id, envelope_transfer_rule)
      data, _status_code, _headers = update_envelope_transfer_rule_with_http_info(account_id, envelope_transfer_rule_id,  envelope_transfer_rule)
      return data
    end

    # Update an envelope transfer rule for an account.
    # This method changes the status of an envelope transfer rule. You use this method to change whether or not the rule is enabled.  You must include the &#x60;envelopeTransferRuleId&#x60; both as a query parameter, and in the request body.  **Note:** You cannot change any other information about the envelope transfer rule. Only Administrators can update an envelope transfer rule. In addition, to use envelope transfer rules, the **Transfer Custody** feature must be enabled for your account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_transfer_rule_id 
    # @param envelope_transfer_rule  (optional parameter)
    # @return [Array<(EnvelopeTransferRule, Fixnum, Hash)>] EnvelopeTransferRule data, response status code and response headers
    def update_envelope_transfer_rule_with_http_info(account_id, envelope_transfer_rule_id, envelope_transfer_rule)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_envelope_transfer_rule ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_envelope_transfer_rule" if account_id.nil?
      # verify the required parameter 'envelope_transfer_rule_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_transfer_rule_id' when calling EnvelopesApi.update_envelope_transfer_rule" if envelope_transfer_rule_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/transfer_rules/{envelopeTransferRuleId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeTransferRuleId' + '}', envelope_transfer_rule_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_transfer_rule)
      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 => 'EnvelopeTransferRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_envelope_transfer_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update envelope transfer rules for an account.
    # This method changes the status for one or more envelope transfer rules based on the `envelopeTransferRuleId`s in the request body. You use this method to change whether or not the rules are enabled.  **Note:** You cannot change any other information about the envelope transfer rule. Only Administrators can update envelope transfer rules. In addition, to use envelope transfer rules, the **Transfer Custody** feature must be enabled for your account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_transfer_rule_information  (optional parameter)
    # @return [EnvelopeTransferRuleInformation]
    def update_envelope_transfer_rules(account_id, envelope_transfer_rule_information)
      data, _status_code, _headers = update_envelope_transfer_rules_with_http_info(account_id,  envelope_transfer_rule_information)
      return data
    end

    # Update envelope transfer rules for an account.
    # This method changes the status for one or more envelope transfer rules based on the &#x60;envelopeTransferRuleId&#x60;s in the request body. You use this method to change whether or not the rules are enabled.  **Note:** You cannot change any other information about the envelope transfer rule. Only Administrators can update envelope transfer rules. In addition, to use envelope transfer rules, the **Transfer Custody** feature must be enabled for your account.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_transfer_rule_information  (optional parameter)
    # @return [Array<(EnvelopeTransferRuleInformation, Fixnum, Hash)>] EnvelopeTransferRuleInformation data, response status code and response headers
    def update_envelope_transfer_rules_with_http_info(account_id, envelope_transfer_rule_information)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_envelope_transfer_rules ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_envelope_transfer_rules" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/transfer_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(envelope_transfer_rule_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 => 'EnvelopeTransferRuleInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_envelope_transfer_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the envelope workflow definition for an envelope.
    # Updates the specified envelope's workflow definition if  it has one.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow  (optional parameter)
    # @return [Workflow]
    def update_envelope_workflow_definition(account_id, envelope_id, workflow)
      data, _status_code, _headers = update_envelope_workflow_definition_with_http_info(account_id, envelope_id,  workflow)
      return data
    end

    # Updates the envelope workflow definition for an envelope.
    # Updates the specified envelope&#39;s workflow definition if  it has one.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow  (optional parameter)
    # @return [Array<(Workflow, Fixnum, Hash)>] Workflow data, response status code and response headers
    def update_envelope_workflow_definition_with_http_info(account_id, envelope_id, workflow)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_envelope_workflow_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_envelope_workflow_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_envelope_workflow_definition" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(workflow)
      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 => 'Workflow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_envelope_workflow_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the envelope workflow step definition for an envelope.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @param workflow_step  (optional parameter)
    # @return [WorkflowStep]
    def update_envelope_workflow_step_definition(account_id, envelope_id, workflow_step_id, workflow_step)
      data, _status_code, _headers = update_envelope_workflow_step_definition_with_http_info(account_id, envelope_id, workflow_step_id,  workflow_step)
      return data
    end

    # Updates the envelope workflow step definition for an envelope.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param workflow_step_id 
    # @param workflow_step  (optional parameter)
    # @return [Array<(WorkflowStep, Fixnum, Hash)>] WorkflowStep data, response status code and response headers
    def update_envelope_workflow_step_definition_with_http_info(account_id, envelope_id, workflow_step_id, workflow_step)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_envelope_workflow_step_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_envelope_workflow_step_definition" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_envelope_workflow_step_definition" if envelope_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.update_envelope_workflow_step_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/workflow/steps/{workflowStepId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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(workflow_step)
      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 => 'WorkflowStep')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_envelope_workflow_step_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates an envelope lock.
    # Updates the lock duration time or update the `lockedByApp` property information for the specified envelope. The user and integrator key must match the user specified by the `lockByUser` property and integrator key information and the `X-DocuSign-Edit` header must be included or an error will be generated.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param lock_request  (optional parameter)
    # @return [LockInformation]
    def update_lock(account_id, envelope_id, lock_request)
      data, _status_code, _headers = update_lock_with_http_info(account_id, envelope_id,  lock_request)
      return data
    end

    # Updates an envelope lock.
    # Updates the lock duration time or update the &#x60;lockedByApp&#x60; property information for the specified envelope. The user and integrator key must match the user specified by the &#x60;lockByUser&#x60; property and integrator key information and the &#x60;X-DocuSign-Edit&#x60; header must be included or an error will be generated.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param lock_request  (optional parameter)
    # @return [Array<(LockInformation, Fixnum, Hash)>] LockInformation data, response status code and response headers
    def update_lock_with_http_info(account_id, envelope_id, lock_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_lock ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_lock" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_lock" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/lock".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(lock_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 => 'LockInformation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_lock\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Sets envelope notification (Reminders/Expirations) structure for an existing envelope.
    # This method sets the notifications (reminders and expirations) for an existing envelope. The request body sends a structure containing reminders and expirations settings. It also specifies whether to use the settings specified in the request, or the account default notification settings for the envelope.  Note that this request only specifies when notifications are sent; it does not initiate sending of email messages.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_notification_request  (optional parameter)
    # @return [Notification]
    def update_notification_settings(account_id, envelope_id, envelope_notification_request)
      data, _status_code, _headers = update_notification_settings_with_http_info(account_id, envelope_id,  envelope_notification_request)
      return data
    end

    # Sets envelope notification (Reminders/Expirations) structure for an existing envelope.
    # This method sets the notifications (reminders and expirations) for an existing envelope. The request body sends a structure containing reminders and expirations settings. It also specifies whether to use the settings specified in the request, or the account default notification settings for the envelope.  Note that this request only specifies when notifications are sent; it does not initiate sending of email messages.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param envelope_notification_request  (optional parameter)
    # @return [Array<(Notification, Fixnum, Hash)>] Notification data, response status code and response headers
    def update_notification_settings_with_http_info(account_id, envelope_id, envelope_notification_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_notification_settings ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_notification_settings" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_notification_settings" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/notification".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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_notification_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 => 'Notification')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_notification_settings\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates document visibility for the recipients
    # This method updates document visibility for a recipient.  **Note:** A document cannot be hidden from a recipient if the recipient has tabs assigned to them on the document. Carbon Copy, Certified Delivery (Needs to Sign), Editor, and Agent recipients can always see all documents.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param document_visibility_list  (optional parameter)
    # @return [DocumentVisibilityList]
    def update_recipient_document_visibility(account_id, envelope_id, recipient_id, document_visibility_list)
      data, _status_code, _headers = update_recipient_document_visibility_with_http_info(account_id, envelope_id, recipient_id,  document_visibility_list)
      return data
    end

    # Updates document visibility for the recipients
    # This method updates document visibility for a recipient.  **Note:** A document cannot be hidden from a recipient if the recipient has tabs assigned to them on the document. Carbon Copy, Certified Delivery (Needs to Sign), Editor, and Agent recipients can always see all documents.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param document_visibility_list  (optional parameter)
    # @return [Array<(DocumentVisibilityList, Fixnum, Hash)>] DocumentVisibilityList data, response status code and response headers
    def update_recipient_document_visibility_with_http_info(account_id, envelope_id, recipient_id, document_visibility_list)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_recipient_document_visibility ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_recipient_document_visibility" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_recipient_document_visibility" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.update_recipient_document_visibility" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/document_visibility".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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(document_visibility_list)
      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 => 'DocumentVisibilityList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_recipient_document_visibility\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Sets the initials image for an accountless signer.
    # Updates the initials image for a signer that does not have a DocuSign account. The supported image formats for this file are: gif, png, jpeg, and bmp. The file size must be less than 200K.  For the Authentication/Authorization for this call, the credentials must match the sender of the envelope, the recipient must be an accountless signer or in person signer. The account must have the `CanSendEnvelope` property set to **true** and the `ExpressSendOnly` property in `SendingUser` structure must be set to **false**.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [nil]
    def update_recipient_initials_image(account_id, envelope_id, recipient_id)
      update_recipient_initials_image_with_http_info(account_id, envelope_id, recipient_id)
      return nil
    end

    # Sets the initials image for an accountless signer.
    # Updates the initials image for a signer that does not have a DocuSign account. The supported image formats for this file are: gif, png, jpeg, and bmp. The file size must be less than 200K.  For the Authentication/Authorization for this call, the credentials must match the sender of the envelope, the recipient must be an accountless signer or in person signer. The account must have the &#x60;CanSendEnvelope&#x60; property set to **true** and the &#x60;ExpressSendOnly&#x60; property in &#x60;SendingUser&#x60; structure must be set to **false**.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def update_recipient_initials_image_with_http_info(account_id, envelope_id, recipient_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_recipient_initials_image ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_recipient_initials_image" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_recipient_initials_image" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.update_recipient_initials_image" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/initials_image".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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'])
      # 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)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_recipient_initials_image\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Sets the signature image for an accountless signer.
    # Updates the signature image for an accountless signer. The supported image formats for this file are: gif, png, jpeg, and bmp. The file size must be less than 200K.  For the Authentication/Authorization for this call, the credentials must match the sender of the envelope, the recipient must be an accountless signer or in person signer. The account must have the `CanSendEnvelope` property set to **true** and the `ExpressSendOnly` property in `SendingUser` structure must be set to **false**.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [nil]
    def update_recipient_signature_image(account_id, envelope_id, recipient_id)
      update_recipient_signature_image_with_http_info(account_id, envelope_id, recipient_id)
      return nil
    end

    # Sets the signature image for an accountless signer.
    # Updates the signature image for an accountless signer. The supported image formats for this file are: gif, png, jpeg, and bmp. The file size must be less than 200K.  For the Authentication/Authorization for this call, the credentials must match the sender of the envelope, the recipient must be an accountless signer or in person signer. The account must have the &#x60;CanSendEnvelope&#x60; property set to **true** and the &#x60;ExpressSendOnly&#x60; property in &#x60;SendingUser&#x60; structure must be set to **false**.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def update_recipient_signature_image_with_http_info(account_id, envelope_id, recipient_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_recipient_signature_image ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_recipient_signature_image" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_recipient_signature_image" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.update_recipient_signature_image" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/signature_image".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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'])
      # 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)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_recipient_signature_image\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates recipients in a draft envelope or corrects recipient information for an in process envelope.
    # Updates recipients in a draft envelope or corrects recipient information for an in process envelope.   For draft envelopes, you can edit the following properties: `email`, `userName`, `routingOrder`, `faxNumber`, `deliveryMethod`, `accessCode`, and `requireIdLookup`.  Once an envelope has been sent, you can only edit: `email`, `userName`, `signerName`, `routingOrder`, `faxNumber`, and `deliveryMethod`. You can also select to resend an envelope by using the `resend_envelope` option.  If you send information for a recipient that does not already exist in a draft envelope, the recipient is added to the envelope (similar to the POST).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipients  (optional parameter)
    # @param DocuSign_eSign::UpdateRecipientsOptions Options for modifying the behavior of the function.
    # @return [RecipientsUpdateSummary]
    def update_recipients(account_id, envelope_id, recipients, options = DocuSign_eSign::UpdateRecipientsOptions.default)
      data, _status_code, _headers = update_recipients_with_http_info(account_id, envelope_id,  recipients, options)
      return data
    end

    # Updates recipients in a draft envelope or corrects recipient information for an in process envelope.
    # Updates recipients in a draft envelope or corrects recipient information for an in process envelope.   For draft envelopes, you can edit the following properties: &#x60;email&#x60;, &#x60;userName&#x60;, &#x60;routingOrder&#x60;, &#x60;faxNumber&#x60;, &#x60;deliveryMethod&#x60;, &#x60;accessCode&#x60;, and &#x60;requireIdLookup&#x60;.  Once an envelope has been sent, you can only edit: &#x60;email&#x60;, &#x60;userName&#x60;, &#x60;signerName&#x60;, &#x60;routingOrder&#x60;, &#x60;faxNumber&#x60;, and &#x60;deliveryMethod&#x60;. You can also select to resend an envelope by using the &#x60;resend_envelope&#x60; option.  If you send information for a recipient that does not already exist in a draft envelope, the recipient is added to the envelope (similar to the POST).
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipients  (optional parameter)
    # @param DocuSign_eSign::UpdateRecipientsOptions Options for modifying the behavior of the function.
    # @return [Array<(RecipientsUpdateSummary, Fixnum, Hash)>] RecipientsUpdateSummary data, response status code and response headers
    def update_recipients_with_http_info(account_id, envelope_id, recipients, options = DocuSign_eSign::UpdateRecipientsOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_recipients ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_recipients" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_recipients" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'combine_same_order_recipients'] = options.combine_same_order_recipients if !options.combine_same_order_recipients.nil?
      query_params[:'offline_signing'] = options.offline_signing if !options.offline_signing.nil?
      query_params[:'resend_envelope'] = options.resend_envelope if !options.resend_envelope.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(recipients)
      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 => 'RecipientsUpdateSummary')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_recipients\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates document visibility for the recipients
    # This method updates document visibility for one or more recipients based on the `recipientId` and `visible` values that you include in the request body.  **Note:** A document cannot be hidden from a recipient if the recipient has tabs assigned to them on the document. Carbon Copy, Certified Delivery (Needs to Sign), Editor, and Agent recipients can always see all documents.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_visibility_list  (optional parameter)
    # @return [DocumentVisibilityList]
    def update_recipients_document_visibility(account_id, envelope_id, document_visibility_list)
      data, _status_code, _headers = update_recipients_document_visibility_with_http_info(account_id, envelope_id,  document_visibility_list)
      return data
    end

    # Updates document visibility for the recipients
    # This method updates document visibility for one or more recipients based on the &#x60;recipientId&#x60; and &#x60;visible&#x60; values that you include in the request body.  **Note:** A document cannot be hidden from a recipient if the recipient has tabs assigned to them on the document. Carbon Copy, Certified Delivery (Needs to Sign), Editor, and Agent recipients can always see all documents.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param document_visibility_list  (optional parameter)
    # @return [Array<(DocumentVisibilityList, Fixnum, Hash)>] DocumentVisibilityList data, response status code and response headers
    def update_recipients_document_visibility_with_http_info(account_id, envelope_id, document_visibility_list)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_recipients_document_visibility ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_recipients_document_visibility" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_recipients_document_visibility" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/document_visibility".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(document_visibility_list)
      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 => 'DocumentVisibilityList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_recipients_document_visibility\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the tabs for a recipient.  
    # Updates one or more tabs for a recipient in a draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param tabs  (optional parameter)
    # @return [Tabs]
    def update_tabs(account_id, envelope_id, recipient_id, tabs)
      data, _status_code, _headers = update_tabs_with_http_info(account_id, envelope_id, recipient_id,  tabs)
      return data
    end

    # Updates the tabs for a recipient.  
    # Updates one or more tabs for a recipient in a draft envelope.
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @param recipient_id The ID of the recipient being accessed.
    # @param tabs  (optional parameter)
    # @return [Array<(Tabs, Fixnum, Hash)>] Tabs data, response status code and response headers
    def update_tabs_with_http_info(account_id, envelope_id, recipient_id, tabs)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_tabs ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_tabs" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_tabs" if envelope_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.update_tabs" if recipient_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/tabs".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_id.to_s).sub('{' + 'recipientId' + '}', recipient_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(tabs)
      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 => 'Tabs')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_tabs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update encrypted tabs for envelope.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [nil]
    def update_tabs_blob(account_id, envelope_id)
      update_tabs_blob_with_http_info(account_id, envelope_id)
      return nil
    end

    # Update encrypted tabs for envelope.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param envelope_id The envelopeId Guid of the envelope being accessed.
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def update_tabs_blob_with_http_info(account_id, envelope_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_tabs_blob ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_tabs_blob" if account_id.nil?
      # verify the required parameter 'envelope_id' is set
      fail ArgumentError, "Missing the required parameter 'envelope_id' when calling EnvelopesApi.update_tabs_blob" if envelope_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/envelopes/{envelopeId}/tabs_blob".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'envelopeId' + '}', envelope_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(: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: EnvelopesApi#update_tabs_blob\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the delayed routing rules for a template's workflow step definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @param delayed_routing  (optional parameter)
    # @return [DelayedRouting]
    def update_template_delayed_routing_definition(account_id, template_id, workflow_step_id, delayed_routing)
      data, _status_code, _headers = update_template_delayed_routing_definition_with_http_info(account_id, template_id, workflow_step_id,  delayed_routing)
      return data
    end

    # Updates the delayed routing rules for a template&#39;s workflow step definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @param delayed_routing  (optional parameter)
    # @return [Array<(DelayedRouting, Fixnum, Hash)>] DelayedRouting data, response status code and response headers
    def update_template_delayed_routing_definition_with_http_info(account_id, template_id, workflow_step_id, delayed_routing)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_template_delayed_routing_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_template_delayed_routing_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.update_template_delayed_routing_definition" if template_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.update_template_delayed_routing_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow/steps/{workflowStepId}/delayedRouting".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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(delayed_routing)
      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 => 'DelayedRouting')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_template_delayed_routing_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates document visibility for the recipients
    # This method updates the document visibility for a template recipient.  **Note:** A document cannot be hidden from a recipient if the recipient has tabs assigned to them on the document. Carbon Copy, Certified Delivery (Needs to Sign), Editor, and Agent recipients can always see all documents.
    # @param account_id The external account number (int) or account ID Guid.
    # @param recipient_id The ID of the recipient being accessed.
    # @param template_id The ID of the template being accessed.
    # @param template_document_visibility_list  (optional parameter)
    # @return [TemplateDocumentVisibilityList]
    def update_template_recipient_document_visibility(account_id, recipient_id, template_id, template_document_visibility_list)
      data, _status_code, _headers = update_template_recipient_document_visibility_with_http_info(account_id, recipient_id, template_id,  template_document_visibility_list)
      return data
    end

    # Updates document visibility for the recipients
    # This method updates the document visibility for a template recipient.  **Note:** A document cannot be hidden from a recipient if the recipient has tabs assigned to them on the document. Carbon Copy, Certified Delivery (Needs to Sign), Editor, and Agent recipients can always see all documents.
    # @param account_id The external account number (int) or account ID Guid.
    # @param recipient_id The ID of the recipient being accessed.
    # @param template_id The ID of the template being accessed.
    # @param template_document_visibility_list  (optional parameter)
    # @return [Array<(TemplateDocumentVisibilityList, Fixnum, Hash)>] TemplateDocumentVisibilityList data, response status code and response headers
    def update_template_recipient_document_visibility_with_http_info(account_id, recipient_id, template_id, template_document_visibility_list)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_template_recipient_document_visibility ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_template_recipient_document_visibility" if account_id.nil?
      # verify the required parameter 'recipient_id' is set
      fail ArgumentError, "Missing the required parameter 'recipient_id' when calling EnvelopesApi.update_template_recipient_document_visibility" if recipient_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.update_template_recipient_document_visibility" if template_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/recipients/{recipientId}/document_visibility".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'recipientId' + '}', recipient_id.to_s).sub('{' + 'templateId' + '}', template_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(template_document_visibility_list)
      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 => 'TemplateDocumentVisibilityList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_template_recipient_document_visibility\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates document visibility for the recipients
    # This method updates document visibility for one or more template recipients based on the `recipientId` and `visible` values that you include in the request body.   **Note:** A document cannot be hidden from a recipient if the recipient has tabs assigned to them on the document. Carbon Copy, Certified Delivery (Needs to Sign), Editor, and Agent recipients can always see all documents.
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param template_document_visibility_list  (optional parameter)
    # @return [TemplateDocumentVisibilityList]
    def update_template_recipients_document_visibility(account_id, template_id, template_document_visibility_list)
      data, _status_code, _headers = update_template_recipients_document_visibility_with_http_info(account_id, template_id,  template_document_visibility_list)
      return data
    end

    # Updates document visibility for the recipients
    # This method updates document visibility for one or more template recipients based on the &#x60;recipientId&#x60; and &#x60;visible&#x60; values that you include in the request body.   **Note:** A document cannot be hidden from a recipient if the recipient has tabs assigned to them on the document. Carbon Copy, Certified Delivery (Needs to Sign), Editor, and Agent recipients can always see all documents.
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param template_document_visibility_list  (optional parameter)
    # @return [Array<(TemplateDocumentVisibilityList, Fixnum, Hash)>] TemplateDocumentVisibilityList data, response status code and response headers
    def update_template_recipients_document_visibility_with_http_info(account_id, template_id, template_document_visibility_list)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_template_recipients_document_visibility ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_template_recipients_document_visibility" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.update_template_recipients_document_visibility" if template_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/recipients/document_visibility".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_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(template_document_visibility_list)
      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 => 'TemplateDocumentVisibilityList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_template_recipients_document_visibility\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the scheduled sending rules for a template's workflow definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param scheduled_sending  (optional parameter)
    # @return [ScheduledSending]
    def update_template_scheduled_sending_definition(account_id, template_id, scheduled_sending)
      data, _status_code, _headers = update_template_scheduled_sending_definition_with_http_info(account_id, template_id,  scheduled_sending)
      return data
    end

    # Updates the scheduled sending rules for a template&#39;s workflow definition.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param scheduled_sending  (optional parameter)
    # @return [Array<(ScheduledSending, Fixnum, Hash)>] ScheduledSending data, response status code and response headers
    def update_template_scheduled_sending_definition_with_http_info(account_id, template_id, scheduled_sending)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_template_scheduled_sending_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_template_scheduled_sending_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.update_template_scheduled_sending_definition" if template_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow/scheduledSending".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_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(scheduled_sending)
      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 => 'ScheduledSending')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_template_scheduled_sending_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the workflow definition for a template.
    # Updates the specified template's workflow definition if  it has one.
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow  (optional parameter)
    # @return [Workflow]
    def update_template_workflow_definition(account_id, template_id, workflow)
      data, _status_code, _headers = update_template_workflow_definition_with_http_info(account_id, template_id,  workflow)
      return data
    end

    # Updates the workflow definition for a template.
    # Updates the specified template&#39;s workflow definition if  it has one.
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow  (optional parameter)
    # @return [Array<(Workflow, Fixnum, Hash)>] Workflow data, response status code and response headers
    def update_template_workflow_definition_with_http_info(account_id, template_id, workflow)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_template_workflow_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_template_workflow_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.update_template_workflow_definition" if template_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_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(workflow)
      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 => 'Workflow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_template_workflow_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates the template workflow step definition for an envelope.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @param workflow_step  (optional parameter)
    # @return [WorkflowStep]
    def update_template_workflow_step_definition(account_id, template_id, workflow_step_id, workflow_step)
      data, _status_code, _headers = update_template_workflow_step_definition_with_http_info(account_id, template_id, workflow_step_id,  workflow_step)
      return data
    end

    # Updates the template workflow step definition for an envelope.
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param template_id The ID of the template being accessed.
    # @param workflow_step_id 
    # @param workflow_step  (optional parameter)
    # @return [Array<(WorkflowStep, Fixnum, Hash)>] WorkflowStep data, response status code and response headers
    def update_template_workflow_step_definition_with_http_info(account_id, template_id, workflow_step_id, workflow_step)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: EnvelopesApi.update_template_workflow_step_definition ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling EnvelopesApi.update_template_workflow_step_definition" if account_id.nil?
      # verify the required parameter 'template_id' is set
      fail ArgumentError, "Missing the required parameter 'template_id' when calling EnvelopesApi.update_template_workflow_step_definition" if template_id.nil?
      # verify the required parameter 'workflow_step_id' is set
      fail ArgumentError, "Missing the required parameter 'workflow_step_id' when calling EnvelopesApi.update_template_workflow_step_definition" if workflow_step_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/templates/{templateId}/workflow/steps/{workflowStepId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'templateId' + '}', template_id.to_s).sub('{' + 'workflowStepId' + '}', workflow_step_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(workflow_step)
      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 => 'WorkflowStep')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: EnvelopesApi#update_template_workflow_step_definition\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end