These docs are for v2025-10-01. Click to read the latest docs for v2026-07-01.

2026-10-01 Release Notes

Attendance > Edit timesheet request

An edit timesheet request — an employee's request to create, edit or delete a shift on their timesheet, going through an approval flow. request_type says which of the three it is, and approved is tri-state — null while the request is pending, true once approved, false once rejected.

Request

New Field workplace_id has been added
Id of the workplace (location) for the shift.

New Field clock_in_work_area_id has been added
Id of the clock-in work area within the workplace.

New Field clock_out_work_area_id has been added
Id of the clock-out work area within the workplace.

Request

New Field workplace_id has been added
Id of the workplace (location) for the shift.

New Field clock_in_work_area_id has been added
Id of the clock-in work area within the workplace.

New Field clock_out_work_area_id has been added
Id of the clock-out work area within the workplace.

All Responses

New Field workplace_id has been added
Id of the workplace (location) for the shift

New Field clock_in_work_area_id has been added
Id of the clock-in work area within the workplace

New Field clock_out_work_area_id has been added
Id of the clock-out work area within the workplace

Attendance > Shift

A shift — one worked-time interval for an employee (a clock-in and clock-out on a given day), the atomic record of tracked attendance. It carries the day it counts towards, its clock-in and clock-out, whether it is workable, and how it was clocked.

Request

New Field workplace_id has been added
Id of the location related

New Field project_worker_id has been added
Id of the project worker the shift is imputed to. a time record for that project is created with the shift.

Attendance > Worked time

Attendance worked time

Request

New Field ids has been added
Composite worked time id combining the employee_id and date, formatted as <employee_id>._

New Endpoint

Companies > Legal entity

A legal entity of the company — a registered business entity with its own country, currency and legal name. Employees are contracted under a legal entity and finance records are booked against one; a company typically has one legal entity per country it operates in.

All Responses

New Field siret has been added
Siret number (france-specific). system for identifying french establishments. 14-digit identifier for each french establishment.

Compensations > Additional compensation

An additional compensation attached to a contract version — a recurring or one-off amount (Fixed, Variable, or PerWorkedDay strategy) that feeds into the employee's payroll runs.

New Endpoint

New Endpoint

New Endpoint

New Endpoint

New Endpoint

Compensations > Concept

A compensation concept — the type of pay item a compensation row is classified under (a fixed salary, a bonus, a deduction, ...), carrying its accounting category and the unit its amounts are measured in.

Request

New Field enabled has been added
When true, returns active concepts only; when false, only inactive

New Field default has been added
Set to true to return only the concepts factorial ships by default, leaving out the ones the company created itself. passing false has no effect.

All Responses

New Field enabled has been added
Whether the concept is enabled for the company

New Field created_at has been added
Timestamp when the concept was created

New Field updated_at has been added
Timestamp when the concept was last updated

New Endpoint

New Endpoint

Compensations > Cycle

A compensation cycle — a recurring payroll schedule (e.g. monthly) scoped to a country, currency and optional people group, that payroll runs are grouped under.

New Endpoint

Compensations > Employees compensation

An employee compensation record represents a single concept's amount entry for one employee within a specific payroll run — the granular input produced by an amount strategy, optionally overridden by a reviewer. Multiple entries for the same employee and concept can exist (e.g. one per source). For the final, aggregated amount per concept plus the payroll results the bookkeeper calculated for that payroll run, use compensations/payroll_run_employees_compensation instead.

New Endpoint

New Endpoint

New Endpoint

New Endpoint

New Endpoint

Compensations > Payroll result

Payroll Result — employee compensation rows with result_type=payroll_result, readable and importable

New Endpoint

New Endpoint

New Endpoint

Compensations > Payroll run

A payroll run — the batch that compensates a set of employees for a period, moving through a lifecycle (open → completed) and lockable once finalised. It carries the period it covers, its status and whether it is locked.

New Endpoint

Compensations > Payroll run employees compensation

