lib/docusign/model/intermediary.ex

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

defmodule DocuSign.Model.Intermediary do
  @moduledoc """
  Contains information about an intermediary recipient. An intermediary is a recipient who can, but is not required to, add name and email information for recipients at the same or subsequent level in the routing order, unless subsequent agents, editors or intermediaries are added.
  """

  alias DocuSign.Deserializer
  alias DocuSign.Model.AuthenticationStatus
  alias DocuSign.Model.ConsentDetails
  alias DocuSign.Model.DocumentVisibility
  alias DocuSign.Model.ErrorDetails
  alias DocuSign.Model.FeatureAvailableMetadata
  alias DocuSign.Model.IdCheckInformationInput
  alias DocuSign.Model.PropertyMetadata
  alias DocuSign.Model.RecipientAdditionalNotification
  alias DocuSign.Model.RecipientAttachment
  alias DocuSign.Model.RecipientEmailNotification
  alias DocuSign.Model.RecipientIdentityVerification
  alias DocuSign.Model.RecipientPhoneAuthentication
  alias DocuSign.Model.RecipientPhoneNumber
  alias DocuSign.Model.RecipientSmsAuthentication
  alias DocuSign.Model.SocialAuthentication
  alias DocuSign.Model.UserInfo

  @derive Jason.Encoder
  defstruct [
    :accessCode,
    :accessCodeMetadata,
    :addAccessCodeToEmail,
    :additionalNotifications,
    :allowSystemOverrideForLockedRecipient,
    :autoRespondedReason,
    :bulkSendV2Recipient,
    :clientUserId,
    :completedCount,
    :consentDetailsList,
    :customFields,
    :declinedDateTime,
    :declinedReason,
    :deliveredDateTime,
    :deliveryMethod,
    :deliveryMethodMetadata,
    :designatorId,
    :designatorIdGuid,
    :documentTemplateId,
    :documentVisibility,
    :email,
    :emailMetadata,
    :emailNotification,
    :emailRecipientPostSigningURL,
    :embeddedRecipientStartURL,
    :errorDetails,
    :excludedDocuments,
    :faxNumber,
    :faxNumberMetadata,
    :firstName,
    :firstNameMetadata,
    :fullName,
    :fullNameMetadata,
    :idCheckConfigurationName,
    :idCheckConfigurationNameMetadata,
    :idCheckInformationInput,
    :identityVerification,
    :inheritEmailNotificationConfiguration,
    :lastName,
    :lastNameMetadata,
    :lockedRecipientPhoneAuthEditable,
    :lockedRecipientSmsEditable,
    :name,
    :nameMetadata,
    :note,
    :noteMetadata,
    :phoneAuthentication,
    :phoneNumber,
    :recipientAttachments,
    :recipientAuthenticationStatus,
    :recipientFeatureMetadata,
    :recipientId,
    :recipientIdGuid,
    :recipientType,
    :recipientTypeMetadata,
    :requireIdLookup,
    :requireIdLookupMetadata,
    :roleName,
    :routingOrder,
    :routingOrderMetadata,
    :sentDateTime,
    :signedDateTime,
    :signingGroupId,
    :signingGroupIdMetadata,
    :signingGroupName,
    :signingGroupUsers,
    :smsAuthentication,
    :socialAuthentications,
    :status,
    :statusCode,
    :suppressEmails,
    :templateLocked,
    :templateRequired,
    :totalTabCount,
    :userId,
    :webFormRecipientViewId
  ]

  @type t :: %__MODULE__{
          :accessCode => String.t() | nil,
          :accessCodeMetadata => PropertyMetadata.t() | nil,
          :addAccessCodeToEmail => String.t() | nil,
          :additionalNotifications => [RecipientAdditionalNotification.t()] | nil,
          :allowSystemOverrideForLockedRecipient => String.t() | nil,
          :autoRespondedReason => String.t() | nil,
          :bulkSendV2Recipient => String.t() | nil,
          :clientUserId => String.t() | nil,
          :completedCount => String.t() | nil,
          :consentDetailsList => [ConsentDetails.t()] | nil,
          :customFields => [String.t()] | nil,
          :declinedDateTime => String.t() | nil,
          :declinedReason => String.t() | nil,
          :deliveredDateTime => String.t() | nil,
          :deliveryMethod => String.t() | nil,
          :deliveryMethodMetadata => PropertyMetadata.t() | nil,
          :designatorId => String.t() | nil,
          :designatorIdGuid => String.t() | nil,
          :documentTemplateId => String.t() | nil,
          :documentVisibility => [DocumentVisibility.t()] | nil,
          :email => String.t() | nil,
          :emailMetadata => PropertyMetadata.t() | nil,
          :emailNotification => RecipientEmailNotification.t() | nil,
          :emailRecipientPostSigningURL => String.t() | nil,
          :embeddedRecipientStartURL => String.t() | nil,
          :errorDetails => ErrorDetails.t() | nil,
          :excludedDocuments => [String.t()] | nil,
          :faxNumber => String.t() | nil,
          :faxNumberMetadata => PropertyMetadata.t() | nil,
          :firstName => String.t() | nil,
          :firstNameMetadata => PropertyMetadata.t() | nil,
          :fullName => String.t() | nil,
          :fullNameMetadata => PropertyMetadata.t() | nil,
          :idCheckConfigurationName => String.t() | nil,
          :idCheckConfigurationNameMetadata => PropertyMetadata.t() | nil,
          :idCheckInformationInput => IdCheckInformationInput.t() | nil,
          :identityVerification => RecipientIdentityVerification.t() | nil,
          :inheritEmailNotificationConfiguration => String.t() | nil,
          :lastName => String.t() | nil,
          :lastNameMetadata => PropertyMetadata.t() | nil,
          :lockedRecipientPhoneAuthEditable => String.t() | nil,
          :lockedRecipientSmsEditable => String.t() | nil,
          :name => String.t() | nil,
          :nameMetadata => PropertyMetadata.t() | nil,
          :note => String.t() | nil,
          :noteMetadata => PropertyMetadata.t() | nil,
          :phoneAuthentication => RecipientPhoneAuthentication.t() | nil,
          :phoneNumber => RecipientPhoneNumber.t() | nil,
          :recipientAttachments => [RecipientAttachment.t()] | nil,
          :recipientAuthenticationStatus => AuthenticationStatus.t() | nil,
          :recipientFeatureMetadata => [FeatureAvailableMetadata.t()] | nil,
          :recipientId => String.t() | nil,
          :recipientIdGuid => String.t() | nil,
          :recipientType => String.t() | nil,
          :recipientTypeMetadata => PropertyMetadata.t() | nil,
          :requireIdLookup => String.t() | nil,
          :requireIdLookupMetadata => PropertyMetadata.t() | nil,
          :roleName => String.t() | nil,
          :routingOrder => String.t() | nil,
          :routingOrderMetadata => PropertyMetadata.t() | nil,
          :sentDateTime => String.t() | nil,
          :signedDateTime => String.t() | nil,
          :signingGroupId => String.t() | nil,
          :signingGroupIdMetadata => PropertyMetadata.t() | nil,
          :signingGroupName => String.t() | nil,
          :signingGroupUsers => [UserInfo.t()] | nil,
          :smsAuthentication => RecipientSmsAuthentication.t() | nil,
          :socialAuthentications => [SocialAuthentication.t()] | nil,
          :status => String.t() | nil,
          :statusCode => String.t() | nil,
          :suppressEmails => String.t() | nil,
          :templateLocked => String.t() | nil,
          :templateRequired => String.t() | nil,
          :totalTabCount => String.t() | nil,
          :userId => String.t() | nil,
          :webFormRecipientViewId => String.t() | nil
        }

  def decode(value) do
    value
    |> Deserializer.deserialize(:accessCodeMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(
      :additionalNotifications,
      :list,
      RecipientAdditionalNotification
    )
    |> Deserializer.deserialize(:consentDetailsList, :list, ConsentDetails)
    |> Deserializer.deserialize(:deliveryMethodMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(:documentVisibility, :list, DocumentVisibility)
    |> Deserializer.deserialize(:emailMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(
      :emailNotification,
      :struct,
      RecipientEmailNotification
    )
    |> Deserializer.deserialize(:errorDetails, :struct, ErrorDetails)
    |> Deserializer.deserialize(:faxNumberMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(:firstNameMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(:fullNameMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(
      :idCheckConfigurationNameMetadata,
      :struct,
      PropertyMetadata
    )
    |> Deserializer.deserialize(
      :idCheckInformationInput,
      :struct,
      IdCheckInformationInput
    )
    |> Deserializer.deserialize(
      :identityVerification,
      :struct,
      RecipientIdentityVerification
    )
    |> Deserializer.deserialize(:lastNameMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(:nameMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(:noteMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(
      :phoneAuthentication,
      :struct,
      RecipientPhoneAuthentication
    )
    |> Deserializer.deserialize(:phoneNumber, :struct, RecipientPhoneNumber)
    |> Deserializer.deserialize(:recipientAttachments, :list, RecipientAttachment)
    |> Deserializer.deserialize(
      :recipientAuthenticationStatus,
      :struct,
      AuthenticationStatus
    )
    |> Deserializer.deserialize(
      :recipientFeatureMetadata,
      :list,
      FeatureAvailableMetadata
    )
    |> Deserializer.deserialize(:recipientTypeMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(
      :requireIdLookupMetadata,
      :struct,
      PropertyMetadata
    )
    |> Deserializer.deserialize(:routingOrderMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(:signingGroupIdMetadata, :struct, PropertyMetadata)
    |> Deserializer.deserialize(:signingGroupUsers, :list, UserInfo)
    |> Deserializer.deserialize(
      :smsAuthentication,
      :struct,
      RecipientSmsAuthentication
    )
    |> Deserializer.deserialize(
      :socialAuthentications,
      :list,
      SocialAuthentication
    )
  end
end