There is no endpoint that lists the available
template_id values. Get Template fetches one by id, but there is no catalogue to enumerate them. These three ids are only discoverable from this page, so treat them as the reference.template_id and your file, map the columns, validate, correct rows if needed, then submit. Submission is asynchronous — poll the status.
Order matters
own_workforce_trainings and own_workforce_accidents_absenteeisms attach rows to an employee by external_employee_id, and the accepted values are the employees that already exist in the organization. Import own_workforce first; the other two will reject rows for people the system does not know yet.
A note on “required”
In the Get Template response,required: true appears only for columns with a hard required rule. Columns that are conditionally required — through required_with or required_without — come back as required: false, with the condition inside validations. Reading only the boolean will tell you a column is optional when in practice it is mandatory as soon as you fill in its siblings. The tables below mark those as conditional.
own_workforce — employees, contracts and pay
Each row creates or updates one employee and their contract, plus a remuneration period when the pay columns are filled in.
The four remuneration columns move together: fill one and the other three become mandatory. Leave all four blank to import an employee and contract with no pay data.
own_workforce_trainings — training records
own_workforce_accidents_absenteeisms — absences and accidents
One row can carry an accident, an absence, or both. The shape is driven by which columns you fill.
In practice: a row with only accident columns records an accident; a row with only absence columns records an absence; a row with both records an accident and the sick leave it caused, linked together.
Validation rules
Five rules apply per row and two across the whole file. Two of the seven are warnings, which annotate a row without blocking the import.Per row
Across the file
Both file-level rules flag every row in the offending group, not just the second one, so a duplicate shows up twice in the error list.
The employee is resolved against the row’s effective organization — the
organization_id cell when filled, otherwise the organization of the upload. This matters in a group: the same external_employee_id can legitimately exist in several organizations of the tree, and the rule checks the one the row points at.Category values
Columns typedcategory accept a fixed set of values, which you can fetch at runtime with Get Options Source. location, nationality and organization_id resolve against the shared country and organization sources; the workforce-specific ones are:
Only the last one is organization-specific: it is resolved live against your employees, so fetch it per organization rather than caching it. The contract-type and end-reason catalogues are shared across organizations.
Related Endpoints
Create an import session
Start here, with one of the three
template_id valuesGet template
Fetch a template’s columns at runtime
Validate
Apply the rules above before submitting
Own Workforce API
Read back what you imported