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

# typed: true
# frozen_string_literal: true


module OpenApiSDK
  module Shared
  

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

      # The amount of time off requested
      field :amount, T.nilable(::Float), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('amount') } }
      # The UUID of the approver for the time off request
      field :approver, T.nilable(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('approver') } }
      # The UUID of the employee taking time off
      field :employee, T.nilable(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('employee') } }
      # A note from the employee about the time off request
      field :employee_note, T.nilable(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('employee_note') } }
      # The end time of the time off
      field :end_time, T.nilable(::DateTime), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('end_time'), 'decoder': Utils.datetime_from_iso_format(true) } }
      # The custom field mappings of the object between the remote 3rd party & Panora
      field :field_mappings, T.nilable(::OpenApiSDK::Shared::UnifiedHrisTimeoffInputFieldMappings), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('field_mappings') } }
      # The type of time off request
      field :request_type, T.nilable(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('request_type') } }
      # The start time of the time off
      field :start_time, T.nilable(::DateTime), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('start_time'), 'decoder': Utils.datetime_from_iso_format(true) } }
      # The status of the time off request
      field :status, T.nilable(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('status') } }
      # The units used for the time off (e.g., Days, Hours)
      field :units, T.nilable(::String), { 'format_json': { 'letter_case': ::OpenApiSDK::Utils.field_name('units') } }


      sig { params(amount: T.nilable(::Float), approver: T.nilable(::String), employee: T.nilable(::String), employee_note: T.nilable(::String), end_time: T.nilable(::DateTime), field_mappings: T.nilable(::OpenApiSDK::Shared::UnifiedHrisTimeoffInputFieldMappings), request_type: T.nilable(::String), start_time: T.nilable(::DateTime), status: T.nilable(::String), units: T.nilable(::String)).void }
      def initialize(amount: nil, approver: nil, employee: nil, employee_note: nil, end_time: nil, field_mappings: nil, request_type: nil, start_time: nil, status: nil, units: nil)
        @amount = amount
        @approver = approver
        @employee = employee
        @employee_note = employee_note
        @end_time = end_time
        @field_mappings = field_mappings
        @request_type = request_type
        @start_time = start_time
        @status = status
        @units = units
      end
    end
  end
end