Odoo 20.0 Community · Persistent

resource.calendar: fields, relations and API

The resource.calendar model ("Resource Working Time") is a persistent model declared by the Resource module, then extended by 3 other modules. It exposes 28 fields, 22 of them declared directly on the model; 23 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
resource.calendar
Label
Resource Working Time
Type
Persistent (models.Model)
SQL table
resource_calendar
Origin module
Resource (resource)
Extended by
hr, hr_work_entry, hr_holidays

Model fields

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

28 of 28 fields shown

Technical nameLabelTypeDetails
activeActive

If the active field is set to false, it will allow you to hide the Working Time without removing it.

boolean
associated_leaves_countTime Off Countinteger
computed

added by Time Off (hr_holidays)

attendance_idsWorking Timeone2many
computed, stored

inverse: calendar_id

calendar_typeCalendar Type

- Fixed: a weekly attendance pattern that repeats identically every week. - Variable: attendances set on specific dates rather than a repeating weekly pattern, such as a one-off schedule or a multi-week rotation. - Undefined: no predefined slots at all. The resource can work whenever it wants, optionally up to an hours target.

selection
required

Values: fixed (Fixed), variable (Variable), undefined (Undefined)

company_idCompanymany2one
country_codeCountry Codechar

related: country_id.code

country_idCountrymany2one

related: company_id.country_id

days_per_weekDays per Weekfloat
computed, stored
employees_countEmployees Countinteger
computed

added by Employees (hr)

full_time_required_hoursFull Time Equivalent

Number of hours to work on the company schedule to be considered as fulltime.

float
computed, stored
global_leave_idsGlobal Time Offone2many
computed, stored

inverse: calendar_id

hours_per_dayAverage Hour per Day

Average hours per day a resource is supposed to work with this calendar.

float
computed, stored
hours_per_weekHours per Weekfloat
computed, stored
is_fulltimeIs Full Timeboolean
computed
leave_accrual_plan_idAccrual Planmany2one

added by Time Off (hr_holidays)

leave_idsTime Offone2many

inverse: calendar_id

material_resources_countMaterial Resources Countinteger
computed

added by Employees (hr)

nameNamechar
required
reference_calendar_idReference Calendar

Reference working hours used to compute the full-time equivalent.

many2one
version_idsVersionone2many
read-only

inverse: resource_calendar_id

added by Employees (hr)

work_resources_countWork Resources countinteger
computed
work_time_rateWork Time Rate

Work time rate versus full time working schedule, should be between 0 and 100 %.

float
computed, stored
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/resource.calendar/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["name","calendar_type","company_id","country_id","leave_accrual_plan_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}/resource.calendar/search_read",
    headers=headers,
    json={"domain": [], "fields": ["name","calendar_type","company_id","country_id","leave_accrual_plan_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/resource-calendar">resource.calendar (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.