=begin
#DocuSign REST API

#The DocuSign 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 'date'

module DocuSign_eSign
  class ReportInProductRunResponseRowFields
    # 
    attr_accessor :access_code_required

    # 
    attr_accessor :access_codes_attempted

    # 
    attr_accessor :access_codes_failed

    # The account ID associated with the envelope.
    attr_accessor :account_id

    # 
    attr_accessor :authentication_category

    # 
    attr_accessor :authentication_success

    # 
    attr_accessor :authentication_type

    # 
    attr_accessor :average_time_to_complete_seconds

    # 
    attr_accessor :avg_complete_seconds

    # 
    attr_accessor :capture_method

    # 
    attr_accessor :completed

    # 
    attr_accessor :completed_ts

    # 
    attr_accessor :created_date

    # 
    attr_accessor :created_on

    # 
    attr_accessor :creator

    # 
    attr_accessor :custom_field

    # 
    attr_accessor :declined_date

    # The reason the recipient declined the document.
    attr_accessor :declined_reason

    # 
    attr_accessor :delivered_date

    # 
    attr_accessor :envelope_count

    # 
    attr_accessor :envelope_creator

    # The envelope ID of the envelope status that failed to post.
    attr_accessor :envelope_id

    # 
    attr_accessor :envelope_initial_send_ts

    # 
    attr_accessor :envelopes_billed

    # 
    attr_accessor :envelopes_completed

    # 
    attr_accessor :envelopes_completed_count

    # 
    attr_accessor :envelopes_declined

    # 
    attr_accessor :envelopes_sent

    # 
    attr_accessor :envelopes_sent_count

    # 
    attr_accessor :envelopes_voided

    # 
    attr_accessor :envelope_voided_reason

    # 
    attr_accessor :eod_document_description

    # 
    attr_accessor :eod_document_name

    # 
    attr_accessor :eod_document_profile_id

    # 
    attr_accessor :eod_transaction_id

    # 
    attr_accessor :eod_transaction_name

    # 
    attr_accessor :event_date

    # 
    attr_accessor :expiration_date

    # 
    attr_accessor :expired_ts

    # 
    attr_accessor :failure_reason

    # 
    attr_accessor :failures

    # 
    attr_accessor :failure_vendor_code

    # 
    attr_accessor :failure_vendor_reason

    # 
    attr_accessor :first_send_ts

    # 
    attr_accessor :group_id

    # The name of the group.
    attr_accessor :group_name

    # 
    attr_accessor :hours_to_complete_end

    # 
    attr_accessor :hours_to_complete_start

    # 
    attr_accessor :id_checks_attempted

    # 
    attr_accessor :id_checks_failed

    # 
    attr_accessor :id_country

    # 
    attr_accessor :id_method

    # 
    attr_accessor :initial_send_ts

    # 
    attr_accessor :ip_address

    # 
    attr_accessor :last_activity

    # 
    attr_accessor :last_activity_date

    # 
    attr_accessor :last_modified

    # 
    attr_accessor :last_sent_date

    # 
    attr_accessor :last_used

    # 
    attr_accessor :metadata_removed

    # 
    attr_accessor :not_signed

    # 
    attr_accessor :number_of_authenticated_recipients

    # 
    attr_accessor :number_of_completed_signatures

    # 
    attr_accessor :number_of_documents

    # 
    attr_accessor :number_of_pages

    # 
    attr_accessor :number_of_recipients

    # 
    attr_accessor :number_of_sends

    # 
    attr_accessor :number_of_signers

    # 
    attr_accessor :number_of_total_documents

    # 
    attr_accessor :number_of_total_pages

    # 
    attr_accessor :number_of_total_signers

    # 
    attr_accessor :number_of_unique_senders

    # 
    attr_accessor :number_total_recipients

    # 
    attr_accessor :other_recipients_list

    # 
    attr_accessor :owner

    # 
    attr_accessor :owner_mail

    # 
    attr_accessor :period_end

    # 
    attr_accessor :period_start

    # 
    attr_accessor :phone_calls_attempted

    # 
    attr_accessor :phone_calls_failed

    # 
    attr_accessor :pii_redacted

    # 
    attr_accessor :purge_date

    # 
    attr_accessor :reason_for_declining

    # 
    attr_accessor :reason_for_voiding

    # 
    attr_accessor :reassign_reason

    # 
    attr_accessor :received

    # 
    attr_accessor :recipient

    # 
    attr_accessor :recipient_action

    # 
    attr_accessor :recipient_company_name

    # 
    attr_accessor :recipient_country

    # 
    attr_accessor :recipient_email

    # Unique for the recipient. It is used by the tab element to indicate which recipient is to sign the Document.
    attr_accessor :recipient_id

    # 
    attr_accessor :recipient_name

    # 
    attr_accessor :recipient_role_name

    # 
    attr_accessor :recipient_template_role_name

    # 
    attr_accessor :recipient_title

    # 
    attr_accessor :recipient_type

    # 
    attr_accessor :recipient_user_id

    # 
    attr_accessor :remaining_signatures

    # Specifies the routing order of the recipient in the envelope. 
    attr_accessor :routing_order

    # 
    attr_accessor :sender_account_id

    # 
    attr_accessor :sender_company_name

    # 
    attr_accessor :sender_country

    # 
    attr_accessor :sender_email

    # 
    attr_accessor :sender_ip_address

    # 
    attr_accessor :sender_job_title

    # 
    attr_accessor :sender_name

    # 
    attr_accessor :sender_user_id

    # 
    attr_accessor :signature_type

    # 
    attr_accessor :signature_type_value

    # 
    attr_accessor :sign_date

    # 
    attr_accessor :signed

    # 
    attr_accessor :signed_date

    # 
    attr_accessor :signed_on_mobile

    # 
    attr_accessor :signed_on_paper

    # 
    attr_accessor :signer_list

    # Indicates the envelope status. Valid values are:  * sent - The envelope is sent to the recipients.  * created - The envelope is saved as a draft and can be modified and sent later.
    attr_accessor :status

    # 
    attr_accessor :status_changed_date

    # 
    attr_accessor :status_changed_ts

    # 
    attr_accessor :status_comment

    # 
    attr_accessor :subject

    # 
    attr_accessor :successes

    # The unique identifier of the template. If this is not provided, DocuSign will generate a value. 
    attr_accessor :template_id

    # 
    attr_accessor :template_name

    # 
    attr_accessor :templates_created

    # 
    attr_accessor :templates_created_count

    # 
    attr_accessor :terminal_status_date

    # 
    attr_accessor :time_to_complete_seconds

    # 
    attr_accessor :time_to_deliver

    # 
    attr_accessor :total_documents

    # 
    attr_accessor :total_envelopes

    # 
    attr_accessor :total_pages

    # 
    attr_accessor :total_recipients

    # 
    attr_accessor :total_signers

    # 
    attr_accessor :unique_senders

    # 
    attr_accessor :user_account_email

    # 
    attr_accessor :user_account_name

    # 
    attr_accessor :user_account_status

    # 
    attr_accessor :user_count

    # 
    attr_accessor :user_id

    # 
    attr_accessor :verification_status

    # 
    attr_accessor :verification_type

    # 
    attr_accessor :view_date

    # 
    attr_accessor :voided_ts

    # Attribute mapping from ruby-style variable name to JSON key.
    def self.attribute_map
      {
        :'access_code_required' => :'accessCodeRequired',
        :'access_codes_attempted' => :'accessCodesAttempted',
        :'access_codes_failed' => :'accessCodesFailed',
        :'account_id' => :'accountId',
        :'authentication_category' => :'authenticationCategory',
        :'authentication_success' => :'authenticationSuccess',
        :'authentication_type' => :'authenticationType',
        :'average_time_to_complete_seconds' => :'averageTimeToCompleteSeconds',
        :'avg_complete_seconds' => :'avgCompleteSeconds',
        :'capture_method' => :'captureMethod',
        :'completed' => :'completed',
        :'completed_ts' => :'completedTs',
        :'created_date' => :'createdDate',
        :'created_on' => :'createdOn',
        :'creator' => :'creator',
        :'custom_field' => :'customField',
        :'declined_date' => :'declinedDate',
        :'declined_reason' => :'declinedReason',
        :'delivered_date' => :'deliveredDate',
        :'envelope_count' => :'envelopeCount',
        :'envelope_creator' => :'envelopeCreator',
        :'envelope_id' => :'envelopeId',
        :'envelope_initial_send_ts' => :'envelopeInitialSendTs',
        :'envelopes_billed' => :'envelopesBilled',
        :'envelopes_completed' => :'envelopesCompleted',
        :'envelopes_completed_count' => :'envelopesCompletedCount',
        :'envelopes_declined' => :'envelopesDeclined',
        :'envelopes_sent' => :'envelopesSent',
        :'envelopes_sent_count' => :'envelopesSentCount',
        :'envelopes_voided' => :'envelopesVoided',
        :'envelope_voided_reason' => :'envelopeVoidedReason',
        :'eod_document_description' => :'eodDocumentDescription',
        :'eod_document_name' => :'eodDocumentName',
        :'eod_document_profile_id' => :'eodDocumentProfileId',
        :'eod_transaction_id' => :'eodTransactionId',
        :'eod_transaction_name' => :'eodTransactionName',
        :'event_date' => :'eventDate',
        :'expiration_date' => :'expirationDate',
        :'expired_ts' => :'expiredTs',
        :'failure_reason' => :'failureReason',
        :'failures' => :'failures',
        :'failure_vendor_code' => :'failureVendorCode',
        :'failure_vendor_reason' => :'failureVendorReason',
        :'first_send_ts' => :'firstSendTs',
        :'group_id' => :'groupId',
        :'group_name' => :'groupName',
        :'hours_to_complete_end' => :'hoursToCompleteEnd',
        :'hours_to_complete_start' => :'hoursToCompleteStart',
        :'id_checks_attempted' => :'idChecksAttempted',
        :'id_checks_failed' => :'idChecksFailed',
        :'id_country' => :'idCountry',
        :'id_method' => :'idMethod',
        :'initial_send_ts' => :'initialSendTs',
        :'ip_address' => :'ipAddress',
        :'last_activity' => :'lastActivity',
        :'last_activity_date' => :'lastActivityDate',
        :'last_modified' => :'lastModified',
        :'last_sent_date' => :'lastSentDate',
        :'last_used' => :'lastUsed',
        :'metadata_removed' => :'metadataRemoved',
        :'not_signed' => :'notSigned',
        :'number_of_authenticated_recipients' => :'numberOfAuthenticatedRecipients',
        :'number_of_completed_signatures' => :'numberOfCompletedSignatures',
        :'number_of_documents' => :'numberOfDocuments',
        :'number_of_pages' => :'numberOfPages',
        :'number_of_recipients' => :'numberOfRecipients',
        :'number_of_sends' => :'numberOfSends',
        :'number_of_signers' => :'numberOfSigners',
        :'number_of_total_documents' => :'numberOfTotalDocuments',
        :'number_of_total_pages' => :'numberOfTotalPages',
        :'number_of_total_signers' => :'numberOfTotalSigners',
        :'number_of_unique_senders' => :'numberOfUniqueSenders',
        :'number_total_recipients' => :'numberTotalRecipients',
        :'other_recipients_list' => :'otherRecipientsList',
        :'owner' => :'owner',
        :'owner_mail' => :'ownerMail',
        :'period_end' => :'periodEnd',
        :'period_start' => :'periodStart',
        :'phone_calls_attempted' => :'phoneCallsAttempted',
        :'phone_calls_failed' => :'phoneCallsFailed',
        :'pii_redacted' => :'piiRedacted',
        :'purge_date' => :'purgeDate',
        :'reason_for_declining' => :'reasonForDeclining',
        :'reason_for_voiding' => :'reasonForVoiding',
        :'reassign_reason' => :'reassignReason',
        :'received' => :'received',
        :'recipient' => :'recipient',
        :'recipient_action' => :'recipientAction',
        :'recipient_company_name' => :'recipientCompanyName',
        :'recipient_country' => :'recipientCountry',
        :'recipient_email' => :'recipientEmail',
        :'recipient_id' => :'recipientId',
        :'recipient_name' => :'recipientName',
        :'recipient_role_name' => :'recipientRoleName',
        :'recipient_template_role_name' => :'recipientTemplateRoleName',
        :'recipient_title' => :'recipientTitle',
        :'recipient_type' => :'recipientType',
        :'recipient_user_id' => :'recipientUserId',
        :'remaining_signatures' => :'remainingSignatures',
        :'routing_order' => :'routingOrder',
        :'sender_account_id' => :'senderAccountId',
        :'sender_company_name' => :'senderCompanyName',
        :'sender_country' => :'senderCountry',
        :'sender_email' => :'senderEmail',
        :'sender_ip_address' => :'senderIPAddress',
        :'sender_job_title' => :'senderJobTitle',
        :'sender_name' => :'senderName',
        :'sender_user_id' => :'senderUserId',
        :'signature_type' => :'signatureType',
        :'signature_type_value' => :'signatureTypeValue',
        :'sign_date' => :'signDate',
        :'signed' => :'signed',
        :'signed_date' => :'signedDate',
        :'signed_on_mobile' => :'signedOnMobile',
        :'signed_on_paper' => :'signedOnPaper',
        :'signer_list' => :'signerList',
        :'status' => :'status',
        :'status_changed_date' => :'statusChangedDate',
        :'status_changed_ts' => :'statusChangedTs',
        :'status_comment' => :'statusComment',
        :'subject' => :'subject',
        :'successes' => :'successes',
        :'template_id' => :'templateId',
        :'template_name' => :'templateName',
        :'templates_created' => :'templatesCreated',
        :'templates_created_count' => :'templatesCreatedCount',
        :'terminal_status_date' => :'terminalStatusDate',
        :'time_to_complete_seconds' => :'timeToCompleteSeconds',
        :'time_to_deliver' => :'timeToDeliver',
        :'total_documents' => :'totalDocuments',
        :'total_envelopes' => :'totalEnvelopes',
        :'total_pages' => :'totalPages',
        :'total_recipients' => :'totalRecipients',
        :'total_signers' => :'totalSigners',
        :'unique_senders' => :'uniqueSenders',
        :'user_account_email' => :'userAccountEmail',
        :'user_account_name' => :'userAccountName',
        :'user_account_status' => :'userAccountStatus',
        :'user_count' => :'userCount',
        :'user_id' => :'userId',
        :'verification_status' => :'verificationStatus',
        :'verification_type' => :'verificationType',
        :'view_date' => :'viewDate',
        :'voided_ts' => :'voidedTs'
      }
    end

    # Attribute type mapping.
    def self.swagger_types
      {
        :'access_code_required' => :'String',
        :'access_codes_attempted' => :'String',
        :'access_codes_failed' => :'String',
        :'account_id' => :'String',
        :'authentication_category' => :'String',
        :'authentication_success' => :'String',
        :'authentication_type' => :'String',
        :'average_time_to_complete_seconds' => :'String',
        :'avg_complete_seconds' => :'String',
        :'capture_method' => :'String',
        :'completed' => :'String',
        :'completed_ts' => :'String',
        :'created_date' => :'String',
        :'created_on' => :'String',
        :'creator' => :'String',
        :'custom_field' => :'String',
        :'declined_date' => :'String',
        :'declined_reason' => :'String',
        :'delivered_date' => :'String',
        :'envelope_count' => :'String',
        :'envelope_creator' => :'String',
        :'envelope_id' => :'String',
        :'envelope_initial_send_ts' => :'String',
        :'envelopes_billed' => :'String',
        :'envelopes_completed' => :'String',
        :'envelopes_completed_count' => :'String',
        :'envelopes_declined' => :'String',
        :'envelopes_sent' => :'String',
        :'envelopes_sent_count' => :'String',
        :'envelopes_voided' => :'String',
        :'envelope_voided_reason' => :'String',
        :'eod_document_description' => :'String',
        :'eod_document_name' => :'String',
        :'eod_document_profile_id' => :'String',
        :'eod_transaction_id' => :'String',
        :'eod_transaction_name' => :'String',
        :'event_date' => :'String',
        :'expiration_date' => :'String',
        :'expired_ts' => :'String',
        :'failure_reason' => :'String',
        :'failures' => :'String',
        :'failure_vendor_code' => :'String',
        :'failure_vendor_reason' => :'String',
        :'first_send_ts' => :'String',
        :'group_id' => :'String',
        :'group_name' => :'String',
        :'hours_to_complete_end' => :'String',
        :'hours_to_complete_start' => :'String',
        :'id_checks_attempted' => :'String',
        :'id_checks_failed' => :'String',
        :'id_country' => :'String',
        :'id_method' => :'String',
        :'initial_send_ts' => :'String',
        :'ip_address' => :'String',
        :'last_activity' => :'String',
        :'last_activity_date' => :'String',
        :'last_modified' => :'String',
        :'last_sent_date' => :'String',
        :'last_used' => :'String',
        :'metadata_removed' => :'String',
        :'not_signed' => :'String',
        :'number_of_authenticated_recipients' => :'String',
        :'number_of_completed_signatures' => :'String',
        :'number_of_documents' => :'String',
        :'number_of_pages' => :'String',
        :'number_of_recipients' => :'String',
        :'number_of_sends' => :'String',
        :'number_of_signers' => :'String',
        :'number_of_total_documents' => :'String',
        :'number_of_total_pages' => :'String',
        :'number_of_total_signers' => :'String',
        :'number_of_unique_senders' => :'String',
        :'number_total_recipients' => :'String',
        :'other_recipients_list' => :'String',
        :'owner' => :'String',
        :'owner_mail' => :'String',
        :'period_end' => :'String',
        :'period_start' => :'String',
        :'phone_calls_attempted' => :'String',
        :'phone_calls_failed' => :'String',
        :'pii_redacted' => :'String',
        :'purge_date' => :'String',
        :'reason_for_declining' => :'String',
        :'reason_for_voiding' => :'String',
        :'reassign_reason' => :'String',
        :'received' => :'String',
        :'recipient' => :'String',
        :'recipient_action' => :'String',
        :'recipient_company_name' => :'String',
        :'recipient_country' => :'String',
        :'recipient_email' => :'String',
        :'recipient_id' => :'String',
        :'recipient_name' => :'String',
        :'recipient_role_name' => :'String',
        :'recipient_template_role_name' => :'String',
        :'recipient_title' => :'String',
        :'recipient_type' => :'String',
        :'recipient_user_id' => :'String',
        :'remaining_signatures' => :'String',
        :'routing_order' => :'String',
        :'sender_account_id' => :'String',
        :'sender_company_name' => :'String',
        :'sender_country' => :'String',
        :'sender_email' => :'String',
        :'sender_ip_address' => :'String',
        :'sender_job_title' => :'String',
        :'sender_name' => :'String',
        :'sender_user_id' => :'String',
        :'signature_type' => :'String',
        :'signature_type_value' => :'String',
        :'sign_date' => :'String',
        :'signed' => :'String',
        :'signed_date' => :'String',
        :'signed_on_mobile' => :'String',
        :'signed_on_paper' => :'String',
        :'signer_list' => :'String',
        :'status' => :'String',
        :'status_changed_date' => :'String',
        :'status_changed_ts' => :'String',
        :'status_comment' => :'String',
        :'subject' => :'String',
        :'successes' => :'String',
        :'template_id' => :'String',
        :'template_name' => :'String',
        :'templates_created' => :'String',
        :'templates_created_count' => :'String',
        :'terminal_status_date' => :'String',
        :'time_to_complete_seconds' => :'String',
        :'time_to_deliver' => :'String',
        :'total_documents' => :'String',
        :'total_envelopes' => :'String',
        :'total_pages' => :'String',
        :'total_recipients' => :'String',
        :'total_signers' => :'String',
        :'unique_senders' => :'String',
        :'user_account_email' => :'String',
        :'user_account_name' => :'String',
        :'user_account_status' => :'String',
        :'user_count' => :'String',
        :'user_id' => :'String',
        :'verification_status' => :'String',
        :'verification_type' => :'String',
        :'view_date' => :'String',
        :'voided_ts' => :'String'
      }
    end

    # Initializes the object
    # @param [Hash] attributes Model attributes in the form of hash
    def initialize(attributes = {})
      return unless attributes.is_a?(Hash)

      # convert string to symbol for hash key
      attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }

      if attributes.has_key?(:'accessCodeRequired')
        self.access_code_required = attributes[:'accessCodeRequired']
      end

      if attributes.has_key?(:'accessCodesAttempted')
        self.access_codes_attempted = attributes[:'accessCodesAttempted']
      end

      if attributes.has_key?(:'accessCodesFailed')
        self.access_codes_failed = attributes[:'accessCodesFailed']
      end

      if attributes.has_key?(:'accountId')
        self.account_id = attributes[:'accountId']
      end

      if attributes.has_key?(:'authenticationCategory')
        self.authentication_category = attributes[:'authenticationCategory']
      end

      if attributes.has_key?(:'authenticationSuccess')
        self.authentication_success = attributes[:'authenticationSuccess']
      end

      if attributes.has_key?(:'authenticationType')
        self.authentication_type = attributes[:'authenticationType']
      end

      if attributes.has_key?(:'averageTimeToCompleteSeconds')
        self.average_time_to_complete_seconds = attributes[:'averageTimeToCompleteSeconds']
      end

      if attributes.has_key?(:'avgCompleteSeconds')
        self.avg_complete_seconds = attributes[:'avgCompleteSeconds']
      end

      if attributes.has_key?(:'captureMethod')
        self.capture_method = attributes[:'captureMethod']
      end

      if attributes.has_key?(:'completed')
        self.completed = attributes[:'completed']
      end

      if attributes.has_key?(:'completedTs')
        self.completed_ts = attributes[:'completedTs']
      end

      if attributes.has_key?(:'createdDate')
        self.created_date = attributes[:'createdDate']
      end

      if attributes.has_key?(:'createdOn')
        self.created_on = attributes[:'createdOn']
      end

      if attributes.has_key?(:'creator')
        self.creator = attributes[:'creator']
      end

      if attributes.has_key?(:'customField')
        self.custom_field = attributes[:'customField']
      end

      if attributes.has_key?(:'declinedDate')
        self.declined_date = attributes[:'declinedDate']
      end

      if attributes.has_key?(:'declinedReason')
        self.declined_reason = attributes[:'declinedReason']
      end

      if attributes.has_key?(:'deliveredDate')
        self.delivered_date = attributes[:'deliveredDate']
      end

      if attributes.has_key?(:'envelopeCount')
        self.envelope_count = attributes[:'envelopeCount']
      end

      if attributes.has_key?(:'envelopeCreator')
        self.envelope_creator = attributes[:'envelopeCreator']
      end

      if attributes.has_key?(:'envelopeId')
        self.envelope_id = attributes[:'envelopeId']
      end

      if attributes.has_key?(:'envelopeInitialSendTs')
        self.envelope_initial_send_ts = attributes[:'envelopeInitialSendTs']
      end

      if attributes.has_key?(:'envelopesBilled')
        self.envelopes_billed = attributes[:'envelopesBilled']
      end

      if attributes.has_key?(:'envelopesCompleted')
        self.envelopes_completed = attributes[:'envelopesCompleted']
      end

      if attributes.has_key?(:'envelopesCompletedCount')
        self.envelopes_completed_count = attributes[:'envelopesCompletedCount']
      end

      if attributes.has_key?(:'envelopesDeclined')
        self.envelopes_declined = attributes[:'envelopesDeclined']
      end

      if attributes.has_key?(:'envelopesSent')
        self.envelopes_sent = attributes[:'envelopesSent']
      end

      if attributes.has_key?(:'envelopesSentCount')
        self.envelopes_sent_count = attributes[:'envelopesSentCount']
      end

      if attributes.has_key?(:'envelopesVoided')
        self.envelopes_voided = attributes[:'envelopesVoided']
      end

      if attributes.has_key?(:'envelopeVoidedReason')
        self.envelope_voided_reason = attributes[:'envelopeVoidedReason']
      end

      if attributes.has_key?(:'eodDocumentDescription')
        self.eod_document_description = attributes[:'eodDocumentDescription']
      end

      if attributes.has_key?(:'eodDocumentName')
        self.eod_document_name = attributes[:'eodDocumentName']
      end

      if attributes.has_key?(:'eodDocumentProfileId')
        self.eod_document_profile_id = attributes[:'eodDocumentProfileId']
      end

      if attributes.has_key?(:'eodTransactionId')
        self.eod_transaction_id = attributes[:'eodTransactionId']
      end

      if attributes.has_key?(:'eodTransactionName')
        self.eod_transaction_name = attributes[:'eodTransactionName']
      end

      if attributes.has_key?(:'eventDate')
        self.event_date = attributes[:'eventDate']
      end

      if attributes.has_key?(:'expirationDate')
        self.expiration_date = attributes[:'expirationDate']
      end

      if attributes.has_key?(:'expiredTs')
        self.expired_ts = attributes[:'expiredTs']
      end

      if attributes.has_key?(:'failureReason')
        self.failure_reason = attributes[:'failureReason']
      end

      if attributes.has_key?(:'failures')
        self.failures = attributes[:'failures']
      end

      if attributes.has_key?(:'failureVendorCode')
        self.failure_vendor_code = attributes[:'failureVendorCode']
      end

      if attributes.has_key?(:'failureVendorReason')
        self.failure_vendor_reason = attributes[:'failureVendorReason']
      end

      if attributes.has_key?(:'firstSendTs')
        self.first_send_ts = attributes[:'firstSendTs']
      end

      if attributes.has_key?(:'groupId')
        self.group_id = attributes[:'groupId']
      end

      if attributes.has_key?(:'groupName')
        self.group_name = attributes[:'groupName']
      end

      if attributes.has_key?(:'hoursToCompleteEnd')
        self.hours_to_complete_end = attributes[:'hoursToCompleteEnd']
      end

      if attributes.has_key?(:'hoursToCompleteStart')
        self.hours_to_complete_start = attributes[:'hoursToCompleteStart']
      end

      if attributes.has_key?(:'idChecksAttempted')
        self.id_checks_attempted = attributes[:'idChecksAttempted']
      end

      if attributes.has_key?(:'idChecksFailed')
        self.id_checks_failed = attributes[:'idChecksFailed']
      end

      if attributes.has_key?(:'idCountry')
        self.id_country = attributes[:'idCountry']
      end

      if attributes.has_key?(:'idMethod')
        self.id_method = attributes[:'idMethod']
      end

      if attributes.has_key?(:'initialSendTs')
        self.initial_send_ts = attributes[:'initialSendTs']
      end

      if attributes.has_key?(:'ipAddress')
        self.ip_address = attributes[:'ipAddress']
      end

      if attributes.has_key?(:'lastActivity')
        self.last_activity = attributes[:'lastActivity']
      end

      if attributes.has_key?(:'lastActivityDate')
        self.last_activity_date = attributes[:'lastActivityDate']
      end

      if attributes.has_key?(:'lastModified')
        self.last_modified = attributes[:'lastModified']
      end

      if attributes.has_key?(:'lastSentDate')
        self.last_sent_date = attributes[:'lastSentDate']
      end

      if attributes.has_key?(:'lastUsed')
        self.last_used = attributes[:'lastUsed']
      end

      if attributes.has_key?(:'metadataRemoved')
        self.metadata_removed = attributes[:'metadataRemoved']
      end

      if attributes.has_key?(:'notSigned')
        self.not_signed = attributes[:'notSigned']
      end

      if attributes.has_key?(:'numberOfAuthenticatedRecipients')
        self.number_of_authenticated_recipients = attributes[:'numberOfAuthenticatedRecipients']
      end

      if attributes.has_key?(:'numberOfCompletedSignatures')
        self.number_of_completed_signatures = attributes[:'numberOfCompletedSignatures']
      end

      if attributes.has_key?(:'numberOfDocuments')
        self.number_of_documents = attributes[:'numberOfDocuments']
      end

      if attributes.has_key?(:'numberOfPages')
        self.number_of_pages = attributes[:'numberOfPages']
      end

      if attributes.has_key?(:'numberOfRecipients')
        self.number_of_recipients = attributes[:'numberOfRecipients']
      end

      if attributes.has_key?(:'numberOfSends')
        self.number_of_sends = attributes[:'numberOfSends']
      end

      if attributes.has_key?(:'numberOfSigners')
        self.number_of_signers = attributes[:'numberOfSigners']
      end

      if attributes.has_key?(:'numberOfTotalDocuments')
        self.number_of_total_documents = attributes[:'numberOfTotalDocuments']
      end

      if attributes.has_key?(:'numberOfTotalPages')
        self.number_of_total_pages = attributes[:'numberOfTotalPages']
      end

      if attributes.has_key?(:'numberOfTotalSigners')
        self.number_of_total_signers = attributes[:'numberOfTotalSigners']
      end

      if attributes.has_key?(:'numberOfUniqueSenders')
        self.number_of_unique_senders = attributes[:'numberOfUniqueSenders']
      end

      if attributes.has_key?(:'numberTotalRecipients')
        self.number_total_recipients = attributes[:'numberTotalRecipients']
      end

      if attributes.has_key?(:'otherRecipientsList')
        self.other_recipients_list = attributes[:'otherRecipientsList']
      end

      if attributes.has_key?(:'owner')
        self.owner = attributes[:'owner']
      end

      if attributes.has_key?(:'ownerMail')
        self.owner_mail = attributes[:'ownerMail']
      end

      if attributes.has_key?(:'periodEnd')
        self.period_end = attributes[:'periodEnd']
      end

      if attributes.has_key?(:'periodStart')
        self.period_start = attributes[:'periodStart']
      end

      if attributes.has_key?(:'phoneCallsAttempted')
        self.phone_calls_attempted = attributes[:'phoneCallsAttempted']
      end

      if attributes.has_key?(:'phoneCallsFailed')
        self.phone_calls_failed = attributes[:'phoneCallsFailed']
      end

      if attributes.has_key?(:'piiRedacted')
        self.pii_redacted = attributes[:'piiRedacted']
      end

      if attributes.has_key?(:'purgeDate')
        self.purge_date = attributes[:'purgeDate']
      end

      if attributes.has_key?(:'reasonForDeclining')
        self.reason_for_declining = attributes[:'reasonForDeclining']
      end

      if attributes.has_key?(:'reasonForVoiding')
        self.reason_for_voiding = attributes[:'reasonForVoiding']
      end

      if attributes.has_key?(:'reassignReason')
        self.reassign_reason = attributes[:'reassignReason']
      end

      if attributes.has_key?(:'received')
        self.received = attributes[:'received']
      end

      if attributes.has_key?(:'recipient')
        self.recipient = attributes[:'recipient']
      end

      if attributes.has_key?(:'recipientAction')
        self.recipient_action = attributes[:'recipientAction']
      end

      if attributes.has_key?(:'recipientCompanyName')
        self.recipient_company_name = attributes[:'recipientCompanyName']
      end

      if attributes.has_key?(:'recipientCountry')
        self.recipient_country = attributes[:'recipientCountry']
      end

      if attributes.has_key?(:'recipientEmail')
        self.recipient_email = attributes[:'recipientEmail']
      end

      if attributes.has_key?(:'recipientId')
        self.recipient_id = attributes[:'recipientId']
      end

      if attributes.has_key?(:'recipientName')
        self.recipient_name = attributes[:'recipientName']
      end

      if attributes.has_key?(:'recipientRoleName')
        self.recipient_role_name = attributes[:'recipientRoleName']
      end

      if attributes.has_key?(:'recipientTemplateRoleName')
        self.recipient_template_role_name = attributes[:'recipientTemplateRoleName']
      end

      if attributes.has_key?(:'recipientTitle')
        self.recipient_title = attributes[:'recipientTitle']
      end

      if attributes.has_key?(:'recipientType')
        self.recipient_type = attributes[:'recipientType']
      end

      if attributes.has_key?(:'recipientUserId')
        self.recipient_user_id = attributes[:'recipientUserId']
      end

      if attributes.has_key?(:'remainingSignatures')
        self.remaining_signatures = attributes[:'remainingSignatures']
      end

      if attributes.has_key?(:'routingOrder')
        self.routing_order = attributes[:'routingOrder']
      end

      if attributes.has_key?(:'senderAccountId')
        self.sender_account_id = attributes[:'senderAccountId']
      end

      if attributes.has_key?(:'senderCompanyName')
        self.sender_company_name = attributes[:'senderCompanyName']
      end

      if attributes.has_key?(:'senderCountry')
        self.sender_country = attributes[:'senderCountry']
      end

      if attributes.has_key?(:'senderEmail')
        self.sender_email = attributes[:'senderEmail']
      end

      if attributes.has_key?(:'senderIPAddress')
        self.sender_ip_address = attributes[:'senderIPAddress']
      end

      if attributes.has_key?(:'senderJobTitle')
        self.sender_job_title = attributes[:'senderJobTitle']
      end

      if attributes.has_key?(:'senderName')
        self.sender_name = attributes[:'senderName']
      end

      if attributes.has_key?(:'senderUserId')
        self.sender_user_id = attributes[:'senderUserId']
      end

      if attributes.has_key?(:'signatureType')
        self.signature_type = attributes[:'signatureType']
      end

      if attributes.has_key?(:'signatureTypeValue')
        self.signature_type_value = attributes[:'signatureTypeValue']
      end

      if attributes.has_key?(:'signDate')
        self.sign_date = attributes[:'signDate']
      end

      if attributes.has_key?(:'signed')
        self.signed = attributes[:'signed']
      end

      if attributes.has_key?(:'signedDate')
        self.signed_date = attributes[:'signedDate']
      end

      if attributes.has_key?(:'signedOnMobile')
        self.signed_on_mobile = attributes[:'signedOnMobile']
      end

      if attributes.has_key?(:'signedOnPaper')
        self.signed_on_paper = attributes[:'signedOnPaper']
      end

      if attributes.has_key?(:'signerList')
        self.signer_list = attributes[:'signerList']
      end

      if attributes.has_key?(:'status')
        self.status = attributes[:'status']
      end

      if attributes.has_key?(:'statusChangedDate')
        self.status_changed_date = attributes[:'statusChangedDate']
      end

      if attributes.has_key?(:'statusChangedTs')
        self.status_changed_ts = attributes[:'statusChangedTs']
      end

      if attributes.has_key?(:'statusComment')
        self.status_comment = attributes[:'statusComment']
      end

      if attributes.has_key?(:'subject')
        self.subject = attributes[:'subject']
      end

      if attributes.has_key?(:'successes')
        self.successes = attributes[:'successes']
      end

      if attributes.has_key?(:'templateId')
        self.template_id = attributes[:'templateId']
      end

      if attributes.has_key?(:'templateName')
        self.template_name = attributes[:'templateName']
      end

      if attributes.has_key?(:'templatesCreated')
        self.templates_created = attributes[:'templatesCreated']
      end

      if attributes.has_key?(:'templatesCreatedCount')
        self.templates_created_count = attributes[:'templatesCreatedCount']
      end

      if attributes.has_key?(:'terminalStatusDate')
        self.terminal_status_date = attributes[:'terminalStatusDate']
      end

      if attributes.has_key?(:'timeToCompleteSeconds')
        self.time_to_complete_seconds = attributes[:'timeToCompleteSeconds']
      end

      if attributes.has_key?(:'timeToDeliver')
        self.time_to_deliver = attributes[:'timeToDeliver']
      end

      if attributes.has_key?(:'totalDocuments')
        self.total_documents = attributes[:'totalDocuments']
      end

      if attributes.has_key?(:'totalEnvelopes')
        self.total_envelopes = attributes[:'totalEnvelopes']
      end

      if attributes.has_key?(:'totalPages')
        self.total_pages = attributes[:'totalPages']
      end

      if attributes.has_key?(:'totalRecipients')
        self.total_recipients = attributes[:'totalRecipients']
      end

      if attributes.has_key?(:'totalSigners')
        self.total_signers = attributes[:'totalSigners']
      end

      if attributes.has_key?(:'uniqueSenders')
        self.unique_senders = attributes[:'uniqueSenders']
      end

      if attributes.has_key?(:'userAccountEmail')
        self.user_account_email = attributes[:'userAccountEmail']
      end

      if attributes.has_key?(:'userAccountName')
        self.user_account_name = attributes[:'userAccountName']
      end

      if attributes.has_key?(:'userAccountStatus')
        self.user_account_status = attributes[:'userAccountStatus']
      end

      if attributes.has_key?(:'userCount')
        self.user_count = attributes[:'userCount']
      end

      if attributes.has_key?(:'userId')
        self.user_id = attributes[:'userId']
      end

      if attributes.has_key?(:'verificationStatus')
        self.verification_status = attributes[:'verificationStatus']
      end

      if attributes.has_key?(:'verificationType')
        self.verification_type = attributes[:'verificationType']
      end

      if attributes.has_key?(:'viewDate')
        self.view_date = attributes[:'viewDate']
      end

      if attributes.has_key?(:'voidedTs')
        self.voided_ts = attributes[:'voidedTs']
      end
    end

    # Show invalid properties with the reasons. Usually used together with valid?
    # @return Array for valid properties with the reasons
    def list_invalid_properties
      invalid_properties = Array.new
      invalid_properties
    end

    # Check to see if the all the properties in the model are valid
    # @return true if the model is valid
    def valid?
      true
    end

    # Checks equality by comparing each attribute.
    # @param [Object] Object to be compared
    def ==(o)
      return true if self.equal?(o)
      self.class == o.class &&
          access_code_required == o.access_code_required &&
          access_codes_attempted == o.access_codes_attempted &&
          access_codes_failed == o.access_codes_failed &&
          account_id == o.account_id &&
          authentication_category == o.authentication_category &&
          authentication_success == o.authentication_success &&
          authentication_type == o.authentication_type &&
          average_time_to_complete_seconds == o.average_time_to_complete_seconds &&
          avg_complete_seconds == o.avg_complete_seconds &&
          capture_method == o.capture_method &&
          completed == o.completed &&
          completed_ts == o.completed_ts &&
          created_date == o.created_date &&
          created_on == o.created_on &&
          creator == o.creator &&
          custom_field == o.custom_field &&
          declined_date == o.declined_date &&
          declined_reason == o.declined_reason &&
          delivered_date == o.delivered_date &&
          envelope_count == o.envelope_count &&
          envelope_creator == o.envelope_creator &&
          envelope_id == o.envelope_id &&
          envelope_initial_send_ts == o.envelope_initial_send_ts &&
          envelopes_billed == o.envelopes_billed &&
          envelopes_completed == o.envelopes_completed &&
          envelopes_completed_count == o.envelopes_completed_count &&
          envelopes_declined == o.envelopes_declined &&
          envelopes_sent == o.envelopes_sent &&
          envelopes_sent_count == o.envelopes_sent_count &&
          envelopes_voided == o.envelopes_voided &&
          envelope_voided_reason == o.envelope_voided_reason &&
          eod_document_description == o.eod_document_description &&
          eod_document_name == o.eod_document_name &&
          eod_document_profile_id == o.eod_document_profile_id &&
          eod_transaction_id == o.eod_transaction_id &&
          eod_transaction_name == o.eod_transaction_name &&
          event_date == o.event_date &&
          expiration_date == o.expiration_date &&
          expired_ts == o.expired_ts &&
          failure_reason == o.failure_reason &&
          failures == o.failures &&
          failure_vendor_code == o.failure_vendor_code &&
          failure_vendor_reason == o.failure_vendor_reason &&
          first_send_ts == o.first_send_ts &&
          group_id == o.group_id &&
          group_name == o.group_name &&
          hours_to_complete_end == o.hours_to_complete_end &&
          hours_to_complete_start == o.hours_to_complete_start &&
          id_checks_attempted == o.id_checks_attempted &&
          id_checks_failed == o.id_checks_failed &&
          id_country == o.id_country &&
          id_method == o.id_method &&
          initial_send_ts == o.initial_send_ts &&
          ip_address == o.ip_address &&
          last_activity == o.last_activity &&
          last_activity_date == o.last_activity_date &&
          last_modified == o.last_modified &&
          last_sent_date == o.last_sent_date &&
          last_used == o.last_used &&
          metadata_removed == o.metadata_removed &&
          not_signed == o.not_signed &&
          number_of_authenticated_recipients == o.number_of_authenticated_recipients &&
          number_of_completed_signatures == o.number_of_completed_signatures &&
          number_of_documents == o.number_of_documents &&
          number_of_pages == o.number_of_pages &&
          number_of_recipients == o.number_of_recipients &&
          number_of_sends == o.number_of_sends &&
          number_of_signers == o.number_of_signers &&
          number_of_total_documents == o.number_of_total_documents &&
          number_of_total_pages == o.number_of_total_pages &&
          number_of_total_signers == o.number_of_total_signers &&
          number_of_unique_senders == o.number_of_unique_senders &&
          number_total_recipients == o.number_total_recipients &&
          other_recipients_list == o.other_recipients_list &&
          owner == o.owner &&
          owner_mail == o.owner_mail &&
          period_end == o.period_end &&
          period_start == o.period_start &&
          phone_calls_attempted == o.phone_calls_attempted &&
          phone_calls_failed == o.phone_calls_failed &&
          pii_redacted == o.pii_redacted &&
          purge_date == o.purge_date &&
          reason_for_declining == o.reason_for_declining &&
          reason_for_voiding == o.reason_for_voiding &&
          reassign_reason == o.reassign_reason &&
          received == o.received &&
          recipient == o.recipient &&
          recipient_action == o.recipient_action &&
          recipient_company_name == o.recipient_company_name &&
          recipient_country == o.recipient_country &&
          recipient_email == o.recipient_email &&
          recipient_id == o.recipient_id &&
          recipient_name == o.recipient_name &&
          recipient_role_name == o.recipient_role_name &&
          recipient_template_role_name == o.recipient_template_role_name &&
          recipient_title == o.recipient_title &&
          recipient_type == o.recipient_type &&
          recipient_user_id == o.recipient_user_id &&
          remaining_signatures == o.remaining_signatures &&
          routing_order == o.routing_order &&
          sender_account_id == o.sender_account_id &&
          sender_company_name == o.sender_company_name &&
          sender_country == o.sender_country &&
          sender_email == o.sender_email &&
          sender_ip_address == o.sender_ip_address &&
          sender_job_title == o.sender_job_title &&
          sender_name == o.sender_name &&
          sender_user_id == o.sender_user_id &&
          signature_type == o.signature_type &&
          signature_type_value == o.signature_type_value &&
          sign_date == o.sign_date &&
          signed == o.signed &&
          signed_date == o.signed_date &&
          signed_on_mobile == o.signed_on_mobile &&
          signed_on_paper == o.signed_on_paper &&
          signer_list == o.signer_list &&
          status == o.status &&
          status_changed_date == o.status_changed_date &&
          status_changed_ts == o.status_changed_ts &&
          status_comment == o.status_comment &&
          subject == o.subject &&
          successes == o.successes &&
          template_id == o.template_id &&
          template_name == o.template_name &&
          templates_created == o.templates_created &&
          templates_created_count == o.templates_created_count &&
          terminal_status_date == o.terminal_status_date &&
          time_to_complete_seconds == o.time_to_complete_seconds &&
          time_to_deliver == o.time_to_deliver &&
          total_documents == o.total_documents &&
          total_envelopes == o.total_envelopes &&
          total_pages == o.total_pages &&
          total_recipients == o.total_recipients &&
          total_signers == o.total_signers &&
          unique_senders == o.unique_senders &&
          user_account_email == o.user_account_email &&
          user_account_name == o.user_account_name &&
          user_account_status == o.user_account_status &&
          user_count == o.user_count &&
          user_id == o.user_id &&
          verification_status == o.verification_status &&
          verification_type == o.verification_type &&
          view_date == o.view_date &&
          voided_ts == o.voided_ts
    end

    # @see the `==` method
    # @param [Object] Object to be compared
    def eql?(o)
      self == o
    end

    # Calculates hash code according to all attributes.
    # @return [Fixnum] Hash code
    def hash
      [access_code_required, access_codes_attempted, access_codes_failed, account_id, authentication_category, authentication_success, authentication_type, average_time_to_complete_seconds, avg_complete_seconds, capture_method, completed, completed_ts, created_date, created_on, creator, custom_field, declined_date, declined_reason, delivered_date, envelope_count, envelope_creator, envelope_id, envelope_initial_send_ts, envelopes_billed, envelopes_completed, envelopes_completed_count, envelopes_declined, envelopes_sent, envelopes_sent_count, envelopes_voided, envelope_voided_reason, eod_document_description, eod_document_name, eod_document_profile_id, eod_transaction_id, eod_transaction_name, event_date, expiration_date, expired_ts, failure_reason, failures, failure_vendor_code, failure_vendor_reason, first_send_ts, group_id, group_name, hours_to_complete_end, hours_to_complete_start, id_checks_attempted, id_checks_failed, id_country, id_method, initial_send_ts, ip_address, last_activity, last_activity_date, last_modified, last_sent_date, last_used, metadata_removed, not_signed, number_of_authenticated_recipients, number_of_completed_signatures, number_of_documents, number_of_pages, number_of_recipients, number_of_sends, number_of_signers, number_of_total_documents, number_of_total_pages, number_of_total_signers, number_of_unique_senders, number_total_recipients, other_recipients_list, owner, owner_mail, period_end, period_start, phone_calls_attempted, phone_calls_failed, pii_redacted, purge_date, reason_for_declining, reason_for_voiding, reassign_reason, received, recipient, recipient_action, recipient_company_name, recipient_country, recipient_email, recipient_id, recipient_name, recipient_role_name, recipient_template_role_name, recipient_title, recipient_type, recipient_user_id, remaining_signatures, routing_order, sender_account_id, sender_company_name, sender_country, sender_email, sender_ip_address, sender_job_title, sender_name, sender_user_id, signature_type, signature_type_value, sign_date, signed, signed_date, signed_on_mobile, signed_on_paper, signer_list, status, status_changed_date, status_changed_ts, status_comment, subject, successes, template_id, template_name, templates_created, templates_created_count, terminal_status_date, time_to_complete_seconds, time_to_deliver, total_documents, total_envelopes, total_pages, total_recipients, total_signers, unique_senders, user_account_email, user_account_name, user_account_status, user_count, user_id, verification_status, verification_type, view_date, voided_ts].hash
    end

    # Builds the object from hash
    # @param [Hash] attributes Model attributes in the form of hash
    # @return [Object] Returns the model itself
    def build_from_hash(attributes)
      return nil unless attributes.is_a?(Hash)
      self.class.swagger_types.each_pair do |key, type|
        if type =~ /\AArray<(.*)>/i
          # check to ensure the input is an array given that the attribute
          # is documented as an array but the input is not
          if attributes[self.class.attribute_map[key]].is_a?(Array)
            self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
          end
        elsif !attributes[self.class.attribute_map[key]].nil?
          self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
        end # or else data not found in attributes(hash), not an issue as the data can be optional
      end

      self
    end

    # Deserializes the data based on type
    # @param string type Data type
    # @param string value Value to be deserialized
    # @return [Object] Deserialized data
    def _deserialize(type, value)
      case type.to_sym
      when :DateTime
        DateTime.parse(value)
      when :Date
        Date.parse(value)
      when :String
        value.to_s
      when :Integer
        value.to_i
      when :Float
        value.to_f
      when :BOOLEAN
        if value.to_s =~ /\A(true|t|yes|y|1)\z/i
          true
        else
          false
        end
      when :Object
        # generic object (usually a Hash), return directly
        value
      when /\AArray<(?<inner_type>.+)>\z/
        inner_type = Regexp.last_match[:inner_type]
        value.map { |v| _deserialize(inner_type, v) }
      when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
        k_type = Regexp.last_match[:k_type]
        v_type = Regexp.last_match[:v_type]
        {}.tap do |hash|
          value.each do |k, v|
            hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
          end
        end
      else # model
        temp_model = DocuSign_eSign.const_get(type).new
        temp_model.build_from_hash(value)
      end
    end

    # Returns the string representation of the object
    # @return [String] String presentation of the object
    def to_s
      to_hash.to_s
    end

    # to_body is an alias to to_hash (backward compatibility)
    # @return [Hash] Returns the object in the form of hash
    def to_body
      to_hash
    end

    # Returns the object in the form of hash
    # @return [Hash] Returns the object in the form of hash
    def to_hash
      hash = {}
      self.class.attribute_map.each_pair do |attr, param|
        value = self.send(attr)
        next if value.nil?
        hash[param] = _to_hash(value)
      end
      hash
    end

    # Outputs non-array value in the form of hash
    # For object, use to_hash. Otherwise, just return the value
    # @param [Object] value Any valid value
    # @return [Hash] Returns the value in the form of hash
    def _to_hash(value)
      if value.is_a?(Array)
        value.compact.map { |v| _to_hash(v) }
      elsif value.is_a?(Hash)
        {}.tap do |hash|
          value.each { |k, v| hash[k] = _to_hash(v) }
        end
      elsif value.respond_to? :to_hash
        value.to_hash
      else
        value
      end
    end

  end
end
