Odoo 19.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 5 other modules. It exposes 98 fields, 69 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 19 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_attendance, hr_holidays, hr_work_entry, hr_work_entry_holidays, l10n_fr_hr_work_entry_holidays
Default order (_order)
date_version
Display field (_rec_name)
name
Inherits from (mixins)
mail.threadmail.activity.mixin

Model fields

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

98 of 98 fields shown

Technical nameLabelTypeDetails
activeActiveboolean
active_employeeActive Employeeboolean

related: employee_id.active

additional_noteAdditional Notetext
address_idWork Addressmany2one
allowed_country_state_idsAllowed Country Statemany2many
computed
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
contract_type_idContract Typemany2one
contract_wageContract Wagemonetary
computed
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_generated_fromGenerated Fromdatetime
requiredread-only

added by Work Entries (hr_work_entry)

date_generated_toGenerated Todatetime
requiredread-only

added by Work Entries (hr_work_entry)

date_startDate Startdate
computed
date_versionDate Versiondate
required
department_idDepartmentmany2one
departure_dateDeparture Datedate
departure_descriptionAdditional Informationhtml
departure_reason_idDeparture Reasonmany2one
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_typeEmployee Typeselection
required

Values: employee (Employee), worker (Worker), student (Student), trainee (Trainee), contractor (Contractor), freelance (Freelancer)

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_flexibleIs Flexibleboolean
computed, stored
is_fully_flexibleIs Fully Flexibleboolean
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_generation_dateLast Generation Datedate
read-only

added by Work Entries (hr_work_entry)

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_country_idPrivate Countrymany2one
private_state_idPrivate Statemany2one
private_streetPrivate Streetchar
private_street2Private Street2char
private_zipPrivate Zipchar
resource_calendar_idWorking Hoursmany2one
ruleset_idRulesetmany2one

added by Attendances (hr_attendance)

sexGender

This is the legal sex recognized by the state.

selection

Values: male (Male), female (Female), other (Other)

spouse_birthdateSpouse Birthdatedate
spouse_complete_nameSpouse Legal Namechar
ssnidSSN No

Social Security Number

char
structure_type_idSalary Structure Typemany2one
computed, stored
trial_date_endEnd of Trial Period

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

date
tzTzselection

related: employee_id.tz

wageWage

Employee's monthly gross wage.

monetary
work_entry_sourceWork Entry Source

Defines the source for work entries generation Working Schedule: Work entries will be generated from the working hours below. Attendances: Work entries will be generated from the employee's attendances. (requires Attendance app) Planning: Work entries will be generated from the employee's planning. (requires Planning app)

selection
required

Values: calendar (Working Schedule)

added by Work Entries (hr_work_entry)

work_entry_source_calendar_invalidWork Entry Source Calendar Invalidboolean
computed

added by Work Entries (hr_work_entry)

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_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

website_message_idsWebsite Messages

Website communication history

one2many

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 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
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_generated_from","date_generated_to","date_version","distance_home_work_unit"],"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_generated_from","date_generated_to","date_version","distance_home_work_unit"], "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 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.