A payroll-run employee compensation record represents the final amount for one concept and one employee within a specific payroll run, aggregated from the individual entries in compensations/employees_compensation. It also includes the payroll results the bookkeeper calculated during that payroll run (net pay, taxes, etc.), distinguished from aggregated compensations via result_type.

New Endpoint

New Endpoint

Contracts > Contract

An employment contract held by an employee — the container under which versioned contract terms (salary, hours, dates) live. It has a start/end date, a country and legal entity, and may be discontinuous (intermittent).

New Endpoint

New Endpoint

Contracts > Contract activity period

A single stretch of time within a contract during which the employee is either working (activity) or not working (inactivity). A change of terms, such as a raise or a promotion, does not break a period: consecutive stretches of the same kind are reported as one, so a continuous contract resolves to a single activity period. Discontinuous (intermittent) contracts alternate activity and inactivity, so use this resource to know when such an employee is actually working. Periods are read one contract at a time.

New Endpoint

Contracts > Contract version

A contract version — a versioned, effective-dated snapshot of an employee's contract terms (salary, working hours, job title, leveling, trial period, dates). The current terms are the version flagged is_reference.

Request

New Field country_data_inputs has been added
List of country-specific field inputs (e.g. contract_type). each entry sets one templated field. discover valid field_name/value_id combinations per country and legal entity via get /resources/contracts/materialized_templates.

Request

New Field country_data_inputs has been added
List of country-specific field inputs (e.g. contract_type). each entry sets one templated field. discover valid field_name/value_id combinations per country and legal entity via get /resources/contracts/materialized_templates.

All Responses

Modified Field version_data type has been changed to Proc
Country-specific contract data (template fragments and fields).

New Field default_work_type has been added
Internal field used to derive part_time / full_time? from the seeded default work-type row. not intended for direct external use.

New Field salary_currency has been added
The currency of the salary amount, inherited from the governing legal entity.

New Field contracts_contract_id has been added
Contract identifier, refers to the /contracts/contracts endpoint. use it to read the contract this version belongs to, and its activity periods.

Contracts > Legal entity change

Change an employee's legal entity by creating a new contract and contract version under the target legal entity. Always opens a new contract; the country data fields resolve against the target legal entity, not the employee's current one.

New Endpoint

Contracts > Reference contract

Contracts reference contract

All Responses

Modified Field version_data type has been changed to Proc
Country-specific contract data (template fragments and fields).

New Field default_work_type has been added
Internal field used to derive part_time / full_time? from the seeded default work-type row. not intended for direct external use.

New Field salary_currency has been added
The currency of the salary amount, inherited from the governing legal entity.

New Field contracts_contract_id has been added
Contract identifier, refers to the /contracts/contracts endpoint. use it to read the contract this version belongs to, and its activity periods.

Employees > Employee

An employee of the company — their identity, organisational placement (manager, teams, location, legal entity) and lifecycle (active, terminating, terminated). The central record the rest of the HR data hangs off.

Request

New Field bank_number_format has been added
Format of bank_number. required when bank_number is set.

Expenses > Mileage

A mileage claim — the detail record behind an expensable of type "mileage", reimbursing distance driven on company business (route, distance, rate per unit).

All Responses

New Field rate_measurement_unit has been added
The distance unit the rate is denominated in (e.g. mi). the distance is converted into this unit before the rate is applied.

Finance > Financial document

Financial Document is a document that represents a financial transaction. Could be an invoice, a credit note or receipt.

New Endpoint

New Endpoint

Integrations > Sync run

Integrations SyncRun represents a synchronization execution for a marketplace integration. This endpoint is designed to be used by integrators building an integration between Factorial and an external system through the Factorial Integration Framework.

New Endpoint

New Endpoint

New Endpoint

Integrations > Sync run output

Integrations SyncRunOutput represents the output file produced by a sync run (e.g. a CSV export). This endpoint is designed to be used by integrators building an integration between Factorial and an external system through the Factorial Integration Framework.

Request

New Field file_name has been added
Optional custom name for the uploaded file. when omitted, a standardized name is generated.

Integrations > Syncable item

