# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.

# typed: true
# frozen_string_literal: true


module OpenApiSDK
  module Shared
  

    class UnifiedAtsCandidateInput < ::OpenApiSDK::Utils::FieldAugmented
      extend T::Sig

      # The applications UUIDs of the candidate
      field :applications, T.nilable(T::Array[::Object]), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('applications') } }
      # The attachments UUIDs of the candidate
      field :attachments, T.nilable(T::Array[::Object]), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('attachments') } }
      # The company of the candidate
      field :company, T.nilable(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('company') } }
      # The email addresses of the candidate
      field :email_addresses, T.nilable(T::Array[::OpenApiSDK::Shared::Email]), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('email_addresses') } }
      # Whether the candidate is reachable by email
      field :email_reachable, T.nilable(T::Boolean), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('email_reachable') } }
      # The custom field mappings of the object between the remote 3rd party & Panora
      field :field_mappings, T.nilable(T::Hash[Symbol, ::Object]), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('field_mappings') } }
      # The first name of the candidate
      field :first_name, T.nilable(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('first_name') } }
      # Whether the candidate is private
      field :is_private, T.nilable(T::Boolean), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('is_private') } }
      # The last interaction date with the candidate
      field :last_interaction_at, T.nilable(::DateTime), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('last_interaction_at'), 'decoder': Utils.datetime_from_iso_format(true) } }
      # The last name of the candidate
      field :last_name, T.nilable(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('last_name') } }
      # The locations of the candidate
      field :locations, T.nilable(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('locations') } }
      # The phone numbers of the candidate
      field :phone_numbers, T.nilable(T::Array[::OpenApiSDK::Shared::Phone]), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('phone_numbers') } }
      # The remote creation date of the candidate
      field :remote_created_at, T.nilable(::DateTime), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('remote_created_at'), 'decoder': Utils.datetime_from_iso_format(true) } }
      # The remote modification date of the candidate
      field :remote_modified_at, T.nilable(::DateTime), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('remote_modified_at'), 'decoder': Utils.datetime_from_iso_format(true) } }
      # The tags of the candidate
      field :tags, T.nilable(T::Array[::Object]), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('tags') } }
      # The title of the candidate
      field :title, T.nilable(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('title') } }
      # The urls of the candidate, possible values for Url type are WEBSITE, BLOG, LINKEDIN, GITHUB, or OTHER
      field :urls, T.nilable(T::Array[::OpenApiSDK::Shared::Url]), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('urls') } }


      sig { params(applications: T.nilable(T::Array[::Object]), attachments: T.nilable(T::Array[::Object]), company: T.nilable(::String), email_addresses: T.nilable(T::Array[::OpenApiSDK::Shared::Email]), email_reachable: T.nilable(T::Boolean), field_mappings: T.nilable(T::Hash[Symbol, ::Object]), first_name: T.nilable(::String), is_private: T.nilable(T::Boolean), last_interaction_at: T.nilable(::DateTime), last_name: T.nilable(::String), locations: T.nilable(::String), phone_numbers: T.nilable(T::Array[::OpenApiSDK::Shared::Phone]), remote_created_at: T.nilable(::DateTime), remote_modified_at: T.nilable(::DateTime), tags: T.nilable(T::Array[::Object]), title: T.nilable(::String), urls: T.nilable(T::Array[::OpenApiSDK::Shared::Url])).void }
      def initialize(applications: nil, attachments: nil, company: nil, email_addresses: nil, email_reachable: nil, field_mappings: nil, first_name: nil, is_private: nil, last_interaction_at: nil, last_name: nil, locations: nil, phone_numbers: nil, remote_created_at: nil, remote_modified_at: nil, tags: nil, title: nil, urls: nil)
        @applications = applications
        @attachments = attachments
        @company = company
        @email_addresses = email_addresses
        @email_reachable = email_reachable
        @field_mappings = field_mappings
        @first_name = first_name
        @is_private = is_private
        @last_interaction_at = last_interaction_at
        @last_name = last_name
        @locations = locations
        @phone_numbers = phone_numbers
        @remote_created_at = remote_created_at
        @remote_modified_at = remote_modified_at
        @tags = tags
        @title = title
        @urls = urls
      end
    end
  end
end