Odoo 20.0 Community · Persistent

hr.employee: fields, relations and API

The hr.employee model ("Employee") is a persistent model declared by the Employees module, then extended by 18 other modules. It exposes 226 fields, 205 of them declared directly on the model; 76 fields from other models point to it. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 20 JSON-2 API call.

Model identity

Technical name
hr.employee
Label
Employee
Type
Persistent (models.Model)
SQL table
hr_employee
Origin module
Employees (hr)
Extended by
hr_address_extended, hr_work_entry, hr_attendance, hr_calendar, hr_expense, hr_fleet, hr_gamification, hr_holidays, hr_holidays_attendance, hr_maintenance, hr_presence, hr_recruitment, hr_skills, hr_skills_slides, hr_timesheet, pos_hr, project_timesheet_holidays, sale_timesheet
Default order (_order)
name, id
Inherits from (mixins)
mail.thread.main.attachmentmail.thread.phonemail.activity.mixinresource.mixinavatar.mixinpos.load.mixin
Delegation (_inherits)
hr.version: fields of this model are also available, through version_id

Model fields

205 own fields, 15 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.

226 of 226 fields shown

Technical nameLabelTypeDetails
activeActiveboolean

related: resource_id.active

activity_date_deadlineActivity Date Deadlinedate
activity_exception_decorationActivity Exception Decorationselection

Values computed at runtime

activity_exception_iconActivity Exception Iconchar
activity_idsActivityone2many
activity_plans_idsActivity Plansmany2many
activity_stateActivity Stateselection

Values computed at runtime

activity_summaryActivity Summarychar
activity_type_iconActivity Type Iconchar
activity_type_idActivity Typemany2one
activity_user_idActivity Usermany2one
additional_noteAdditional Notetext
ageAgeinteger
computed
allocation_countTotal number of days allocated.float
computed

added by Time Off (hr_holidays)

allocation_displayAllocation Displaychar
computed

added by Time Off (hr_holidays)

allocation_remaining_displayAllocation Remaining Displaychar
computed

added by Time Off (hr_holidays)

allocations_countTotal number of allocationsinteger
computed

added by Time Off (hr_holidays)

applicant_idsApplicantsone2many

inverse: employee_id

added by Recruitment (hr_recruitment)

applicant_nameApplicant Namechar
computed

added by Recruitment (hr_recruitment)

attendance_basedAttendance Basedboolean

related: version_id.attendance_based

added by Attendances (hr_attendance)

attendance_idsAttendanceone2many

inverse: employee_id

added by Attendances (hr_attendance)

attendance_manager_idAttendance Approver

The user set in Attendance will access the attendance of the employee through the dedicated app and will be able to edit them.

many2one
computed, stored

added by Attendances (hr_attendance)

attendance_stateAttendance Statusselection
computed

Values: checked_out (Checked out), checked_in (Checked in)

added by Attendances (hr_attendance)

badge_idsEmployee Badges

All employee badges, linked to the employee either directly or through the user

one2many
computed

added by HR Gamification (hr_gamification)

bank_account_idsBank Accounts

Employee bank accounts to pay salaries

many2many
barcodeBadge ID

ID used for employee identification.

char
birthdayBirthdaydate
birthday_monthBirthday Monthselection
computed, stored

Values: 0 (Not specified), 1 (January), 2 (February), 3 (March), 4 (April), 5 (May), 6 (June), 7 (July), 8 (August), 9 (September), 10 (October), 11 (November)…

birthday_public_displayShow Birthday To Employeesboolean
birthday_public_display_stringPublic Date of Birthchar
computed
car_idsVehicles (private)one2many

inverse: driver_employee_id

added by Fleet History (hr_fleet)

category_idsTagsmany2many
certificateCertificate Levelselection

Values computed at runtime

certification_idsCertificationone2many
computed

added by Skills Management (hr_skills)

child_all_countIndirect Subordinates Countinteger
computed
child_countDirect Subordinates Countinteger
computed
child_idsDirect subordinatesone2many

inverse: parent_id

coach_idCoach

Select the "Employee" who is the coach of this employee. The "Coach" has no specific rights or responsibilities by default.

many2one
computed, stored
colorColor Indexinteger
company_country_codeCompany Country Codechar
read-only

related: company_country_id.code

company_country_idCompany Countrymany2one
read-only

related: company_id.country_id

company_idCompanymany2one
required
contract_date_endContract Date Enddate

related: version_id.contract_date_end

contract_date_startContract Date Startdate

related: version_id.contract_date_start

