lib/docusign/model/agent.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.Agent do
  @moduledoc """
  Contains information about an agent recipient. An agent is a recipient who can add name and email information for recipients that appear after the agent in routing order.
  """

  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