=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 GetBulkSendBatchEnvelopesOptions
    # 
    attr_accessor :count

    # 
    attr_accessor :include

    # 
    attr_accessor :order

    # 
    attr_accessor :order_by

    # 
    attr_accessor :search_text

    # 
    attr_accessor :start_position

    # 
    attr_accessor :status

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

  class GetBulkSendBatchesOptions
    # 
    attr_accessor :batch_ids

    # 
    attr_accessor :count

    # 
    attr_accessor :from_date

    # 
    attr_accessor :search_text

    # 
    attr_accessor :start_position

    # 
    attr_accessor :status

    # 
    attr_accessor :to_date

    # 
    attr_accessor :user_id

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


  class BulkEnvelopesApi
    attr_accessor :api_client

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

    # Creates a new bulk send list
    # This method creates a bulk send list that you can use to send an envelope to up to 1,000 recipients at once.  ### Related topics  - [How to bulk send envelopes](/docs/esign-rest-api/how-to/bulk-send-envelopes/)  ### Errors  | Error code                                              | Description                                                                                                                                                                                                                                                                              | | :------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | BULK_SEND_MAX_COPIES_EXCEEDED                           | A bulk sending list cannot specify more than XXX copies in the mailing list. Call the settings API endpoint to find the maximum number of copies in a batch allowed for your account. In almost all cases, the default limit is 1000.                                                    | | BULK_SEND_RECIPIENT_IDS_MUST_BE_UNIQUE                  | No two recipientIds can be same within a bulkCopy. Same restriction as a regular envelope applies. Specify unique recipient IDs for each recipient within a bulkCopy (model for envelope in mailing list).                                                                               | | BULK_SEND_RECIPIENT_ID_REQUIRED                         | If no RoleName is present, recipientID is required in mailing list's bulkCopy. Add a roleName (that coalesces with template/envelope) or a recipientID.                                                                                                                                  | | BULK_SEND_RECIPIENT_NAME_REQUIRED                       | Recipient {0} has no name. Specify a name for the recipient.                                                                                                                                                                                                                             | | BULK_SEND_EMAIL_ADDRESS_REQUIRED_FOR_EMAIL_RECIPIENT    | Recipient {0} is an email recipient with no email address. Specify an email for the email recipient.                                                                                                                                                                                     | | BULK_SEND_FAX_NUMBER_REQUIRED_FOR_FAX_RECIPIENT         | Recipient {0} is a fax recipient with no fax number. Specify a fax number for the fax recipient.                                                                                                                                                                                         | | BULK_SEND_FAX_NUMBER_NOT_VALID                          | Recipient {0} specifies fax number {1}, which is not valid. Specify a valid fax number for the fax recipient.                                                                                                                                                                            | | BULK_SEND_EMAIL_ADDRESS_NOT_VALID                       | Recipient {0} specifies email address {1}, which is not a valid email address.  Specify a valid email address for the recipient.                                                                                                                                                         | | BULK_SEND_PHONE_NUMBER_REQURED_FOR_SMS_AUTH             | Recipient {0} specifies SMS auth, but no number was provided. Specify a phone number for the SMS auth recipient.                                                                                                                                                                         | | BULK_SEND_PHONE_NUMBER_INVALID_FOR_SMS_AUTH             | Recipient {0} specifies phone number {1} for SMS auth, which is not valid. Specify a valid phone number for the SMS auth recipient.                                                                                                                                                      | | BULK_SEND_ROLE_NAMES_MUST_BE_UNIQUE                     | Recipient role names cannot be duplicated; role {duplicateRecipientRole} appears multiple times. Use unique roleNames for recipients.                                                                                                                                                    | | BULK_SEND_CANNOT_USE_BOTH_ROLE_AND_ID_ON_SAME_RECIPIENT | Recipients cannot have both ID and Role; {0} has both. Specify a roleName or recipientId, but not both for the same recipient.                                                                                                                                                           | | BULK_SEND_CANNOT_USE_BOTH_ROLE_AND_ID_IN_SAME_LIST      | Cannot use both recipient role and ID in the same list. Specify a roleName or recipientId, but not both in the same list.                                                                                                                                                                | | BULK_SEND_INVALID_ID_CHECK_CONFIGURATION                | Recipient {0} specified SMS authentication, but no SMS auth settings were provided. Provide an SMS auth setting (proper ID configuration) if SMS auth is specified.                                                                                                                      | | BULK_SEND_INVALID_SBS_INPUT_CONFIGURATION               | Recipient {0} has more than one signature provider specified. Or signingProviderName is not specified. Or Signature provider : {0} is either unknown or not an available pen for this account. One or more SBS configuration is missing or invalid. The error details provide specifics. | | BULK_SEND_TAB_LABELS_MUST_BE_UNIQUE                     | Tab label {0} is duplicated. Needs to be unique. Use a unique tab label.                                                                                                                                                                                                                 | | BULK_SEND_TAB_LABEL_REQUIRED                            | Tab label is required. Specify a tab label.                                                                                                                                                                                                                                              | | BULK_SEND_TAB_VALUE_REQUIRED                            | Tab Label value is required. Specify a value for the tab label.                                                                                                                                                                                                                          | | BULK_SEND_ENVELOPE_CUSTOM_FIELD_NAME_MUST_BE_UNIQUE     | Custom fields must have distinct names. The field {0} appears more than once in a copy. Use unique names for custom fields.                                                                                                                                                              | | BULK_SEND_ENVELOPE_CUSTOM_FIELD_NAME_REQUIRED           | All custom fields must have names. Specify a name for the custom field.                                                                                                                                                                                                                  | | BULK_SEND_ENVELOPE_CUSTOM_FIELD_VALUE_REQUIRED          | Custom field {0} has no value. A custom field can have an empty value, but it cannot have a null value. Specify a value for the custom field.                                                                                                                                            |
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_sending_list  (optional parameter)
    # @return [BulkSendingList]
    def create_bulk_send_list(account_id, bulk_sending_list)
      data, _status_code, _headers = create_bulk_send_list_with_http_info(account_id,  bulk_sending_list)
      return data
    end

    # Creates a new bulk send list
    # This method creates a bulk send list that you can use to send an envelope to up to 1,000 recipients at once.  ### Related topics  - [How to bulk send envelopes](/docs/esign-rest-api/how-to/bulk-send-envelopes/)  ### Errors  | Error code                                              | Description                                                                                                                                                                                                                                                                              | | :------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | BULK_SEND_MAX_COPIES_EXCEEDED                           | A bulk sending list cannot specify more than XXX copies in the mailing list. Call the settings API endpoint to find the maximum number of copies in a batch allowed for your account. In almost all cases, the default limit is 1000.                                                    | | BULK_SEND_RECIPIENT_IDS_MUST_BE_UNIQUE                  | No two recipientIds can be same within a bulkCopy. Same restriction as a regular envelope applies. Specify unique recipient IDs for each recipient within a bulkCopy (model for envelope in mailing list).                                                                               | | BULK_SEND_RECIPIENT_ID_REQUIRED                         | If no RoleName is present, recipientID is required in mailing list&#39;s bulkCopy. Add a roleName (that coalesces with template/envelope) or a recipientID.                                                                                                                                  | | BULK_SEND_RECIPIENT_NAME_REQUIRED                       | Recipient {0} has no name. Specify a name for the recipient.                                                                                                                                                                                                                             | | BULK_SEND_EMAIL_ADDRESS_REQUIRED_FOR_EMAIL_RECIPIENT    | Recipient {0} is an email recipient with no email address. Specify an email for the email recipient.                                                                                                                                                                                     | | BULK_SEND_FAX_NUMBER_REQUIRED_FOR_FAX_RECIPIENT         | Recipient {0} is a fax recipient with no fax number. Specify a fax number for the fax recipient.                                                                                                                                                                                         | | BULK_SEND_FAX_NUMBER_NOT_VALID                          | Recipient {0} specifies fax number {1}, which is not valid. Specify a valid fax number for the fax recipient.                                                                                                                                                                            | | BULK_SEND_EMAIL_ADDRESS_NOT_VALID                       | Recipient {0} specifies email address {1}, which is not a valid email address.  Specify a valid email address for the recipient.                                                                                                                                                         | | BULK_SEND_PHONE_NUMBER_REQURED_FOR_SMS_AUTH             | Recipient {0} specifies SMS auth, but no number was provided. Specify a phone number for the SMS auth recipient.                                                                                                                                                                         | | BULK_SEND_PHONE_NUMBER_INVALID_FOR_SMS_AUTH             | Recipient {0} specifies phone number {1} for SMS auth, which is not valid. Specify a valid phone number for the SMS auth recipient.                                                                                                                                                      | | BULK_SEND_ROLE_NAMES_MUST_BE_UNIQUE                     | Recipient role names cannot be duplicated; role {duplicateRecipientRole} appears multiple times. Use unique roleNames for recipients.                                                                                                                                                    | | BULK_SEND_CANNOT_USE_BOTH_ROLE_AND_ID_ON_SAME_RECIPIENT | Recipients cannot have both ID and Role; {0} has both. Specify a roleName or recipientId, but not both for the same recipient.                                                                                                                                                           | | BULK_SEND_CANNOT_USE_BOTH_ROLE_AND_ID_IN_SAME_LIST      | Cannot use both recipient role and ID in the same list. Specify a roleName or recipientId, but not both in the same list.                                                                                                                                                                | | BULK_SEND_INVALID_ID_CHECK_CONFIGURATION                | Recipient {0} specified SMS authentication, but no SMS auth settings were provided. Provide an SMS auth setting (proper ID configuration) if SMS auth is specified.                                                                                                                      | | BULK_SEND_INVALID_SBS_INPUT_CONFIGURATION               | Recipient {0} has more than one signature provider specified. Or signingProviderName is not specified. Or Signature provider : {0} is either unknown or not an available pen for this account. One or more SBS configuration is missing or invalid. The error details provide specifics. | | BULK_SEND_TAB_LABELS_MUST_BE_UNIQUE                     | Tab label {0} is duplicated. Needs to be unique. Use a unique tab label.                                                                                                                                                                                                                 | | BULK_SEND_TAB_LABEL_REQUIRED                            | Tab label is required. Specify a tab label.                                                                                                                                                                                                                                              | | BULK_SEND_TAB_VALUE_REQUIRED                            | Tab Label value is required. Specify a value for the tab label.                                                                                                                                                                                                                          | | BULK_SEND_ENVELOPE_CUSTOM_FIELD_NAME_MUST_BE_UNIQUE     | Custom fields must have distinct names. The field {0} appears more than once in a copy. Use unique names for custom fields.                                                                                                                                                              | | BULK_SEND_ENVELOPE_CUSTOM_FIELD_NAME_REQUIRED           | All custom fields must have names. Specify a name for the custom field.                                                                                                                                                                                                                  | | BULK_SEND_ENVELOPE_CUSTOM_FIELD_VALUE_REQUIRED          | Custom field {0} has no value. A custom field can have an empty value, but it cannot have a null value. Specify a value for the custom field.                                                                                                                                            |
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_sending_list  (optional parameter)
    # @return [Array<(BulkSendingList, Fixnum, Hash)>] BulkSendingList data, response status code and response headers
    def create_bulk_send_list_with_http_info(account_id, bulk_sending_list)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.create_bulk_send_list ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.create_bulk_send_list" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_lists".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(bulk_sending_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 => 'BulkSendingList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: BulkEnvelopesApi#create_bulk_send_list\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Uses the specified bulk send list to send the envelope specified in the payload
    # This method initiates the bulk send process. It generates a bulk send request based on an [existing bulk send list][create_list] and an envelope or template.  Consider using the [BulkSend::createBulkSendTestRequest][create_test] method to test your bulk send list for compatibility with the envelope or template that you want to send first. To learn about the complete bulk send flow, see the [Bulk Send overview][BulkSendOverview].  If the envelopes were successfully queued for asynchronous processing, the response contains a `batchId` that you can use to get the status of the batch. If a failure occurs, the API returns an error message.  **Note:** Partial success or failure generally does not occur. Only the entire batch is queued for asynchronous processing.  ### Related topics  - [How to bulk send envelopes](/docs/esign-rest-api/how-to/bulk-send-envelopes/)   ### Errors  This method returns the following errors:  | Error code                                                 | Description                                                                                                                                                                                                                                                                                            | | :--------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | BULK_SEND_ENVELOPE_NOT_IN_SENDABLE_STATE                   | Envelope {0} is not in a sendable state. The envelope is not complete. Make sure it has a sendable status, such as `created`.                                                                                                                                                                          | | BULK_SEND_ENVELOPE_LIST_CONTAINS_NO_COPIES                 | Cannot send an envelope with a bulk sending list which contains no copies.  The list you're trying to bulk send is empty. Make sure the bulk sending list you're using contains recipients.                                                                                                            | | BULK_SEND_ENVELOPE_LIST_CONTAINS_TOO_MANY_COPIES           | Bulk sending list contains more than {0} copies. The list you're trying to bulk send will cause your account to exceed the 1,000-copy limit imposed for all accounts. Try sending two or more separate lists.                                                                                          | | BULK_SEND_ENVELOPE_CANNOT_BE_NULL                          | Cannot send a bulk list without an envelope. Specify the envelope ID or template ID for the envelope you want to bulk send.                                                                                                                                                                            | | BULK_SEND_BLOB_STORE_ERROR                                 | Could not save copy of bulk sending list. An error writing to the database occurred. Try again. If the error persists, contact DocuSign Support.                                                                                                                                                       | | BULK_SEND_ACCOUNT_HAS_TOO_MANY_QUEUED_ENVELOPES            | Cannot send this bulk sending list because doing so would exceed the maximum of {maxCopies} in-flight envelopes. This account currently has {unprocessedEnvelopes} envelopes waiting to be processed. Please try again later.\" .Try again later, or contact DocuSign Support to request a higher tier. | | BULK_SEND_ENVELOPE_NOT_FOUND                               | Envelope {envelopeOrTemplateId} does not exist or you do not have permission to access it. The envelopeId or templateId specified could not be found. Specify a valid value.                                                                                                                           | | BULK_SEND_LIST_NOT_FOUND                                   | Bulk Sending list {listId} does not exist or you do not have permission to access it. The mailingListId specified could not be found. Specify a valid value.                                                                                                                                           | | BULK_SEND_ENVELOPE_HAS_NO_RECIPIENTS                       | Bulk sending copy contains recipients, but the specified envelope does not. The recipients on the envelope and the bulk send list do not match. Make sure the envelope and list are compatible for sending.                                                                                            | | BULK_SEND_RECIPIENT_ID_DOES_NOT_EXIST_IN_ENVELOPE          | Recipient {0} does not exist in the envelope. Add the missing recipient to the envelope.                                                                                                                                                                                                               | | BULK_SEND_RECIPIENT_ID_DOES_NOT_MATCH                      | Recipient ID {envelopeMember.ID} does not match. Make sure the recipient information in the list and the envelope match up.                                                                                                                                                                            | | BULK_SEND_ENVELOPE_HAS_BULK_RECIPIENT                      | Recipient {0} is a bulk recipient.  This is not supported. No legacy 'bulk recipient' allowed. In v2.1 of the eSignature API, you must use a bulk send list instead of a bulk recipient. See the API documentation for details.                                                                        | | BULK_SEND_RECIPIENT_ROLE_DOES_NOT_MATCH                    | Recipient Role {envelopeMember.RoleName} does not match. Make sure the recipient information in the list and the envelope is compatible.                                                                                                                                                               | | BULK_SEND_DUPLICATE_RECIPIENT_DETECTED                     | Duplicate recipients ({0}) not allowed, unless recipients have unique routing order specified on envelope.                                                                                                                                                                                             | | BULK_SEND_ENVELOPE_HAS_NO_TABS                             | Bulk sending copy contains tabs, but the specified envelope does not. List and envelope tabs cannot be coalesced. Make sure they are compatible for sending.                                                                                                                                           | | BULK_SEND_TAB_LABEL_DOES_NOT_EXIST_IN_ENVELOPE             | Tab with label {0} does not exist in envelope. Add the tab label to the envelope, remove the label from the list, or make sure you're specifying the correct list and envelope.                                                                                                                        | | BULK_SEND_TAB_DOES_NOT_MATCH                               | Tab {0} does not match {0} in envelope. A tab exists on the list that does not match or is missing on the envelope. Make sure the tabs on the list and the envelope match.                                                                                                                             | | BULK_SEND_ENVELOPE_HAS_NO_ENVELOPE_CUSTOM_FIELDS           | Bulk sending copy contains custom fields, but the specified envelope does not. There are custom fields on the list that the envelope does not have. Make sure that any custom fields on the list and the envelope match.                                                                               | | BULK_SEND_ENVELOPE_CUSTOM_FIELD_DOES_NOT_EXIST_IN_ENVELOPE | Custom field {0} does not exist in the envelope. Either add the custom field on the list to the envelope, remove the custom field from the list, or make sure you're specifying the correct list and envelope.                                                                                         | | BULK_SEND_ENVELOPE_CUSTOM_FIELD_NAME_DOES_NOT_MATCH        | Custom field names must match. {0} and {1} do not match. The custom field names on the list and the envelope do not match. Use identical names for both.                                                                                                                                               |  [create_list]:      /docs/esign-rest-api/reference/bulkenvelopes/bulksend/createbulksendlist/ [create_test]:      /docs/esign-rest-api/reference/bulkenvelopes/bulksend/createbulksendtestrequest/ [BulkSendOverview]: /docs/esign-rest-api/reference/bulkenvelopes/bulksend/  
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_list_id 
    # @param bulk_send_request  (optional parameter)
    # @return [BulkSendResponse]
    def create_bulk_send_request(account_id, bulk_send_list_id, bulk_send_request)
      data, _status_code, _headers = create_bulk_send_request_with_http_info(account_id, bulk_send_list_id,  bulk_send_request)
      return data
    end

    # Uses the specified bulk send list to send the envelope specified in the payload
    # This method initiates the bulk send process. It generates a bulk send request based on an [existing bulk send list][create_list] and an envelope or template.  Consider using the [BulkSend::createBulkSendTestRequest][create_test] method to test your bulk send list for compatibility with the envelope or template that you want to send first. To learn about the complete bulk send flow, see the [Bulk Send overview][BulkSendOverview].  If the envelopes were successfully queued for asynchronous processing, the response contains a &#x60;batchId&#x60; that you can use to get the status of the batch. If a failure occurs, the API returns an error message.  **Note:** Partial success or failure generally does not occur. Only the entire batch is queued for asynchronous processing.  ### Related topics  - [How to bulk send envelopes](/docs/esign-rest-api/how-to/bulk-send-envelopes/)   ### Errors  This method returns the following errors:  | Error code                                                 | Description                                                                                                                                                                                                                                                                                            | | :--------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | BULK_SEND_ENVELOPE_NOT_IN_SENDABLE_STATE                   | Envelope {0} is not in a sendable state. The envelope is not complete. Make sure it has a sendable status, such as &#x60;created&#x60;.                                                                                                                                                                          | | BULK_SEND_ENVELOPE_LIST_CONTAINS_NO_COPIES                 | Cannot send an envelope with a bulk sending list which contains no copies.  The list you&#39;re trying to bulk send is empty. Make sure the bulk sending list you&#39;re using contains recipients.                                                                                                            | | BULK_SEND_ENVELOPE_LIST_CONTAINS_TOO_MANY_COPIES           | Bulk sending list contains more than {0} copies. The list you&#39;re trying to bulk send will cause your account to exceed the 1,000-copy limit imposed for all accounts. Try sending two or more separate lists.                                                                                          | | BULK_SEND_ENVELOPE_CANNOT_BE_NULL                          | Cannot send a bulk list without an envelope. Specify the envelope ID or template ID for the envelope you want to bulk send.                                                                                                                                                                            | | BULK_SEND_BLOB_STORE_ERROR                                 | Could not save copy of bulk sending list. An error writing to the database occurred. Try again. If the error persists, contact DocuSign Support.                                                                                                                                                       | | BULK_SEND_ACCOUNT_HAS_TOO_MANY_QUEUED_ENVELOPES            | Cannot send this bulk sending list because doing so would exceed the maximum of {maxCopies} in-flight envelopes. This account currently has {unprocessedEnvelopes} envelopes waiting to be processed. Please try again later.\&quot; .Try again later, or contact DocuSign Support to request a higher tier. | | BULK_SEND_ENVELOPE_NOT_FOUND                               | Envelope {envelopeOrTemplateId} does not exist or you do not have permission to access it. The envelopeId or templateId specified could not be found. Specify a valid value.                                                                                                                           | | BULK_SEND_LIST_NOT_FOUND                                   | Bulk Sending list {listId} does not exist or you do not have permission to access it. The mailingListId specified could not be found. Specify a valid value.                                                                                                                                           | | BULK_SEND_ENVELOPE_HAS_NO_RECIPIENTS                       | Bulk sending copy contains recipients, but the specified envelope does not. The recipients on the envelope and the bulk send list do not match. Make sure the envelope and list are compatible for sending.                                                                                            | | BULK_SEND_RECIPIENT_ID_DOES_NOT_EXIST_IN_ENVELOPE          | Recipient {0} does not exist in the envelope. Add the missing recipient to the envelope.                                                                                                                                                                                                               | | BULK_SEND_RECIPIENT_ID_DOES_NOT_MATCH                      | Recipient ID {envelopeMember.ID} does not match. Make sure the recipient information in the list and the envelope match up.                                                                                                                                                                            | | BULK_SEND_ENVELOPE_HAS_BULK_RECIPIENT                      | Recipient {0} is a bulk recipient.  This is not supported. No legacy &#39;bulk recipient&#39; allowed. In v2.1 of the eSignature API, you must use a bulk send list instead of a bulk recipient. See the API documentation for details.                                                                        | | BULK_SEND_RECIPIENT_ROLE_DOES_NOT_MATCH                    | Recipient Role {envelopeMember.RoleName} does not match. Make sure the recipient information in the list and the envelope is compatible.                                                                                                                                                               | | BULK_SEND_DUPLICATE_RECIPIENT_DETECTED                     | Duplicate recipients ({0}) not allowed, unless recipients have unique routing order specified on envelope.                                                                                                                                                                                             | | BULK_SEND_ENVELOPE_HAS_NO_TABS                             | Bulk sending copy contains tabs, but the specified envelope does not. List and envelope tabs cannot be coalesced. Make sure they are compatible for sending.                                                                                                                                           | | BULK_SEND_TAB_LABEL_DOES_NOT_EXIST_IN_ENVELOPE             | Tab with label {0} does not exist in envelope. Add the tab label to the envelope, remove the label from the list, or make sure you&#39;re specifying the correct list and envelope.                                                                                                                        | | BULK_SEND_TAB_DOES_NOT_MATCH                               | Tab {0} does not match {0} in envelope. A tab exists on the list that does not match or is missing on the envelope. Make sure the tabs on the list and the envelope match.                                                                                                                             | | BULK_SEND_ENVELOPE_HAS_NO_ENVELOPE_CUSTOM_FIELDS           | Bulk sending copy contains custom fields, but the specified envelope does not. There are custom fields on the list that the envelope does not have. Make sure that any custom fields on the list and the envelope match.                                                                               | | BULK_SEND_ENVELOPE_CUSTOM_FIELD_DOES_NOT_EXIST_IN_ENVELOPE | Custom field {0} does not exist in the envelope. Either add the custom field on the list to the envelope, remove the custom field from the list, or make sure you&#39;re specifying the correct list and envelope.                                                                                         | | BULK_SEND_ENVELOPE_CUSTOM_FIELD_NAME_DOES_NOT_MATCH        | Custom field names must match. {0} and {1} do not match. The custom field names on the list and the envelope do not match. Use identical names for both.                                                                                                                                               |  [create_list]:      /docs/esign-rest-api/reference/bulkenvelopes/bulksend/createbulksendlist/ [create_test]:      /docs/esign-rest-api/reference/bulkenvelopes/bulksend/createbulksendtestrequest/ [BulkSendOverview]: /docs/esign-rest-api/reference/bulkenvelopes/bulksend/  
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_list_id 
    # @param bulk_send_request  (optional parameter)
    # @return [Array<(BulkSendResponse, Fixnum, Hash)>] BulkSendResponse data, response status code and response headers
    def create_bulk_send_request_with_http_info(account_id, bulk_send_list_id, bulk_send_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.create_bulk_send_request ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.create_bulk_send_request" if account_id.nil?
      # verify the required parameter 'bulk_send_list_id' is set
      fail ArgumentError, "Missing the required parameter 'bulk_send_list_id' when calling BulkEnvelopesApi.create_bulk_send_request" if bulk_send_list_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_lists/{bulkSendListId}/send".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'bulkSendListId' + '}', bulk_send_list_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(bulk_send_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 => 'BulkSendResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: BulkEnvelopesApi#create_bulk_send_request\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Tests whether the specified bulk sending list can be used to send an envelope
    # This method tests a bulk send list for compatibility with the envelope or template that you want to send. For example, a template that has three roles is not compatible with a bulk send list that has only two recipients. For this reason, you might want to test compatibility first.  A successful test result returns `true` for the `canBeSent` property. An unsuccessful test returns a JSON response that contains information about the errors that occurred.  If the test is successful, you can then send the envelope or template by using the [BulkSend::createBulkSendRequest][BulkSendRequest] method.  ## Envelope Compatibility Checks  This section describes the envelope compatibility checks that the system performs.  **Top-Level Issues**  - Envelopes must be in a sendable state. - The bulk send list must contain at least one copy (instance of an envelope), and no more than the maximum number of copies allowed for the account. - The envelope must not be null and must be visible to the current user. - The account cannot have more queued envelopes than the maximum number configured for the account. - The bulk send list must exist.  **Recipients**  - The envelope must have recipients. - If you are using an envelope, all of the recipients defined in the bulk send list must have corresponding recipient IDs in the envelope definition. If you are using a template, you must either match the recipient IDs or role IDs. - The envelope cannot contain a bulk recipient (an artifact of the legacy version of DocuSign's bulk send   functionality).  **Recipient Tabs**  - Every `recipient ID, tab label` pair in the bulk send list must correspond to a tab in the envelope.  **Custom Fields**  - Each envelope-level custom field in the bulk send list must correspond to the name of a `customField` in the   envelope definition. You do not have to match the recipient-level custom fields.  [BulkSendRequest]:  /docs/esign-rest-api/reference/bulkenvelopes/bulksend/createbulksendrequest/   
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_list_id 
    # @param bulk_send_request  (optional parameter)
    # @return [BulkSendTestResponse]
    def create_bulk_send_test_request(account_id, bulk_send_list_id, bulk_send_request)
      data, _status_code, _headers = create_bulk_send_test_request_with_http_info(account_id, bulk_send_list_id,  bulk_send_request)
      return data
    end

    # Tests whether the specified bulk sending list can be used to send an envelope
    # This method tests a bulk send list for compatibility with the envelope or template that you want to send. For example, a template that has three roles is not compatible with a bulk send list that has only two recipients. For this reason, you might want to test compatibility first.  A successful test result returns &#x60;true&#x60; for the &#x60;canBeSent&#x60; property. An unsuccessful test returns a JSON response that contains information about the errors that occurred.  If the test is successful, you can then send the envelope or template by using the [BulkSend::createBulkSendRequest][BulkSendRequest] method.  ## Envelope Compatibility Checks  This section describes the envelope compatibility checks that the system performs.  **Top-Level Issues**  - Envelopes must be in a sendable state. - The bulk send list must contain at least one copy (instance of an envelope), and no more than the maximum number of copies allowed for the account. - The envelope must not be null and must be visible to the current user. - The account cannot have more queued envelopes than the maximum number configured for the account. - The bulk send list must exist.  **Recipients**  - The envelope must have recipients. - If you are using an envelope, all of the recipients defined in the bulk send list must have corresponding recipient IDs in the envelope definition. If you are using a template, you must either match the recipient IDs or role IDs. - The envelope cannot contain a bulk recipient (an artifact of the legacy version of DocuSign&#39;s bulk send   functionality).  **Recipient Tabs**  - Every &#x60;recipient ID, tab label&#x60; pair in the bulk send list must correspond to a tab in the envelope.  **Custom Fields**  - Each envelope-level custom field in the bulk send list must correspond to the name of a &#x60;customField&#x60; in the   envelope definition. You do not have to match the recipient-level custom fields.  [BulkSendRequest]:  /docs/esign-rest-api/reference/bulkenvelopes/bulksend/createbulksendrequest/   
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_list_id 
    # @param bulk_send_request  (optional parameter)
    # @return [Array<(BulkSendTestResponse, Fixnum, Hash)>] BulkSendTestResponse data, response status code and response headers
    def create_bulk_send_test_request_with_http_info(account_id, bulk_send_list_id, bulk_send_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.create_bulk_send_test_request ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.create_bulk_send_test_request" if account_id.nil?
      # verify the required parameter 'bulk_send_list_id' is set
      fail ArgumentError, "Missing the required parameter 'bulk_send_list_id' when calling BulkEnvelopesApi.create_bulk_send_test_request" if bulk_send_list_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_lists/{bulkSendListId}/test".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'bulkSendListId' + '}', bulk_send_list_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(bulk_send_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 => 'BulkSendTestResponse')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: BulkEnvelopesApi#create_bulk_send_test_request\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes an existing bulk send list
    # This method deletes a bulk send list.
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_list_id 
    # @return [BulkSendingListSummaries]
    def delete_bulk_send_list(account_id, bulk_send_list_id)
      data, _status_code, _headers = delete_bulk_send_list_with_http_info(account_id, bulk_send_list_id)
      return data
    end

    # Deletes an existing bulk send list
    # This method deletes a bulk send list.
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_list_id 
    # @return [Array<(BulkSendingListSummaries, Fixnum, Hash)>] BulkSendingListSummaries data, response status code and response headers
    def delete_bulk_send_list_with_http_info(account_id, bulk_send_list_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.delete_bulk_send_list ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.delete_bulk_send_list" if account_id.nil?
      # verify the required parameter 'bulk_send_list_id' is set
      fail ArgumentError, "Missing the required parameter 'bulk_send_list_id' when calling BulkEnvelopesApi.delete_bulk_send_list" if bulk_send_list_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_lists/{bulkSendListId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'bulkSendListId' + '}', bulk_send_list_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 => 'BulkSendingListSummaries')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: BulkEnvelopesApi#delete_bulk_send_list\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets envelopes from a specific bulk send batch
    # This method returns a list of envelopes in a specified bulk batch. Use the query parameters to filter and sort the envelopes by different attributes.
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_batch_id 
    # @param DocuSign_eSign::GetBulkSendBatchEnvelopesOptions Options for modifying the behavior of the function.
    # @return [EnvelopesInformation]
    def get_bulk_send_batch_envelopes(account_id, bulk_send_batch_id, options = DocuSign_eSign::GetBulkSendBatchEnvelopesOptions.default)
      data, _status_code, _headers = get_bulk_send_batch_envelopes_with_http_info(account_id, bulk_send_batch_id, options)
      return data
    end

    # Gets envelopes from a specific bulk send batch
    # This method returns a list of envelopes in a specified bulk batch. Use the query parameters to filter and sort the envelopes by different attributes.
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_batch_id 
    # @param DocuSign_eSign::GetBulkSendBatchEnvelopesOptions Options for modifying the behavior of the function.
    # @return [Array<(EnvelopesInformation, Fixnum, Hash)>] EnvelopesInformation data, response status code and response headers
    def get_bulk_send_batch_envelopes_with_http_info(account_id, bulk_send_batch_id, options = DocuSign_eSign::GetBulkSendBatchEnvelopesOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.get_bulk_send_batch_envelopes ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.get_bulk_send_batch_envelopes" if account_id.nil?
      # verify the required parameter 'bulk_send_batch_id' is set
      fail ArgumentError, "Missing the required parameter 'bulk_send_batch_id' when calling BulkEnvelopesApi.get_bulk_send_batch_envelopes" if bulk_send_batch_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_batch/{bulkSendBatchId}/envelopes".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'bulkSendBatchId' + '}', bulk_send_batch_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'count'] = options.count if !options.count.nil?
      query_params[:'include'] = options.include if !options.include.nil?
      query_params[:'order'] = options.order if !options.order.nil?
      query_params[:'order_by'] = options.order_by if !options.order_by.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?

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

    # Gets a specific bulk send batch status
    # Gets the general status of a specific bulk send batch such as:  - number of successes - number pending - number of errors  The `bulkErrors` property of the response object contains more information about the errors.  ### Related topics  - [How to bulk send envelopes](/docs/esign-rest-api/how-to/bulk-send-envelopes/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_batch_id 
    # @return [BulkSendBatchStatus]
    def get_bulk_send_batch_status(account_id, bulk_send_batch_id)
      data, _status_code, _headers = get_bulk_send_batch_status_with_http_info(account_id, bulk_send_batch_id)
      return data
    end

    # Gets a specific bulk send batch status
    # Gets the general status of a specific bulk send batch such as:  - number of successes - number pending - number of errors  The &#x60;bulkErrors&#x60; property of the response object contains more information about the errors.  ### Related topics  - [How to bulk send envelopes](/docs/esign-rest-api/how-to/bulk-send-envelopes/) 
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_batch_id 
    # @return [Array<(BulkSendBatchStatus, Fixnum, Hash)>] BulkSendBatchStatus data, response status code and response headers
    def get_bulk_send_batch_status_with_http_info(account_id, bulk_send_batch_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.get_bulk_send_batch_status ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.get_bulk_send_batch_status" if account_id.nil?
      # verify the required parameter 'bulk_send_batch_id' is set
      fail ArgumentError, "Missing the required parameter 'bulk_send_batch_id' when calling BulkEnvelopesApi.get_bulk_send_batch_status" if bulk_send_batch_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_batch/{bulkSendBatchId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'bulkSendBatchId' + '}', bulk_send_batch_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 => 'BulkSendBatchStatus')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: BulkEnvelopesApi#get_bulk_send_batch_status\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a list of bulk send batch satuses initiated by account.
    # Returns a summary of bulk send batches.  Use the `batch_ids` query parameter to narrow the list of batches.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetBulkSendBatchesOptions Options for modifying the behavior of the function.
    # @return [BulkSendBatchSummaries]
    def get_bulk_send_batches(account_id, options = DocuSign_eSign::GetBulkSendBatchesOptions.default)
      data, _status_code, _headers = get_bulk_send_batches_with_http_info(account_id, options)
      return data
    end

    # Returns a list of bulk send batch satuses initiated by account.
    # Returns a summary of bulk send batches.  Use the &#x60;batch_ids&#x60; query parameter to narrow the list of batches.
    # @param account_id The external account number (int) or account ID Guid.
    # @param DocuSign_eSign::GetBulkSendBatchesOptions Options for modifying the behavior of the function.
    # @return [Array<(BulkSendBatchSummaries, Fixnum, Hash)>] BulkSendBatchSummaries data, response status code and response headers
    def get_bulk_send_batches_with_http_info(account_id, options = DocuSign_eSign::GetBulkSendBatchesOptions.default)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.get_bulk_send_batches ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.get_bulk_send_batches" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_batch".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

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

    # Gets a specific bulk send list
    # This method returns all of the details associated with a specific bulk send list that belongs to the current user.
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_list_id 
    # @return [BulkSendingList]
    def get_bulk_send_list(account_id, bulk_send_list_id)
      data, _status_code, _headers = get_bulk_send_list_with_http_info(account_id, bulk_send_list_id)
      return data
    end

    # Gets a specific bulk send list
    # This method returns all of the details associated with a specific bulk send list that belongs to the current user.
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_list_id 
    # @return [Array<(BulkSendingList, Fixnum, Hash)>] BulkSendingList data, response status code and response headers
    def get_bulk_send_list_with_http_info(account_id, bulk_send_list_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.get_bulk_send_list ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.get_bulk_send_list" if account_id.nil?
      # verify the required parameter 'bulk_send_list_id' is set
      fail ArgumentError, "Missing the required parameter 'bulk_send_list_id' when calling BulkEnvelopesApi.get_bulk_send_list" if bulk_send_list_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_lists/{bulkSendListId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'bulkSendListId' + '}', bulk_send_list_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 => 'BulkSendingList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: BulkEnvelopesApi#get_bulk_send_list\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Lists top-level details for all bulk send lists visible to the current user
    # This method returns a list of bulk send lists belonging to the current user, as well as basic information about each list.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [BulkSendingListSummaries]
    def get_bulk_send_lists(account_id)
      data, _status_code, _headers = get_bulk_send_lists_with_http_info(account_id)
      return data
    end

    # Lists top-level details for all bulk send lists visible to the current user
    # This method returns a list of bulk send lists belonging to the current user, as well as basic information about each list.
    # @param account_id The external account number (int) or account ID Guid.
    # @return [Array<(BulkSendingListSummaries, Fixnum, Hash)>] BulkSendingListSummaries data, response status code and response headers
    def get_bulk_send_lists_with_http_info(account_id)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.get_bulk_send_lists ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.get_bulk_send_lists" if account_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_lists".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s)

      # query parameters
      query_params = {}

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

      # form parameters
      form_params = {}

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

    # Initiate a specific bulk send batch action
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_action 
    # @param bulk_send_batch_id 
    # @param bulk_send_batch_action_request  (optional parameter)
    # @return [BulkSendBatchStatus]
    def update_bulk_send_batch_action(account_id, bulk_action, bulk_send_batch_id, bulk_send_batch_action_request)
      data, _status_code, _headers = update_bulk_send_batch_action_with_http_info(account_id, bulk_action, bulk_send_batch_id,  bulk_send_batch_action_request)
      return data
    end

    # Initiate a specific bulk send batch action
    # 
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_action 
    # @param bulk_send_batch_id 
    # @param bulk_send_batch_action_request  (optional parameter)
    # @return [Array<(BulkSendBatchStatus, Fixnum, Hash)>] BulkSendBatchStatus data, response status code and response headers
    def update_bulk_send_batch_action_with_http_info(account_id, bulk_action, bulk_send_batch_id, bulk_send_batch_action_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.update_bulk_send_batch_action ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.update_bulk_send_batch_action" if account_id.nil?
      # verify the required parameter 'bulk_action' is set
      fail ArgumentError, "Missing the required parameter 'bulk_action' when calling BulkEnvelopesApi.update_bulk_send_batch_action" if bulk_action.nil?
      # verify the required parameter 'bulk_send_batch_id' is set
      fail ArgumentError, "Missing the required parameter 'bulk_send_batch_id' when calling BulkEnvelopesApi.update_bulk_send_batch_action" if bulk_send_batch_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_batch/{bulkSendBatchId}/{bulkAction}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'bulkAction' + '}', bulk_action.to_s).sub('{' + 'bulkSendBatchId' + '}', bulk_send_batch_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(bulk_send_batch_action_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 => 'BulkSendBatchStatus')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: BulkEnvelopesApi#update_bulk_send_batch_action\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Put/Update a specific bulk send batch status
    # Updates a specific bulk send batch status.
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_batch_id 
    # @param bulk_send_batch_request  (optional parameter)
    # @return [BulkSendBatchStatus]
    def update_bulk_send_batch_status(account_id, bulk_send_batch_id, bulk_send_batch_request)
      data, _status_code, _headers = update_bulk_send_batch_status_with_http_info(account_id, bulk_send_batch_id,  bulk_send_batch_request)
      return data
    end

    # Put/Update a specific bulk send batch status
    # Updates a specific bulk send batch status.
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_batch_id 
    # @param bulk_send_batch_request  (optional parameter)
    # @return [Array<(BulkSendBatchStatus, Fixnum, Hash)>] BulkSendBatchStatus data, response status code and response headers
    def update_bulk_send_batch_status_with_http_info(account_id, bulk_send_batch_id, bulk_send_batch_request)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.update_bulk_send_batch_status ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.update_bulk_send_batch_status" if account_id.nil?
      # verify the required parameter 'bulk_send_batch_id' is set
      fail ArgumentError, "Missing the required parameter 'bulk_send_batch_id' when calling BulkEnvelopesApi.update_bulk_send_batch_status" if bulk_send_batch_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_batch/{bulkSendBatchId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'bulkSendBatchId' + '}', bulk_send_batch_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(bulk_send_batch_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 => 'BulkSendBatchStatus')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: BulkEnvelopesApi#update_bulk_send_batch_status\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates an existing bulk send list.  If send_envelope query string value is provided, will accept an empty payload and try to send the specified envelope
    # This method replaces the definition of an existing bulk send list.
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_list_id 
    # @param bulk_sending_list  (optional parameter)
    # @return [BulkSendingList]
    def update_bulk_send_list(account_id, bulk_send_list_id, bulk_sending_list)
      data, _status_code, _headers = update_bulk_send_list_with_http_info(account_id, bulk_send_list_id,  bulk_sending_list)
      return data
    end

    # Updates an existing bulk send list.  If send_envelope query string value is provided, will accept an empty payload and try to send the specified envelope
    # This method replaces the definition of an existing bulk send list.
    # @param account_id The external account number (int) or account ID Guid.
    # @param bulk_send_list_id 
    # @param bulk_sending_list  (optional parameter)
    # @return [Array<(BulkSendingList, Fixnum, Hash)>] BulkSendingList data, response status code and response headers
    def update_bulk_send_list_with_http_info(account_id, bulk_send_list_id, bulk_sending_list)
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: BulkEnvelopesApi.update_bulk_send_list ..."
      end
      # verify the required parameter 'account_id' is set
      fail ArgumentError, "Missing the required parameter 'account_id' when calling BulkEnvelopesApi.update_bulk_send_list" if account_id.nil?
      # verify the required parameter 'bulk_send_list_id' is set
      fail ArgumentError, "Missing the required parameter 'bulk_send_list_id' when calling BulkEnvelopesApi.update_bulk_send_list" if bulk_send_list_id.nil?
      # resource path
      local_var_path = "/v2.1/accounts/{accountId}/bulk_send_lists/{bulkSendListId}".sub('{format}','json').sub('{' + 'accountId' + '}', account_id.to_s).sub('{' + 'bulkSendListId' + '}', bulk_send_list_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(bulk_sending_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 => 'BulkSendingList')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: BulkEnvelopesApi#update_bulk_send_list\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end