contract_template_idContract Templatemany2one
country_of_birthCountry of Birthmany2one
courses_completion_textCourses Completion Textchar
computed

added by Skills e-learning (hr_skills_slides)

currency_idCurrencymany2one
read-only

related: company_id.currency_id

current_date_versionCurrent Date Employee Recorddate

related: current_version_id.date_version

current_employee_skill_idsCurrent Employee Skillone2many
computed

added by Skills Management (hr_skills)

current_leave_stateCurrent Time Off Statusselection
computed

Values: confirm (Waiting Approval), refuse (Refused), validate1 (Waiting Second Approval), validate (Approved), cancel (Cancelled)

added by Time Off (hr_holidays)

current_version_idCurrent Employee Recordmany2one
computed, stored
current_work_entry_type_idCurrent Time Typemany2one
computed

added by Time Off (hr_holidays)

date_endDate Enddate

related: version_id.date_end

date_startDate Startdate

related: version_id.date_start

department_colorDepartment Colorinteger

related: department_id.color

departure_action_dateDeparture Action Datedate

related: version_id.departure_action_date

departure_apply_dateDeparture Apply Datedate

related: version_id.departure_apply_date

departure_apply_immediatelyDeparture Apply Immediatelyboolean

related: version_id.departure_apply_immediately

departure_dateDeparture Datedate

related: version_id.departure_date

departure_descriptionDeparture Descriptionhtml

related: version_id.departure_description

departure_idDeparturemany2one

related: version_id.departure_id

departure_reason_idDeparture Reasonmany2one

related: version_id.departure_reason_id

direct_badge_idsDirect Badge

Badges directly linked to the employee

one2many

inverse: employee_id

added by HR Gamification (hr_gamification)

dismissal_dateDismissal Datedate

related: version_id.dismissal_date

display_attendancesDisplay Attendancesboolean
computed

added by Attendances (hr_attendance)

display_certification_pageDisplay Certification Pageboolean
computed

added by Skills Management (hr_skills)

driving_licenseDriving Licensebinary
driving_license_nameDriving License Namechar
emailEmailchar

related: user_id.email

email_sentEmail Sentboolean

added by Employee Presence Control (hr_presence)

emergency_contactEmergency Contactchar
emergency_phoneEmergency Phonechar
emergency_phone_formattedEmergency Phone Formattedchar
computed
emergency_phone_sanitizedEmergency Phone Sanitizedchar
computed
employee_cars_countCarsinteger
computed

added by Fleet History (hr_fleet)

employee_propertiesPropertiesproperties
employee_skill_idsSkillsone2many

inverse: employee_id

added by Skills Management (hr_skills)

employee_type_idEmployee Typemany2one

related: version_id.employee_type_id

equipment_countEquipment Countinteger
computed

added by Maintenance - HR (hr_maintenance)

equipment_idsEquipmentone2many

inverse: employee_id

added by Maintenance - HR (hr_maintenance)

exceptional_location_idCurrent

This is the exceptional, non-weekly, location set for today.

many2one
computed
expense_manager_idExpense Approver

Select the user responsible for approving "Expenses" of this employee. If empty, the approval is done by an Administrator or Approver (determined in settings/users).

many2one
computed, stored

added by Expenses (hr_expense)

external_codeExternal Code

Use this code to export your data to a third party

char

added by Work Entries (hr_work_entry)

filter_for_expenseFilter For Expenseboolean

added by Expenses (hr_expense)

first_contract_dateFirst Contract Date

The date of the first contract of the employee in the company.

date
computed, stored
fixed_termFixed Termboolean

related: version_id.fixed_term

friday_location_idFridaymany2one
goal_idsEmployee HR Goalsone2many
computed

added by HR Gamification (hr_gamification)

has_badgesHas Badgesboolean
computed

added by HR Gamification (hr_gamification)

has_messageHas Messageboolean
has_multiple_bank_accountsHas Multiple Bank Accountsboolean
computed
has_subscribed_coursesHas Subscribed Coursesboolean
computed

added by Skills e-learning (hr_skills_slides)

has_timesheetHas Timesheetboolean
computed

added by Task Logs (hr_timesheet)

has_work_permitWork Permitbinary
hourly_costHourly Costmonetary
hours_last_monthHours Last Monthfloat
computed

added by Attendances (hr_attendance)

hours_last_month_displayHours Last Month Displaychar
computed

added by Attendances (hr_attendance)

hours_last_month_overtimeHours Last Month Overtimefloat
computed

added by Attendances (hr_attendance)

hours_previously_todayHours Previously Todayfloat
computed

added by Attendances (hr_attendance)