Integrations SyncableItem represents the item data that needs to be synced within a SyncRun. A SyncRun represents each synchronization execution of a set of items. This endpoint is designed to be used by integrators building a integration between Factorial and an external systems.

Removed Endpoint

Integrations > Syncable state

The sync or export current state of a syncable object, along with validation messages and errors

All Responses

New Field sync_type has been added
The type of synchronization this state represents, in "namespace/resource" form. describes what is being synced independently of the resource_syncable_type that carries the id.

New Endpoint

New Endpoint

Integrations > Syncable sync run

Integrations SyncableSyncRuns represents all the resources that are included in a sync or export, in other words, a SyncRun. This endpoint is designed to be used by integrators building an integration, in order to fetch all the data that needs to be synced or exported in a given run.

All Responses

New Field syncable_state_id has been added
Identifier of the syncable state this run item is linked to. refers to the integrations/syncable_state resource

New Endpoint

New Endpoint

ItManagement > Asset category

Global asset category (Group or Subtype in the 2-level taxonomy)

New Endpoint

ItManagement > It asset

IT Asset (device, keys, etc)

Request

New Field asset_category_ids has been added
Asset category ids to filter assets by group

ItManagement > It asset model

IT Asset Model (make/model of device)

Request

New Field asset_category_id has been added
Id of the asset subtype from the it_management.asset_category catalog (e.g. the id of 'vehicles.car'). takes precedence over type_name when both are given.

Request

New Field asset_category_id has been added
Id of the asset subtype from the it_management.asset_category catalog (e.g. the id of 'vehicles.car'). takes precedence over type_name when both are given.

All Responses

New Field asset_category_id has been added
Fk to the leaf assetcategory (subtype). null if not yet categorised.

Marketplace > Installation setting

Represents the settings of an integration installation

Request

New Field integration_uuid has been added
Uuid of the integration

Removed Field integration_id has been removed

All Responses

New Field company_code has been added
Company-level code

New Field legal_entities has been added
Legal entity codes (id is the legal entity id)

New Field locations has been added
Workplace codes (id is the location id)

New Field payroll_concept_codes has been added
Payroll concept codes per legal entity (id is the payroll concept id)

Removed Field file_numbers has been removed

Removed Field establishment_codes has been removed

New Field consultant_id has been added
Consultant identifier for the installation (e.g. the datev beraternummer)

PayrollEmployees > German employee datum

German-specific payroll data fields for an employee, used for DATEV payroll integrations

New Endpoint

New Endpoint

New Endpoint

New Endpoint

Performance > Review process

Performance Review Process

Request

Removed Field cycle_id has been removed

All Responses

Removed Field cycle_id has been removed

Processes > Materialized process

A workflow run — one person going through one workflow (onboarding, offboarding, training or custom). Creating one assigns the person to the workflow and starts its first step, which is what materializes their tasks.

New Endpoint

Processes > Process

A workflow — the configured sequence of steps and tasks a person goes through. Onboarding, offboarding, training and custom workflows are all processes; the category says which one. Assigning someone to one creates a workflow run (/processes/materialized_processes).

New Endpoint

New Endpoint

Procurement > Po field value

Field value stored for a purchase order (header or line-item level)

New Endpoint

New Endpoint

Procurement > Po line item

A line item within a purchase order

New Endpoint

New Endpoint

Procurement > Po template

Purchase order template that defines the structure and fields of a PO

New Endpoint

New Endpoint

Procurement > Po template field definition

One field a purchase-order template declares: its stable field_key, the type its values are read as, and the section it sits in.

New Endpoint

New Endpoint

Procurement > Po template version

Version history entry for a PO template

New Endpoint

New Endpoint

Procurement > Purchase order

A purchase order: money the company has committed to a vendor, with the lines it covers, the template fields filled in on it and the invoices received against it.

All Responses

New Field po_template_version_id has been added
Identifier of the pinned po template version this purchase order uses. fetch that version (and its field definitions) to interpret the purchase order's header and line-item field keys. null for legacy purchase orders created without a template.

