lib/docusign/model/witness.ex

# NOTE: This file is auto generated by OpenAPI Generator 6.4.0 (https://openapi-generator.tech).
# Do not edit this file manually.

defmodule DocuSign.Model.Witness do
  @moduledoc """
  A complex type containing information about a witness recipient. Witnesses are recipients whose signatures affirm that the identified signers have signed the documents in the envelope.
  """

  @derive [Poison.Encoder]
  defstruct [
    :accessCode,
    :accessCodeMetadata,
    :addAccessCodeToEmail,
    :additionalNotifications,
    :agentCanEditEmail,
    :agentCanEditName,
    :allowSystemOverrideForLockedRecipient,
    :autoNavigation,
    :autoRespondedReason,
    :bulkRecipientsUri,
    :canSignOffline,
    :clientUserId,
    :completedCount,
    :consentDetailsList,
    :creationReason,
    :customFields,
    :declinedDateTime,
    :declinedReason,
    :defaultRecipient,
    :delegatedBy,
    :delegatedTo,
    :deliveredDateTime,
    :deliveryMethod,
    :deliveryMethodMetadata,
    :designatorId,
    :designatorIdGuid,
    :documentVisibility,
    :email,
    :emailMetadata,
    :emailNotification,
    :emailRecipientPostSigningURL,
    :embeddedRecipientStartURL,
    :errorDetails,
    :excludedDocuments,
    :faxNumber,
    :faxNumberMetadata,
    :firstName,
    :firstNameMetadata,
    :fullName,
    :fullNameMetadata,
    :idCheckConfigurationName,
    :idCheckConfigurationNameMetadata,
    :idCheckInformationInput,
    :identityVerification,
    :inheritEmailNotificationConfiguration,
    :isBulkRecipient,
    :isBulkRecipientMetadata,
    :lastName,
    :lastNameMetadata,
    :lockedRecipientPhoneAuthEditable,
    :lockedRecipientSmsEditable,
    :name,
    :nameMetadata,
    :notaryId,
    :notarySignerEmailSent,
    :note,
    :noteMetadata,
    :offlineAttributes,
    :phoneAuthentication,
    :phoneNumber,
    :proofFile,
    :recipientAttachments,
    :recipientAuthenticationStatus,
    :recipientFeatureMetadata,
    :recipientId,
    :recipientIdGuid,
    :recipientSignatureProviders,
    :recipientSuppliesTabs,
    :recipientType,
    :recipientTypeMetadata,
    :requireIdLookup,
    :requireIdLookupMetadata,
    :requireSignerCertificate,
    :requireSignOnPaper,
    :requireUploadSignature,
    :roleName,
    :routingOrder,
    :routingOrderMetadata,
    :sentDateTime,
    :signatureInfo,
    :signedDateTime,
    :signInEachLocation,
    :signInEachLocationMetadata,
    :signingGroupId,
    :signingGroupIdMetadata,
    :signingGroupName,
    :signingGroupUsers,
    :smsAuthentication,
    :socialAuthentications,
    :status,
    :statusCode,
    :suppressEmails,
    :tabs,
    :templateLocked,
    :templateRequired,
    :totalTabCount,
    :userId,
    :witnessFor,
    :witnessForGuid
  ]

  @type t :: %__MODULE__{
          :accessCode => String.t() | nil,
          :accessCodeMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :addAccessCodeToEmail => String.t() | nil,
          :additionalNotifications => [DocuSign.Model.RecipientAdditionalNotification.t()] | nil,
          :agentCanEditEmail => String.t() | nil,
          :agentCanEditName => String.t() | nil,
          :allowSystemOverrideForLockedRecipient => String.t() | nil,
          :autoNavigation => String.t() | nil,
          :autoRespondedReason => String.t() | nil,
          :bulkRecipientsUri => String.t() | nil,
          :canSignOffline => String.t() | nil,
          :clientUserId => String.t() | nil,
          :completedCount => String.t() | nil,
          :consentDetailsList => [DocuSign.Model.ConsentDetails.t()] | nil,
          :creationReason => String.t() | nil,
          :customFields => [String.t()] | nil,
          :declinedDateTime => String.t() | nil,
          :declinedReason => String.t() | nil,
          :defaultRecipient => String.t() | nil,
          :delegatedBy => DocuSign.Model.DelegationInfo.t() | nil,
          :delegatedTo => [DocuSign.Model.DelegationInfo.t()] | nil,
          :deliveredDateTime => String.t() | nil,
          :deliveryMethod => String.t() | nil,
          :deliveryMethodMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :designatorId => String.t() | nil,
          :designatorIdGuid => String.t() | nil,
          :documentVisibility => [DocuSign.Model.DocumentVisibility.t()] | nil,
          :email => String.t() | nil,
          :emailMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :emailNotification => DocuSign.Model.RecipientEmailNotification.t() | nil,
          :emailRecipientPostSigningURL => String.t() | nil,
          :embeddedRecipientStartURL => String.t() | nil,
          :errorDetails => DocuSign.Model.ErrorDetails.t() | nil,
          :excludedDocuments => [String.t()] | nil,
          :faxNumber => String.t() | nil,
          :faxNumberMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :firstName => String.t() | nil,
          :firstNameMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :fullName => String.t() | nil,
          :fullNameMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :idCheckConfigurationName => String.t() | nil,
          :idCheckConfigurationNameMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :idCheckInformationInput => DocuSign.Model.IdCheckInformationInput.t() | nil,
          :identityVerification => DocuSign.Model.RecipientIdentityVerification.t() | nil,
          :inheritEmailNotificationConfiguration => String.t() | nil,
          :isBulkRecipient => String.t() | nil,
          :isBulkRecipientMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :lastName => String.t() | nil,
          :lastNameMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :lockedRecipientPhoneAuthEditable => String.t() | nil,
          :lockedRecipientSmsEditable => String.t() | nil,
          :name => String.t() | nil,
          :nameMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :notaryId => String.t() | nil,
          :notarySignerEmailSent => String.t() | nil,
          :note => String.t() | nil,
          :noteMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :offlineAttributes => DocuSign.Model.OfflineAttributes.t() | nil,
          :phoneAuthentication => DocuSign.Model.RecipientPhoneAuthentication.t() | nil,
          :phoneNumber => DocuSign.Model.RecipientPhoneNumber.t() | nil,
          :proofFile => DocuSign.Model.RecipientProofFile.t() | nil,
          :recipientAttachments => [DocuSign.Model.RecipientAttachment.t()] | nil,
          :recipientAuthenticationStatus => DocuSign.Model.AuthenticationStatus.t() | nil,
          :recipientFeatureMetadata => [DocuSign.Model.FeatureAvailableMetadata.t()] | nil,
          :recipientId => String.t() | nil,
          :recipientIdGuid => String.t() | nil,
          :recipientSignatureProviders => [DocuSign.Model.RecipientSignatureProvider.t()] | nil,
          :recipientSuppliesTabs => String.t() | nil,
          :recipientType => String.t() | nil,
          :recipientTypeMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :requireIdLookup => String.t() | nil,
          :requireIdLookupMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :requireSignerCertificate => String.t() | nil,
          :requireSignOnPaper => String.t() | nil,
          :requireUploadSignature => String.t() | nil,
          :roleName => String.t() | nil,
          :routingOrder => String.t() | nil,
          :routingOrderMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :sentDateTime => String.t() | nil,
          :signatureInfo => DocuSign.Model.RecipientSignatureInformation.t() | nil,
          :signedDateTime => String.t() | nil,
          :signInEachLocation => String.t() | nil,
          :signInEachLocationMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :signingGroupId => String.t() | nil,
          :signingGroupIdMetadata => DocuSign.Model.PropertyMetadata.t() | nil,
          :signingGroupName => String.t() | nil,
          :signingGroupUsers => [DocuSign.Model.UserInfo.t()] | nil,
          :smsAuthentication => DocuSign.Model.RecipientSmsAuthentication.t() | nil,
          :socialAuthentications => [DocuSign.Model.SocialAuthentication.t()] | nil,
          :status => String.t() | nil,
          :statusCode => String.t() | nil,
          :suppressEmails => String.t() | nil,
          :tabs => DocuSign.Model.EnvelopeRecipientTabs.t() | nil,
          :templateLocked => String.t() | nil,
          :templateRequired => String.t() | nil,
          :totalTabCount => String.t() | nil,
          :userId => String.t() | nil,
          :witnessFor => String.t() | nil,
          :witnessForGuid => String.t() | nil
        }
