hr.employee: fields, relations and API
The hr.employee model ("Employee") is a persistent model declared by the Employees module, then extended by 21 other modules. It exposes 199 fields, 179 of them declared directly on the model; 71 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 19 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_attendance, hr_expense, hr_fleet, hr_gamification, hr_holidays, hr_holidays_attendance, hr_homeworking, hr_holidays_homeworking, hr_homeworking_calendar, hr_hourly_cost, hr_maintenance, hr_org_chart, hr_presence, hr_recruitment, hr_skills, hr_skills_slides, hr_timesheet, hr_work_entry, pos_hr, project_timesheet_holidays, sale_timesheet
- Default order (_order)
name- Inherits from (mixins)
- mail.thread.main.attachmentmail.activity.mixinresource.mixinavatar.mixinpos.load.mixin
- Delegation (_inherits)
- hr.version: fields of this model are also available, through
version_id
Model fields
179 own fields, 14 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.
199 of 199 fields shown
| Technical name | Label | Type | Details |
|---|---|---|---|
| active | Active | boolean | related: |
| activity_date_deadline | Activity Date Deadline | date | |
| activity_exception_decoration | Activity Exception Decoration | selection | Values computed at runtime |
| activity_exception_icon | Activity Exception Icon | char | |
| activity_ids | Activity | one2many | |
| activity_state | Activity State | selection | Values computed at runtime |
| activity_summary | Activity Summary | char | |
| activity_type_icon | Activity Type Icon | char | |
| activity_type_id | Activity Type | many2one | |
| activity_user_id | Activity User | many2one | |
| allocation_count | Total number of days allocated. | float | computed added by Time Off ( |
| allocation_display | Allocation Display | char | computed added by Time Off ( |
| allocation_remaining_display | Allocation Remaining Display | char | computed added by Time Off ( |
| allocations_count | Total number of allocations | integer | computed added by Time Off ( |
| applicant_ids | Applicants | one2many | inverse: added by Recruitment ( |
| attendance_ids | Attendance | one2many | inverse: added by Attendances ( |
| attendance_manager_id | Attendance 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 | added by Attendances ( |
| attendance_state | Attendance Status | selection | computed Values: added by Attendances ( |
| badge_ids | Employee Badges All employee badges, linked to the employee either directly or through the user | one2many | computed added by HR Gamification ( |
| bank_account_ids | Bank Accounts Employee bank accounts to pay salaries | many2many | |
| barcode | Badge ID ID used for employee identification. | char | |
| birthday | Birthday | date | |
| birthday_public_display | Show to all employees | boolean | |
| birthday_public_display_string | Public Date of Birth | char | computed |
| car_ids | Vehicles (private) | one2many | inverse: added by Fleet History ( |
| category_ids | Tags | many2many | |
| certificate | Certificate Level | selection | Values computed at runtime |
| certification_ids | Certification | one2many | computed added by Skills Management ( |
| child_all_count | Indirect Subordinates Count | integer | computed added by HR Org Chart ( |
| child_count | Direct Subordinates Count | integer | computed added by HR Org Chart ( |
| child_ids | Direct subordinates | one2many | inverse: |
| coach_id | Coach Select the "Employee" who is the coach of this employee. The "Coach" has no specific rights or responsibilities by default. | many2one | computed, stored |
| color | Color Index | integer | |
| company_country_code | Company Country Code | char | read-only related: |
| company_country_id | Company Country | many2one | read-only related: |
| company_id | Company | many2one | required |
| contract_date_end | Contract Date End | date | related: |
| contract_date_start | Contract Date Start | date | related: |
| contract_type_id | Contract Type | many2one | related: |
| contract_wage | Contract Wage | monetary | related: |
| country_of_birth | Country of Birth | many2one | |
| courses_completion_text | Courses Completion Text | char | computed added by Skills e-learning ( |
| currency_id | Currency | many2one | read-only related: |
| current_date_version | Current Date Version | date | related: |
| current_employee_skill_ids | Current Employee Skill | one2many | computed added by Skills Management ( |
| current_leave_id | Current Time Off Type | many2one | computed added by Time Off ( |
| current_leave_state | Current Time Off Status | selection | computed Values: added by Time Off ( |
| current_version_id | Current Version | many2one | computed, stored |
| date_end | Date End | date | related: |
| date_start | Date Start | date | related: |
| department_color | Department Color | integer | related: added by HR Org Chart ( |
| direct_badge_ids | Direct Badge Badges directly linked to the employee | one2many | inverse: added by HR Gamification ( |
| display_attendances | Display Attendances | boolean | computed added by Attendances ( |
| display_certification_page | Display Certification Page | boolean | computed added by Skills Management ( |
| display_extra_hours | Display Extra Hours | boolean | related: added by Attendances ( |
| driving_license | Driving License | binary | |
char | related: | ||
| email_sent | Email Sent | boolean | added by Employee Presence Control ( |
| emergency_contact | Emergency Contact | char | |
| emergency_phone | Emergency Phone | char | |
| employee_cars_count | Cars | integer | computed added by Fleet History ( |
| employee_properties | Properties | properties | |
| employee_skill_ids | Skills | one2many | inverse: added by Skills Management ( |
| equipment_count | Equipment Count | integer | computed added by Maintenance - HR ( |
| equipment_ids | Equipment | one2many | inverse: added by Maintenance - HR ( |
| exceptional_location_id | Current This is the exceptional, non-weekly, location set for today. | many2one | computed added by Remote Work ( |
| expense_manager_id | Expense 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 ( |
| filter_for_expense | Filter For Expense | boolean | added by Expenses ( |
| friday_location_id | Friday | many2one | added by Remote Work ( |
| goal_ids | Employee HR Goals | one2many | computed added by HR Gamification ( |
| has_badges | Has Badges | boolean | computed added by HR Gamification ( |
| has_message | Has Message | boolean | |
| has_multiple_bank_accounts | Has Multiple Bank Accounts | boolean | computed |
| has_subscribed_courses | Has Subscribed Courses | boolean | computed added by Skills e-learning ( |
| has_timesheet | Has Timesheet | boolean | computed added by Task Logs ( |
| has_work_entries | Has Work Entries | boolean | computed added by Work Entries ( |
| has_work_permit | Work Permit | binary | |
| hourly_cost | Hourly Cost | monetary | added by Employee Hourly Wage ( |
| hours_last_month | Hours Last Month | float | computed added by Attendances ( |
| hours_last_month_display | Hours Last Month Display | char | computed added by Attendances ( |
| hours_last_month_overtime | Hours Last Month Overtime | float | computed added by Attendances ( |
| hours_previously_today | Hours Previously Today | float | computed added by Attendances ( |
| hours_today | Hours Today | float | computed added by Attendances ( |
| hr_icon_display | Hr Icon Display | selection | computed Values: |
| hr_presence_state | Hr Presence State | selection | computed Values: |
| hr_presence_state_display | Hr Presence State Display | selection | Values: added by Employee Presence Control ( |
| id_card | ID Card Copy | binary | |
| im_status | Im Status | char | related: |
| ip_connected | Ip Connected | boolean | added by Employee Presence Control ( |
| is_absent | Absent Today | boolean | computed added by Time Off ( |
| is_current | Is Current | boolean | related: |
| is_future | Is Future | boolean | related: |
| is_in_contract | Is In Contract | boolean | related: |
| is_past | Is Past | boolean | related: |
| is_subordinate | Is Subordinate | boolean | computed added by HR Org Chart ( |
| is_trusted_bank_account | Is Trusted Bank Account | boolean | computed |
| is_user_active | User's active | boolean | related: |
| lang | Lang | selection | Values computed at runtime |
| last_activity | Last Activity | date | computed |
| last_activity_time | Last Activity Time | char | computed |
| last_attendance_id | Last Attendance | many2one | computed, stored added by Attendances ( |
| last_attendance_worked_hours | Last Attendance Worked Hours | float | computed added by Attendances ( |
| last_check_in | Last Check In | datetime | related: added by Attendances ( |
| last_check_out | Last Check Out | datetime | related: added by Attendances ( |
| leave_date_from | From Date | date | computed added by Time Off ( |
| leave_date_to | To Date | date | computed added by Time Off ( |
| leave_manager_id | Time 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 ( |
| legal_name | Legal Name | char | computed, stored |
| license_plate | License Plate | char | computed added by Fleet History ( |
| manually_set_presence | Manually Set Presence | boolean | added by Employee Presence Control ( |
| manually_set_present | Manually Set Present | boolean | added by Employee Presence Control ( |
| message_attachment_count | Message Attachment Count | integer | |
| message_follower_ids | Message Follower | one2many | |
| message_has_error | Message Has Error | boolean | |
| message_has_error_counter | Message Has Error Counter | integer | |
| message_ids | Message | one2many | |
| message_is_follower | Message Is Follower | boolean | |
| message_main_attachment_id | Message Main Attachment | many2one | |
| message_needaction | Message Needaction | boolean | |
| message_needaction_counter | Message Needaction Counter | integer | |
| message_partner_ids | Message Partner | many2many | |
| mobile_phone | Work Mobile | char | |
| mobility_card | Mobility Card | char | added by Fleet History ( |
| monday_location_id | Monday | many2one | added by Remote Work ( |
| my_activity_date_deadline | My Activity Date Deadline | date | |
| name | Employee Name | char | related: |
| newly_hired | Newly Hired | boolean | computed |
| overtime_ids | Overtime | one2many | inverse: added by Attendances ( |
| parent_id | Manager | many2one | |
| permit_no | Work Permit No | char | |
| phone | Phone | char | related: |
| pin | PIN 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_birth | Place of Birth | char | |
| primary_bank_account_id | Primary Bank Account | many2one | computed |
| private_car_plate | Private Car Plate If you have more than one car, just separate the plates by a space. | char | |
| private_email | Private Email | char | |
| private_phone | Private Phone | char | |
| related_partners_count | Related Partners Count | integer | computed |
| resource_calendar_id | Resource Calendar | many2one | related: |
| resource_id | Resource | many2one | required |
| resume_line_ids | Resume lines | one2many | inverse: added by Skills Management ( |
| ruleset_id | Ruleset | many2one | related: added by Attendances ( |
| salary_distribution | Salary Distribution | json | computed, stored |
| saturday_location_id | Saturday | many2one | added by Remote Work ( |
| share | Share | boolean | related: |
| show_hr_icon_display | Show Hr Icon Display | boolean | computed |
| show_leaves | Able to see Remaining Time Off | boolean | computed added by Time Off ( |
| skill_ids | Skill | many2many→ hr.skill | computed, stored added by Skills Management ( |
| structure_type_id | Structure Type | many2one | related: |
| study_field | Field of Study | char | |
| study_school | School | char | |
| subordinate_ids | Subordinates Direct and indirect subordinates | one2many | computed added by HR Org Chart ( |
| subscribed_courses | Subscribed Courses | many2many | related: added by Skills e-learning ( |
| sunday_location_id | Sunday | many2one | added by Remote Work ( |
| thursday_location_id | Thursday | many2one | added by Remote Work ( |
| today_location_name | Today Location Name | char | added by Remote Work ( |
| total_overtime | Total Overtime | float | computed added by Attendances ( |
| trial_date_end | Trial Date End | date | related: |
| tuesday_location_id | Tuesday | many2one | added by Remote Work ( |
| tz | Tz | selection | Values computed at runtime |
| user_id | User | many2one | related: |
| user_partner_id | User's partner | many2one | related: |
| version_id | Version | many2one | requiredcomputed |
| version_ids | Employee Versions | one2many | required inverse: |
| version_revision | Version Revision | char | computed |
| versions_count | Versions Count | integer | computed |
| visa_expire | Visa Expiration Date | date | |
| visa_no | Visa No | char | |
| wednesday_location_id | Wednesday | many2one | added by Remote Work ( |
| work_contact_id | Work Contact | many2one | |
| work_email | Work Email | char | computed, stored |
| work_entry_source | Work Entry Source | selection | related: added by Work Entries ( |
| work_entry_source_calendar_invalid | Work Entry Source Calendar Invalid | boolean | related: added by Work Entries ( |
| work_location_name | Work Location Name | char | computed |
| work_location_type | Work Location Type | selection | computed Values: |
| work_permit_expiration_date | Work Permit Expiration Date | date | |
| work_permit_name | work_permit_name | char | computed |
| work_permit_scheduled_activity | Work Permit Scheduled Activity | boolean | |
| work_phone | Work Phone | char | computed, stored |
| activity_calendar_event_id | Next Activity Calendar Event | many2one | computed inherited from mail.activity.mixin |
| avatar_1024 | Avatar 1024 | image | computed inherited from avatar.mixin |
| avatar_128 | Avatar 128 | image | computed inherited from avatar.mixin |
| avatar_1920 | Avatar | image | computed inherited from avatar.mixin |
| avatar_256 | Avatar 256 | image | computed inherited from avatar.mixin |
| avatar_512 | Avatar 512 | image | computed inherited from avatar.mixin |
| image_1024 | Image 1024 | image | related: inherited from image.mixin |
| image_128 | Image 128 | image | related: inherited from image.mixin |
| image_1920 | Image | image | inherited from image.mixin |
| image_256 | Image 256 | image | related: inherited from image.mixin |
| image_512 | Image 512 | image | related: inherited from image.mixin |
| message_has_sms_error | SMS Delivery error If checked, some messages have a delivery error. | boolean | computed inherited from mail.thread |
| rating_ids | Ratings | one2many | inverse: inherited from mail.thread |
| website_message_ids | Website Messages Website communication history | one2many | inverse: inherited from mail.thread |
| create_date | Created on | datetime | read-onlyautomatic |
| create_uid | Created by | many2one | read-onlyautomatic |
| display_name | Display Name | char | read-onlycomputedautomatic |
| id | ID | integer | read-onlyautomatic |
| write_date | Last Updated on | datetime | read-onlyautomatic |
| write_uid | Last Updated by | many2one | read-onlyautomatic |
Relations
Models linked from this model
- fleet.vehicle: car_ids
- gamification.badge.user: badge_ids, direct_badge_ids
- gamification.goal: goal_ids
- hr.applicant: applicant_ids
- hr.attendance: attendance_ids, last_attendance_id
- hr.attendance.overtime.line: overtime_ids
- hr.attendance.overtime.ruleset: ruleset_id
- hr.contract.type: contract_type_id
- hr.employee: child_ids, coach_id, parent_id, subordinate_ids
- hr.employee.category: category_ids
- hr.employee.skill: certification_ids, current_employee_skill_ids, employee_skill_ids
- hr.leave.type: current_leave_id
- hr.payroll.structure.type: structure_type_id
- hr.resume.line: resume_line_ids
- hr.skill: skill_ids
- hr.version: current_version_id, version_id, version_ids
- hr.work.location: exceptional_location_id, friday_location_id, monday_location_id, saturday_location_id, sunday_location_id, thursday_location_id, tuesday_location_id, wednesday_location_id
- ir.attachment: message_main_attachment_id
- mail.activity: activity_ids
- mail.activity.type: activity_type_id
- mail.followers: message_follower_ids
- mail.message: message_ids
- maintenance.equipment: equipment_ids
- res.company: company_id
- res.country: company_country_id, country_of_birth
- res.currency: currency_id
- res.partner: message_partner_ids, user_partner_id, work_contact_id
- res.partner.bank: bank_account_ids, primary_bank_account_id
- res.users: activity_user_id, attendance_manager_id, expense_manager_id, leave_manager_id, user_id
- resource.calendar: resource_calendar_id
- resource.resource: resource_id
- slide.channel: subscribed_courses
Fields of other models pointing here
- account.analytic.line: employee_id, manager_id
- account.analytic.line.calendar.employee: employee_id
- account.bank.statement.line: employee_id
- fleet.vehicle: driver_employee_id, future_driver_employee_id
- fleet.vehicle.assignation.log: driver_employee_id
- fleet.vehicle.log.contract: purchaser_employee_id
- fleet.vehicle.log.services: purchaser_employee_id
- fleet.vehicle.odometer: driver_employee_id
- gamification.badge.user: employee_id
- gamification.badge.user.wizard: employee_id
- homework.location.wizard: employee_id
- hr.applicant: employee_id
- hr.attendance: employee_id, manager_id
- hr.attendance.overtime.line: employee_id
- hr.bank.account.allocation.wizard: employee_id
- hr.department: manager_id
- hr.departure.wizard: employee_ids
- hr.employee: coach_id, parent_id
- hr.employee.category: employee_ids
- hr.employee.cv.wizard: employee_ids
- hr.employee.delete.wizard: employee_ids
- hr.employee.location: employee_id
- hr.employee.public: employee_id
- hr.employee.skill: employee_id
- hr.expense: employee_id
- hr.expense.split: employee_id
- hr.holidays.summary.employee: emp
- hr.job: manager_id
- hr.leave: employee_id, first_approver_id, second_approver_id
- hr.leave.allocation: approver_id, employee_id, manager_id, second_approver_id
- hr.leave.allocation.generate.multi.wizard: employee_ids
- hr.leave.attendance.report: employee_id
- hr.leave.employee.type.report: employee_id
- hr.leave.generate.multi.wizard: employee_ids
- hr.leave.report.calendar: employee_id
- hr.manager.department.report: employee_id
- hr.resume.line: employee_id
- hr.timesheet.attendance.report: employee_id
- hr.user.work.entry.employee: employee_id
- hr.version: employee_id
- and 15 more
Reading this model through the API
Odoo 19 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 -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}'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 19.0)</a>Sources
Data verified on September 23, 2026 · Odoo 19.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.