New Field header_field_values_by_key has been added
Custom header field values, addressed by the field_key of the purchase order's pinned template version, as an array of {field_key, value} pairs — exactly the shape the update endpoint accepts, so a get -> modify -> put roundtrip works verbatim. predefined fields (vendor, order_date, currency, due_date, payment_method, legal_entity) surface as top-level parameters instead, and computed or hidden values never appear (they are preserved server-side on update). null for purchase orders without a template version.

New Field line_items_by_key has been added
Line items with their field values addressed by the field_key of the purchase order's pinned template version — the same shape the update endpoint accepts: modify and send the whole set back. rows are addressed by id (rows without an id are created, persisted rows missing from the set are deleted). null for purchase orders without a template version.

New Field deadline has been added
Deadline date for the purchase order delivery or completion. writable through the update endpoint (omitted or null keeps it); readable here so the get -> modify -> put roundtrip is complete.

New Field preferred_payment_method has been added
Preferred payment method for this purchase order

New Endpoint

New Endpoint

Procurement > Purchase request

A purchase request: what somebody asked the company to buy, under which purchase type, and the order it turned into once it was approved.

All Responses

New Field rejection_reason has been added
Reason for rejection if the purchase request was rejected

Procurement > Type

A purchase type: the kind of spending a request is raised under (software, training, hardware, and so on), which decides the form it is asked to fill in and the workflow it runs through.

All Responses

New Field workflow_currency has been added
Currency for workflow approval thresholds

ProjectManagement > Project

A project of the company — a named initiative (internal or for a client) that time and costs are tracked against. Expenses, time records and budgets can be charged to a project; billable projects recharge those costs to a client.

Request

New Field project_viewers has been added
Array of employee ids who are project viewers

ProjectManagement > Rate

Project Management Rates

New Endpoint

ProjectManagement > Subproject

Project Management Subprojects

Request

Modified Field name is now mandatory
The name of the subproject.

Modified Field status is now mandatory
The status of the subproject.

ProjectManagement > Time record

Project Management Time Records

Request

New Field imputed_minutes has been added
Imputed minutes for the time record (used when no attendance shift is provided)

New Field date has been added
Reference date for the time record (used when no attendance shift is provided)

New Field project_task_id has been added
Id of the project task assigned to the time record. refers to project_management/project_tasks endpoint.

Request

New Field project_task_ids has been added
Project task ids to retrieve

Request

New Field project_task_id has been added
Id of the project task assigned to the time record. refers to project_management/project_tasks endpoint.

All Responses

New Field project_task_id has been added
Id of the project task assigned to the time record. refers to project_management/project_tasks endpoint.

New Field employee_id has been added
Id of the employee the time record belongs to

New Field project_id has been added
Id of the project the time record belongs to

New Endpoint

Tasks > Task

Factorial task element

Request

New Field author_employee_id has been added
Employee that will be set as the author of the tasks. only taken into account when authenticating with an api key, requests performed on behalf of a user always use that user as the author. when omitted, the tasks are authored by the first active employee of the company.

Request

New Field author_employee_id has been added
Employee that will be set as the author of the task. only taken into account when authenticating with an api key, requests performed on behalf of a user always use that user as the author. when omitted, the task is authored by the first active employee of the company.

Teams > Membership

A team membership — the join record placing one employee on one team, with a lead flag marking whether they lead that team.

Request

New Field with_source_attribution has been added
Populate direct, source_team_ids and parent_team_ids on each returned membership (nested teams). only honoured when filtering by a single employee_ids value without team_ids — the read that attributes one employee's own memberships, and the only one that resolves direct. reads filtered by a single team already return source_team_ids/parent_team_ids without this flag (direct stays null there); bulk reads ignore it entirely. unsupported filter combinations return 200 with empty attribution rather than an error. attribution is resolved per employee and is significantly more expensive than a plain read: intended for per-profile lookups, not bulk synchronization.

All Responses