end

defimpl Poison.Decoder, for: DocuSign.Model.Witness do
  import DocuSign.Deserializer

  def decode(value, options) do
    value
    |> deserialize(:accessCodeMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(
      :additionalNotifications,
      :list,
      DocuSign.Model.RecipientAdditionalNotification,
      options
    )
    |> deserialize(:consentDetailsList, :list, DocuSign.Model.ConsentDetails, options)
    |> deserialize(:delegatedBy, :struct, DocuSign.Model.DelegationInfo, options)
    |> deserialize(:delegatedTo, :list, DocuSign.Model.DelegationInfo, options)
    |> deserialize(:deliveryMethodMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:documentVisibility, :list, DocuSign.Model.DocumentVisibility, options)
    |> deserialize(:emailMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(
      :emailNotification,
      :struct,
      DocuSign.Model.RecipientEmailNotification,
      options
    )
    |> deserialize(:errorDetails, :struct, DocuSign.Model.ErrorDetails, options)
    |> deserialize(:faxNumberMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:firstNameMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:fullNameMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(
      :idCheckConfigurationNameMetadata,
      :struct,
      DocuSign.Model.PropertyMetadata,
      options
    )
    |> deserialize(
      :idCheckInformationInput,
      :struct,
      DocuSign.Model.IdCheckInformationInput,
      options
    )
    |> deserialize(
      :identityVerification,
      :struct,
      DocuSign.Model.RecipientIdentityVerification,
      options
    )
    |> deserialize(:isBulkRecipientMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:lastNameMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:nameMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:noteMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:offlineAttributes, :struct, DocuSign.Model.OfflineAttributes, options)
    |> deserialize(
      :phoneAuthentication,
      :struct,
      DocuSign.Model.RecipientPhoneAuthentication,
      options
    )
    |> deserialize(:phoneNumber, :struct, DocuSign.Model.RecipientPhoneNumber, options)
    |> deserialize(:proofFile, :struct, DocuSign.Model.RecipientProofFile, options)
    |> deserialize(:recipientAttachments, :list, DocuSign.Model.RecipientAttachment, options)
    |> deserialize(
      :recipientAuthenticationStatus,
      :struct,
      DocuSign.Model.AuthenticationStatus,
      options
    )
    |> deserialize(
      :recipientFeatureMetadata,
      :list,
      DocuSign.Model.FeatureAvailableMetadata,
      options
    )
    |> deserialize(
      :recipientSignatureProviders,
      :list,
      DocuSign.Model.RecipientSignatureProvider,
      options
    )
    |> deserialize(:recipientTypeMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:requireIdLookupMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:routingOrderMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:signatureInfo, :struct, DocuSign.Model.RecipientSignatureInformation, options)
    |> deserialize(:signInEachLocationMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:signingGroupIdMetadata, :struct, DocuSign.Model.PropertyMetadata, options)
    |> deserialize(:signingGroupUsers, :list, DocuSign.Model.UserInfo, options)
    |> deserialize(
      :smsAuthentication,
      :struct,
      DocuSign.Model.RecipientSmsAuthentication,
      options
    )
    |> deserialize(:socialAuthentications, :list, DocuSign.Model.SocialAuthentication, options)
    |> deserialize(:tabs, :struct, DocuSign.Model.EnvelopeRecipientTabs, options)
  end
end