hours_todayHours Todayfloat
computed

added by Attendances (hr_attendance)

hr_icon_displayHr Icon Displayselection
computed

Values: presence_present (Present), presence_out_of_working_hour (Off-Hours), presence_absent (Absent), presence_home (At Home), presence_office (At Office), presence_other (At Other), presence_undetermined (Undetermined)

hr_presence_stateHr Presence Stateselection
computed

Values: present (Present), absent (Absent), out_of_working_hour (Off-Hours)

hr_responsible_idHr Responsiblemany2one

related: version_id.hr_responsible_id

id_cardID Card Copybinary
id_card_nameId Card Namechar
ip_connectedIp Connectedboolean

added by Employee Presence Control (hr_presence)

is_absentAbsent Todayboolean
computed

added by Time Off (hr_holidays)

is_currentIs Currentboolean

related: version_id.is_current

is_futureIs Futureboolean

related: version_id.is_future

is_in_contractIs In Contractboolean

related: version_id.is_in_contract

is_pastIs Pastboolean

related: version_id.is_past

is_subordinateIs Subordinateboolean
computed
is_trusted_bank_accountIs Trusted Bank Accountboolean
computed
langLangselection

Values computed at runtime

last_activityLast Activitydate
computed
last_activity_timeLast Activity Timechar
computed
last_attendance_idLast Attendancemany2one
computed, stored

added by Attendances (hr_attendance)

last_attendance_worked_hoursLast Attendance Worked Hoursfloat
computed

added by Attendances (hr_attendance)

last_check_inLast Check Indatetime

related: last_attendance_id.check_in

added by Attendances (hr_attendance)

last_check_outLast Check Outdatetime

related: last_attendance_id.check_out

added by Attendances (hr_attendance)

leave_date_fromFrom Datedate
computed

added by Time Off (hr_holidays)

leave_date_toTo Datedate
computed

added by Time Off (hr_holidays)

leave_idsLeaveone2many

inverse: employee_id

added by Time Off (hr_holidays)

leave_manager_idTime Off Approver

Select the user responsible for approving "Time Off" of this employee. If empty, the approval is done by an Administrator or Approver (determined in settings/users).

many2one
computed, stored

added by Time Off (hr_holidays)

license_plateLicense Platechar
computed

added by Fleet History (hr_fleet)

manually_set_presenceManually Set Presenceboolean

added by Employee Presence Control (hr_presence)

manually_set_presentManually Set Presentboolean

added by Employee Presence Control (hr_presence)

member_of_departmentMember of Departmentboolean
computed

added by Time Off (hr_holidays)

message_attachment_countMessage Attachment Countinteger
message_follower_idsMessage Followerone2many
message_has_errorMessage Has Errorboolean
message_has_error_counterMessage Has Error Counterinteger
message_idsMessageone2many
message_is_followerMessage Is Followerboolean
message_main_attachment_idMessage Main Attachmentmany2one
message_needactionMessage Needactionboolean
message_needaction_counterMessage Needaction Counterinteger
message_partner_idsMessage Partnermany2many
mobile_phoneWork Mobilechar
mobile_phone_formattedMobile Phone Formattedchar
computed
mobile_phone_sanitizedMobile Phone Sanitizedchar
computed
monday_location_idMondaymany2one
my_activity_date_deadlineMy Activity Date Deadlinedate
nameEmployee Namechar

related: resource_id.name

nationality_country_codeNationalitychar

related: version_id.country_id.code

newly_hiredNewly Hiredboolean
computed
parent_company_idParent Companymany2one
read-only

related: company_id.parent_id

parent_idManagermany2one
permit_noWork Permit Nochar
phonePhonechar

related: user_id.phone

phone_blacklistedPhone Blacklistedboolean
phone_sanitized_blacklistedPhone Sanitized Blacklistedboolean
pinPIN

PIN used to Check In/Out in the Kiosk Mode of the Attendance application (if enabled in Configuration) and to change the cashier in the Point of Sale application.

char
place_of_birthPlace of Birthchar
primary_bank_account_idPrimary Bank Accountmany2one
computed
private_emailPrivate Emailchar
private_phonePrivate Phonechar
private_phone_formattedPrivate Phone Formattedchar
computed
private_phone_sanitizedPrivate Phone Sanitizedchar
computed
resource_calendar_idResource Calendarmany2one

related: version_id.resource_calendar_id

resource_idResourcemany2one
required
resume_line_idsResume linesone2many

inverse: employee_id

added by Skills Management (hr_skills)

salary_distributionSalary Distributionjson
computed, stored
saturday_location_idSaturdaymany2one
shareShareboolean