New Field source_team_ids has been added
Ids of the teams this membership originates from (nested teams). in a company with nested teams, a direct membership includes the team itself; an inherited one, the sub-team(s) where the employee is a direct member. only populated on reads that compute source attribution — reads filtered by a single team, or by a single employee with with_source_attribution enabled. empty otherwise, including create, update and delete responses, and always empty for companies without nested teams. an empty array does not distinguish "computed and genuinely empty" from "not computed for this read" or "could not be computed", so only apply attribution-dependent logic to a read you explicitly shaped for it. a team-anchored read stops attributing above roughly a thousand members of the filtered team: past that the attribution is not computed at all and every row comes back empty, behind a normal 200.

New Field parent_team_ids has been added
Ids of the ancestor teams that receive an inherited membership through this row (nested teams) — the teams this membership rolls up into. populated under the same conditions as source_team_ids; empty otherwise.

New Field direct has been added
Whether the employee is a direct member of the team (nested teams). always present. true means direct member; false means the row exists only through inheritance from a sub-team; null means not computed for this read. only computed on reads filtered by a single employee with with_source_attribution enabled — always null otherwise, including create, update and delete responses and companies without nested teams. null is also returned when directness could not be resolved for a transient reason, even with with_source_attribution enabled, so never treat null as false — retry the read instead.

New Endpoint

Teams > Team

A team in the company's org chart — a named group employees belong to (through memberships), optionally with one or more leads and nested under a parent team.

Request

New Field parent_team_id has been added
Id of the parent team to nest the new team under (omit or null for a root team). requires the nested teams feature and permission to manage the parent team; the hierarchy is capped at 4 levels.

All Responses

New Field parent_team_id has been added
Id of the parent team this team is nested under (null for a root team). returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

New Field depth has been added
Depth of this team in the nested-team hierarchy: 1 for a top-level team, 2 for its children, and so on. returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

New Endpoint

Timeoff > Allowance stat

Timeoff allowance stat

Request

New Field simulate_policy_change_to_id has been added
When provided, computes the stats as if the employee were moved to this target time off policy effective the day after reference_date, so pass the day before the change date - for a change effective on 2026-08-03, send reference_date=2026-08-02. this truncates the source policy's current cycle at that boundary so available_days reflects the prorated balance that would actually transfer or be discarded on the change, rather than the full entitlement. purely a read - nothing is persisted. requires the policy timeline feature; without it the result is identical to an un-simulated read. can only be used together with employee_ids, because a simulation needs every employee in the read to belong to the target policy's company - which a company-wide read cannot guarantee.

Timeoff > French leave day count

The French "décompte des congés" for a single leave — the day-vs-hour count that French payroll needs, with forfait jours, public holidays, RTT and congés payés forced to days, the JNT cap applied, and ouvrés/ouvrables/calendaires resolved from the employee's work schedule. Exposed as its own resource rather than as fields on timeoff.leave so the France-specific concern stays out of the generic leave read path.

New Endpoint

Timeoff > Leave

A time off leave — one employee's request to be absent for a date range (or part of a day) under a given leave type. Its approved status is tri-state — null while the request is pending, true once approved, false once rejected.

Request

New Field include_duration_by_day has been added
Retrieve the per-day breakdown of the leave's duration (duration_by_day_attributes)

New Field forced_finish_on has been added
Caps the per-day duration walk at this date. for endless leaves (finish_on = nil) it pins the walk end; for closed leaves whose finish_on sits past this date it truncates the walk. never extends a leave past its real finish_on. must fall inside the read window (from/to or overlaps_range_from/overlaps_range_to).

All Responses

New Field duration_by_day_attributes has been added
Per-day breakdown of the leave's workable and used units, keyed by calendar date. populated only when the read requests include_duration_by_day=true; null otherwise.

New Endpoint

Timeoff > Policy

A time off policy — a named configuration that groups a set of allowances and governs the leaves of the employees assigned to it. A company has one main policy that employees fall under by default, plus optional policies for specific populations (e.g. remote employees).

Request

