Odoo 20.0 Community · Persistent

hr.version: fields, relations and API

The hr.version model ("Employee Contract") is a persistent model declared by the Employees module, then extended by 6 other modules. It exposes 96 fields, 67 of them declared directly on the model; 5 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.version
Label
Employee Contract
Type
Persistent (models.Model)
SQL table
hr_version
Origin module
Employees (hr)
Extended by
hr_address_extended, hr_work_entry, hr_attendance, hr_holidays, hr_holidays_attendance, l10n_fr_hr_holidays
Default order (_order)
date_version
Display field (_rec_name)
name
Inherits from (mixins)
mail.threadmail.activity.mixin

Model fields

67 own fields, 24 inherited from mixins and 5 automatic ORM fields. Click a name to get a direct link to that field.

96 of 96 fields shown

Technical nameLabelTypeDetails
activeActiveboolean
active_employeeActive Employeeboolean

related: employee_id.active

address_idWork Addressmany2one
allocation_from_working_schedule_idAllocation from working schedulemany2one

added by Time Off (hr_holidays)

allowed_country_state_idsAllowed Country Statemany2many
computed
attendance_basedAttendance Based

When enabled, payslips are computed from badge records rather than the employee's work schedule. Time off is always accounted for.

boolean

added by Attendances (hr_attendance)

childrenDependent Childreninteger
company_country_idCompany countrymany2one
read-only

related: company_id.country_id

company_idCompanymany2one
computed, stored
contract_date_endContract End Date

End date of the contract (if it's a fixed-term contract).

date
contract_date_startContract Start Datedate
contract_template_idContract Template

Select a contract template to auto-fill the contract form with predefined values. You can still edit the fields as needed after applying the template.

many2one
country_codeCountry Codechar
read-only

related: company_country_id.code

country_idNationality (Country)many2one
currency_idCurrencymany2one
read-only

related: company_id.currency_id

date_endDate Enddate
computed
date_startDate Startdate
computed
date_versionEffective Datedate
required
department_idDepartmentmany2one
departure_action_dateDeparture Action Datedate

related: departure_id.action_date

departure_apply_dateDeparture Apply Datedate

related: departure_id.apply_date

departure_apply_immediatelyDeparture Apply Immediatelyboolean

related: departure_id.apply_immediately

departure_dateDeparture Datedate

related: departure_id.departure_date

departure_descriptionDeparture Descriptionhtml

related: departure_id.departure_description

departure_idDeparturemany2one
departure_reason_idDeparture Reasonmany2one

related: departure_id.departure_reason_id

dismissal_dateDismissal Datedate

related: departure_id.dismissal_date

display_nameDisplay Namechar
computed
distance_home_workHome-Work Distanceinteger
distance_home_work_unitHome-Work Distance unitselection
required

Values: kilometers (km), miles (mi)

employee_idEmployeemany2one
employee_type_idEmployee Typemany2one
fixed_termFixed Termboolean
hr_responsible_idHR Responsible

Person responsible for validating the employee's contracts.

many2one
required
identification_idIdentification No

Enter the employee's National Identification Number issued by the government (e.g., Aadhaar, SIN, NIN). This is used for official records and statutory compliance.

char
is_currentIs Currentboolean
computed
is_custom_job_titleIs Custom Job Titleboolean
computed, stored
is_futureIs Futureboolean
computed
is_in_contractIs In Contractboolean
computed
is_pastIs Pastboolean
computed
job_idJobmany2one
→ hr.job
job_titleJob Titlechar
computed, stored
km_home_workHome-Work Distance in Kminteger
computed, stored
last_modified_dateLast Modified ondatetime
required
last_modified_uidLast Modified bymany2one
required
maritalMarital Statusselection
required

Values computed at runtime

member_of_departmentMember of department

Whether the employee is a member of the active user's department or one of it's child department.

boolean
computed
nameNamechar
passport_expiration_datePassport Expiration Datedate
passport_idPassport Nochar
private_cityPrivate Citychar
private_city_idPrivate City IDmany2one
computed, stored

added by HR Address Extended (hr_address_extended)

private_country_enforce_citiesPrivate Country Enforce Citiesboolean
read-only

related: private_country_id.enforce_cities

added by HR Address Extended (hr_address_extended)

private_country_idPrivate Countrymany2one
private_state_idPrivate Statemany2one
private_streetPrivate Streetchar
private_street2Private Street2char
private_zipPrivate Zipchar
resource_calendar_idWorking Hoursmany2one
required
sexSex

This is the legal sex as recognized by the state, used for official and statutory purposes.

selection

Values: male (Male), female (Female)

spouse_birthdateSpouse Birthdatedate
spouse_complete_nameSpouse Legal Namechar
structure_type_idSalary Structure Typemany2one
computed, stored
trial_date_endEnd of Trial Period

End date of the trial period (if there is one).

date
tzTimezoneselection
required

Values computed at runtime

wageWage

Employee's monthly gross wage.

monetary
work_location_idWork Locationmany2one
activity_calendar_event_idNext Activity Calendar Eventmany2one
computed

inherited from mail.activity.mixin

activity_date_deadlineNext Activity Deadlinedate
read-onlycomputed

inherited from mail.activity.mixin

activity_exception_decorationActivity Exception Decoration

Type of the exception activity on record.

selection
computed

Values: warning (Alert), danger (Error)

inherited from mail.activity.mixin

activity_exception_iconIcon

Icon to indicate an exception activity.

char
computed

inherited from mail.activity.mixin

activity_idsActivitiesone2many

inverse: res_id

inherited from mail.activity.mixin

activity_plans_idsActivity Plansmany2many
computed

inherited from mail.activity.mixin

activity_stateActivity State

Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities.

selection
computed

Values: overdue (Overdue), today (Today), planned (Planned)

inherited from mail.activity.mixin

activity_summaryNext Activity Summarychar

related: activity_ids.summary

inherited from mail.activity.mixin

activity_type_iconActivity Type Iconchar

related: activity_ids.icon

inherited from mail.activity.mixin

activity_type_idNext Activity Typemany2one

related: activity_ids.activity_type_id

inherited from mail.activity.mixin

activity_user_idResponsible Usermany2one
read-onlycomputed

inherited from mail.activity.mixin

has_messageHas Messageboolean
computed

inherited from mail.thread

message_attachment_countAttachment Countinteger
computed

inherited from mail.thread

message_follower_idsFollowersone2many

inverse: res_id

inherited from mail.thread

message_has_errorMessage Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_has_error_counterNumber of errors

Number of messages with delivery error

integer
computed

inherited from mail.thread

message_has_sms_errorSMS Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_idsMessagesone2many

inverse: res_id

inherited from mail.thread

message_is_followerIs Followerboolean
computed

inherited from mail.thread

message_needactionAction Needed

If checked, new messages require your attention.

boolean
computed

inherited from mail.thread

message_needaction_counterNumber of Actions

Number of messages requiring action

integer
computed

inherited from mail.thread

message_partner_idsFollowers (Partners)many2many
computed

inherited from mail.thread

my_activity_date_deadlineMy Activity Deadlinedate
read-onlycomputed

inherited from mail.activity.mixin

rating_idsRatingsone2many

inverse: res_id

inherited from mail.thread

create_dateCreated ondatetime
read-onlyautomatic
create_uidCreated bymany2one
read-onlyautomatic
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.version/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["name","date_version","distance_home_work_unit","hr_responsible_id","last_modified_date"],"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.version/search_read",
    headers=headers,
    json={"domain": [], "fields": ["name","date_version","distance_home_work_unit","hr_responsible_id","last_modified_date"], "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-version">hr.version (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.