related: user_id.share

show_hr_icon_displayShow Hr Icon Displayboolean
computed
show_leavesAble to see Remaining Time Offboolean
computed

added by Time Off (hr_holidays)

skill_idsSkillmany2many
computed, stored

added by Skills Management (hr_skills)

structure_type_idStructure Typemany2one

related: version_id.structure_type_id

study_fieldField of Studychar
subordinate_idsSubordinates

Direct and indirect subordinates

one2many
computed
subscribed_coursesSubscribed Coursesmany2many

related: user_partner_id.slide_channel_ids

added by Skills e-learning (hr_skills_slides)

sunday_location_idSundaymany2one
thursday_location_idThursdaymany2one
today_attendance_idsToday Attendancemany2many
computed

added by Attendances (hr_attendance)

today_location_nameToday Location Namechar
total_overtimeTotal Overtimefloat
computed

added by Attendances (hr_attendance)

trial_date_endTrial Date Enddate

related: version_id.trial_date_end

tuesday_location_idTuesdaymany2one
tzTzselection

related: version_id.tz

user_idUsermany2one

related: resource_id.user_id

user_partner_idUser's partnermany2one

related: user_id.partner_id

user_stateUser Statusselection

related: user_id.state

version_idEmployee Recordmany2one
requiredcomputed
version_idsEmployee Recordsone2many
required

inverse: employee_id

version_revisionVersion Revisionchar
computed
versions_countEmployee Records Countinteger
computed
visa_expireVisa Expiration Datedate
visa_noVisa Nochar
wednesday_location_idWednesdaymany2one
work_contact_idWork Contactmany2one
work_emailWork Emailchar
computed, stored
work_location_nameWork Location Namechar
computed
work_location_typeWork Location Typeselection
computed

Values: home (Home), office (Office), other (Other)

work_permit_expiration_dateWork Permit Expiration Datedate
work_permit_namework_permit_namechar
computed
work_permit_scheduled_activityWork Permit Scheduled Activityboolean
work_phoneWork Phonechar
computed, stored
work_phone_formattedWork Phone Formattedchar
computed
work_phone_sanitizedWork Phone Sanitizedchar
computed
activity_calendar_event_idNext Activity Calendar Eventmany2one
computed

inherited from mail.activity.mixin

avatar_1024Avatar 1024image
computed

inherited from avatar.mixin

avatar_128Avatar 128image
computed

inherited from avatar.mixin

avatar_1920Avatarimage
computed

inherited from avatar.mixin

avatar_256Avatar 256image
computed

inherited from avatar.mixin

avatar_512Avatar 512image
computed

inherited from avatar.mixin

image_1024Image 1024image

related: image_1920

inherited from image.mixin

image_128Image 128image

related: image_1920

inherited from image.mixin

image_1920Imageimage

inherited from image.mixin

image_256Image 256image

related: image_1920

inherited from image.mixin

image_512Image 512image

related: image_1920

inherited from image.mixin

message_has_sms_errorSMS Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

phone_formattedFormatted Numberchar
computed

inherited from mail.thread.phone

phone_sanitizedSanitized Number

Field used to store sanitized phone number. Helps speeding up searches and comparisons.

char
computed, stored

inherited from mail.thread.phone

rating_idsRatingsone2many

inverse: res_id

inherited from mail.thread

create_dateCreated ondatetime
read-onlyautomatic
create_uidCreated bymany2one
read-onlyautomatic
display_nameDisplay Namechar
read-onlycomputedautomatic
idIDinteger
read-onlyautomatic
write_dateLast Updated ondatetime
read-onlyautomatic
write_uidLast Updated bymany2one
read-onlyautomatic

Relations

Models linked from this model

Fields of other models pointing here

Reading this model through the API

Odoo 20 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.

curl
curl -X POST "https://your-instance.odoo.com/json/2/hr.employee/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["name","company_id","resource_id","activity_type_id","activity_user_id"],"limit":5}'
Python (requests)
import requests

BASE_URL = "https://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}

res = requests.post(
    f"{BASE_URL}/hr.employee/search_read",
    headers=headers,
    json={"domain": [], "fields": ["name","company_id","resource_id","activity_type_id","activity_user_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())
  • External API access requires Odoo's Custom plan.
  • XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
  • The access rights and record rules of the key's user apply.

Cite this tool

Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.

<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/hr-employee">hr.employee (Odoo 20.0)</a>

Sources

Data verified on September 25, 2026 · Odoo 20.0 Community

Have an Odoo project, or want to put your ERP to work with AI? Let's talk

Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.