New Field based_on_policy_id has been added
Id of an existing policy to copy. when set, the new policy is created with a copy of that policy's allowances and no employees assigned. omit it to create a policy from scratch.

TimeSettings > Split custom time range category

Resource to manage split work time categories

New Endpoint

New Endpoint

Webhooks

Payloads

New Field siret has been added
Siret number (france-specific). system for identifying french establishments. 14-digit identifier for each french establishment.

Payloads

Modified Field version_data type has been changed to Proc
Country-specific contract data (template fragments and fields).

New Field default_work_type has been added
Internal field used to derive part_time / full_time? from the seeded default work-type row. not intended for direct external use.

New Field salary_currency has been added
The currency of the salary amount, inherited from the governing legal entity.

New Field contracts_contract_id has been added
Contract identifier, refers to the /contracts/contracts endpoint. use it to read the contract this version belongs to, and its activity periods.

Payloads

Modified Field version_data type has been changed to Proc
Country-specific contract data (template fragments and fields).

New Field default_work_type has been added
Internal field used to derive part_time / full_time? from the seeded default work-type row. not intended for direct external use.

New Field salary_currency has been added
The currency of the salary amount, inherited from the governing legal entity.

New Field contracts_contract_id has been added
Contract identifier, refers to the /contracts/contracts endpoint. use it to read the contract this version belongs to, and its activity periods.

Payloads

Modified Field version_data type has been changed to Proc
Country-specific contract data (template fragments and fields).

New Field default_work_type has been added
Internal field used to derive part_time / full_time? from the seeded default work-type row. not intended for direct external use.

New Field salary_currency has been added
The currency of the salary amount, inherited from the governing legal entity.

New Field contracts_contract_id has been added
Contract identifier, refers to the /contracts/contracts endpoint. use it to read the contract this version belongs to, and its activity periods.

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

Removed Field cycle_id has been removed

Payloads

New Field project_task_id has been added
Id of the project task assigned to the time record. refers to project_management/project_tasks endpoint.

New Field employee_id has been added
Id of the employee the time record belongs to

New Field project_id has been added
Id of the project the time record belongs to

Payloads

New Field project_task_id has been added
Id of the project task assigned to the time record. refers to project_management/project_tasks endpoint.

New Field employee_id has been added
Id of the employee the time record belongs to

New Field project_id has been added
Id of the project the time record belongs to

Payloads

New Field project_task_id has been added
Id of the project task assigned to the time record. refers to project_management/project_tasks endpoint.

New Field employee_id has been added
Id of the employee the time record belongs to

New Field project_id has been added
Id of the project the time record belongs to

Payloads

New Field project_task_id has been added
Id of the project task assigned to the time record. refers to project_management/project_tasks endpoint.

New Field employee_id has been added
Id of the employee the time record belongs to

New Field project_id has been added
Id of the project the time record belongs to

Payloads

New Field project_task_id has been added
Id of the project task assigned to the time record. refers to project_management/project_tasks endpoint.

New Field employee_id has been added
Id of the employee the time record belongs to

New Field project_id has been added
Id of the project the time record belongs to

Payloads

New Field source_team_ids has been added
Ids of the teams this membership originates from (nested teams). in a company with nested teams, a direct membership includes the team itself; an inherited one, the sub-team(s) where the employee is a direct member. only populated on reads that compute source attribution — reads filtered by a single team, or by a single employee with with_source_attribution enabled. empty otherwise, including create, update and delete responses, and always empty for companies without nested teams. an empty array does not distinguish "computed and genuinely empty" from "not computed for this read" or "could not be computed", so only apply attribution-dependent logic to a read you explicitly shaped for it. a team-anchored read stops attributing above roughly a thousand members of the filtered team: past that the attribution is not computed at all and every row comes back empty, behind a normal 200.

New Field parent_team_ids has been added
Ids of the ancestor teams that receive an inherited membership through this row (nested teams) — the teams this membership rolls up into. populated under the same conditions as source_team_ids; empty otherwise.

New Field direct has been added
Whether the employee is a direct member of the team (nested teams). always present. true means direct member; false means the row exists only through inheritance from a sub-team; null means not computed for this read. only computed on reads filtered by a single employee with with_source_attribution enabled — always null otherwise, including create, update and delete responses and companies without nested teams. null is also returned when directness could not be resolved for a transient reason, even with with_source_attribution enabled, so never treat null as false — retry the read instead.

Payloads

New Field source_team_ids has been added
Ids of the teams this membership originates from (nested teams). in a company with nested teams, a direct membership includes the team itself; an inherited one, the sub-team(s) where the employee is a direct member. only populated on reads that compute source attribution — reads filtered by a single team, or by a single employee with with_source_attribution enabled. empty otherwise, including create, update and delete responses, and always empty for companies without nested teams. an empty array does not distinguish "computed and genuinely empty" from "not computed for this read" or "could not be computed", so only apply attribution-dependent logic to a read you explicitly shaped for it. a team-anchored read stops attributing above roughly a thousand members of the filtered team: past that the attribution is not computed at all and every row comes back empty, behind a normal 200.

New Field parent_team_ids has been added
Ids of the ancestor teams that receive an inherited membership through this row (nested teams) — the teams this membership rolls up into. populated under the same conditions as source_team_ids; empty otherwise.

New Field direct has been added
Whether the employee is a direct member of the team (nested teams). always present. true means direct member; false means the row exists only through inheritance from a sub-team; null means not computed for this read. only computed on reads filtered by a single employee with with_source_attribution enabled — always null otherwise, including create, update and delete responses and companies without nested teams. null is also returned when directness could not be resolved for a transient reason, even with with_source_attribution enabled, so never treat null as false — retry the read instead.

Payloads

New Field source_team_ids has been added
Ids of the teams this membership originates from (nested teams). in a company with nested teams, a direct membership includes the team itself; an inherited one, the sub-team(s) where the employee is a direct member. only populated on reads that compute source attribution — reads filtered by a single team, or by a single employee with with_source_attribution enabled. empty otherwise, including create, update and delete responses, and always empty for companies without nested teams. an empty array does not distinguish "computed and genuinely empty" from "not computed for this read" or "could not be computed", so only apply attribution-dependent logic to a read you explicitly shaped for it. a team-anchored read stops attributing above roughly a thousand members of the filtered team: past that the attribution is not computed at all and every row comes back empty, behind a normal 200.

New Field parent_team_ids has been added
Ids of the ancestor teams that receive an inherited membership through this row (nested teams) — the teams this membership rolls up into. populated under the same conditions as source_team_ids; empty otherwise.

New Field direct has been added
Whether the employee is a direct member of the team (nested teams). always present. true means direct member; false means the row exists only through inheritance from a sub-team; null means not computed for this read. only computed on reads filtered by a single employee with with_source_attribution enabled — always null otherwise, including create, update and delete responses and companies without nested teams. null is also returned when directness could not be resolved for a transient reason, even with with_source_attribution enabled, so never treat null as false — retry the read instead.

Payloads

New Field source_team_ids has been added
Ids of the teams this membership originates from (nested teams). in a company with nested teams, a direct membership includes the team itself; an inherited one, the sub-team(s) where the employee is a direct member. only populated on reads that compute source attribution — reads filtered by a single team, or by a single employee with with_source_attribution enabled. empty otherwise, including create, update and delete responses, and always empty for companies without nested teams. an empty array does not distinguish "computed and genuinely empty" from "not computed for this read" or "could not be computed", so only apply attribution-dependent logic to a read you explicitly shaped for it. a team-anchored read stops attributing above roughly a thousand members of the filtered team: past that the attribution is not computed at all and every row comes back empty, behind a normal 200.

New Field parent_team_ids has been added
Ids of the ancestor teams that receive an inherited membership through this row (nested teams) — the teams this membership rolls up into. populated under the same conditions as source_team_ids; empty otherwise.

New Field direct has been added
Whether the employee is a direct member of the team (nested teams). always present. true means direct member; false means the row exists only through inheritance from a sub-team; null means not computed for this read. only computed on reads filtered by a single employee with with_source_attribution enabled — always null otherwise, including create, update and delete responses and companies without nested teams. null is also returned when directness could not be resolved for a transient reason, even with with_source_attribution enabled, so never treat null as false — retry the read instead.

Payloads

New Field source_team_ids has been added
Ids of the teams this membership originates from (nested teams). in a company with nested teams, a direct membership includes the team itself; an inherited one, the sub-team(s) where the employee is a direct member. only populated on reads that compute source attribution — reads filtered by a single team, or by a single employee with with_source_attribution enabled. empty otherwise, including create, update and delete responses, and always empty for companies without nested teams. an empty array does not distinguish "computed and genuinely empty" from "not computed for this read" or "could not be computed", so only apply attribution-dependent logic to a read you explicitly shaped for it. a team-anchored read stops attributing above roughly a thousand members of the filtered team: past that the attribution is not computed at all and every row comes back empty, behind a normal 200.

New Field parent_team_ids has been added
Ids of the ancestor teams that receive an inherited membership through this row (nested teams) — the teams this membership rolls up into. populated under the same conditions as source_team_ids; empty otherwise.

New Field direct has been added
Whether the employee is a direct member of the team (nested teams). always present. true means direct member; false means the row exists only through inheritance from a sub-team; null means not computed for this read. only computed on reads filtered by a single employee with with_source_attribution enabled — always null otherwise, including create, update and delete responses and companies without nested teams. null is also returned when directness could not be resolved for a transient reason, even with with_source_attribution enabled, so never treat null as false — retry the read instead.

Payloads

New Field parent_team_id has been added
Id of the parent team this team is nested under (null for a root team). returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

New Field depth has been added
Depth of this team in the nested-team hierarchy: 1 for a top-level team, 2 for its children, and so on. returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

Payloads

New Field parent_team_id has been added
Id of the parent team this team is nested under (null for a root team). returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

New Field depth has been added
Depth of this team in the nested-team hierarchy: 1 for a top-level team, 2 for its children, and so on. returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

Payloads

New Field parent_team_id has been added
Id of the parent team this team is nested under (null for a root team). returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

New Field depth has been added
Depth of this team in the nested-team hierarchy: 1 for a top-level team, 2 for its children, and so on. returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

Payloads

New Field parent_team_id has been added
Id of the parent team this team is nested under (null for a root team). returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

New Field depth has been added
Depth of this team in the nested-team hierarchy: 1 for a top-level team, 2 for its children, and so on. returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

Payloads

New Field parent_team_id has been added
Id of the parent team this team is nested under (null for a root team). returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

New Field depth has been added
Depth of this team in the nested-team hierarchy: 1 for a top-level team, 2 for its children, and so on. returned by read, create and move; null on update and delete, which do not change the hierarchy, and always null for companies without nested teams.

Payloads

New Field duration_by_day_attributes has been added
Per-day breakdown of the leave's workable and used units, keyed by calendar date. populated only when the read requests include_duration_by_day=true; null otherwise.

Payloads

New Field duration_by_day_attributes has been added
Per-day breakdown of the leave's workable and used units, keyed by calendar date. populated only when the read requests include_duration_by_day=true; null otherwise.

Payloads

New Field duration_by_day_attributes has been added
Per-day breakdown of the leave's workable and used units, keyed by calendar date. populated only when the read requests include_duration_by_day=true; null otherwise.

Payloads

New Field duration_by_day_attributes has been added
Per-day breakdown of the leave's workable and used units, keyed by calendar date. populated only when the read requests include_duration_by_day=true; null otherwise.

Payloads

New Field duration_by_day_attributes has been added
Per-day breakdown of the leave's workable and used units, keyed by calendar date. populated only when the read requests include_duration_by_day=true; null otherwise.

Payloads

New Field duration_by_day_attributes has been added
Per-day breakdown of the leave's workable and used units, keyed by calendar date. populated only when the read requests include_duration_by_day=true; null otherwise.