Work scheduled before it happens: plans, rosters, shifts, calendar items, projects, recurrence.
Dates and times
Send a date as Y-m-d and a date with a time as Y-m-d H:i:s, for
example 2026-08-28 and 2026-08-28 14:30:00. Values are read in the
company time zone. Other spellings PHP can parse are usually accepted, but a slash-separated
date is read month-first, so send Y-m-d and avoid the ambiguity. A duration is
HH:MM or HH:MM:SS, or a plain number of seconds.
Responses return dates and times in ISO 8601 with the offset, for example
2026-08-28T14:30:00+0300. The Return table below lists the fields of the response
and their types; it has no description column for them, so the format above is the one to
assume for every DateTime field it shows.
A plan item is work scheduled before it happens: who should do what, when, on which field
or machine. Plan items carry a worktype, a resource, planned times and planned material
usage. These endpoints create and edit plan items, change their dates, add material usage
and mark one done. Marking a plan item done creates the Workdone that records the work
actually performed. Recurring plans generate their occurrences from a recurrence rule
rather than being entered one by one.
POST
/api/multiplan/add
Add multiple Planitem
Documentation
Sandbox
Documentation
Adds multiple Planitem. Returns the created plan item ids as { added: [...] }
Parameters
Parameter
Type
Required?
Format
Description
resource_type
string
false
Resource the dates are grouped by - worker, agrifield or main_facility. Defaults to worker.
editable
object
true
The plan item template applied to every selected slot.
resource_dates
object
true
Dates selected per resource, keyed by resource id.
workers_dates
object
false
Dates selected per worker. Used instead of resource_dates when present.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Plan rows for a period grouped by resource type - worker, main_facility
Documentation
Sandbox
Documentation
Plan rows for a period grouped by resource type - worker, main_facility, secondary_facility,
workobject or customer. Returns an array of objects with: plan_data, dates_array, classificator
Parameters
Parameter
Type
Required?
Format
Description
from
date
false
YYYY-MM-DD
From. Date as Y-m-d, for example 2026-08-28. Defaults to the first day of the current month when omitted.
to
date
false
YYYY-MM-DD
To. Date as Y-m-d, for example 2026-08-28. The whole of that day is included. When omitted the period runs to the end of the current month.
resource_type
string
false
Resource the plan is grouped by. Defaults to worker.
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (classificator, default, planitem). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Plan rows for a period grouped by resource type - worker, main_facility
Documentation
Sandbox
Documentation
Plan rows for a period grouped by resource type - worker, main_facility, secondary_facility,
workobject or customer. Returns an array of objects with: plan_data, dates_array, classificator
Requirements
Name
Requirement
Type
Description
resource_type
Parameters
Parameter
Type
Required?
Format
Description
from
date
false
YYYY-MM-DD
From. Date as Y-m-d, for example 2026-08-28. Defaults to the first day of the current month when omitted.
to
date
false
YYYY-MM-DD
To. Date as Y-m-d, for example 2026-08-28. The whole of that day is included. When omitted the period runs to the end of the current month.
resource_type
string
false
Resource the plan is grouped by. Defaults to worker.
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (classificator, default, planitem). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Planitem report for a period. Accepts the same filters as the plan collection; selfonly=1 limits
it to the authenticated worker and no_dates=1 ignores the period. Returns the plan report
collection for the period, paginated when pagination is requested
Parameters
Parameter
Type
Required?
Format
Description
from
date
false
YYYY-MM-DD
Start of the period, Y-m-d.
to
date
false
YYYY-MM-DD
End of the period, Y-m-d.
no_dates
boolean
false
Truthy ignores the from/to range and returns records regardless of date.
selfonly
boolean
false
Truthy limits the result to the authenticated worker.
current_page
integer
false
Page number, 1-based.
worker_id
integer
false
Filter by worker id.
worktype_id
integer
false
Filter by worktype id.
main_facility_id
integer
false
Filter by main facility id.
facility_id
integer
false
Filter by facility id.
cost_account_id
integer
false
Filter by cost account id.
project_id
integer
false
Filter by project id.
customer_id
integer
false
Filter by customer id.
workobject_id
integer
false
Filter by workobject id.
agrifield_work_id
integer
false
Filter by agrifield work id.
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (planitem, workdone, planitemlist, owner, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Creates or modifies a Planitem. Planitem subtypes, set through roster_type, are Task (id 8, the common case, with planned start and stop time), Todo (id 12, no planned stop time), Teamwork (id 18) and Groupwork (id 19).
Requirements
Name
Requirement
Type
Description
id
integer|string
Planitem id or uuid. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
outer_id
string
false
Truncated to 100 characters.
description
string
false
Truncated to 1000 characters.
planned_start_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned start of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 13:30:00. An empty value stores the current time. Ignored when use_multidate is set.
is_deleted
boolean
false
is_draft
boolean
false
planned_duration_hours
integer
false
planned_duration_sec
integer
false
cost
float
false
Decimal comma is accepted.
roster_type
object
false
Planitem subtype. Default is { "id": 8 }.
worker
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
customer
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
customer_person
object
false
Reference to CustomerPerson. Send { "id": <id> }, or null to clear.
provider
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
worktype
object
false
Reference to Worktype. Send { "id": <id> }, or null to clear.
main_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
secondary_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
agrifield
object
false
Reference to Agrifield. Send { "id": <id> }, or null to clear.
project
object
false
Reference to Project. Send { "id": <id> }, or null to clear.
cost_account
object
false
Reference to CostAccount. Send { "id": <id> }, or null to clear.
agrifield_work
object
false
Reference to AgrifieldWork. Send { "id": <id> }, or null to clear.
maintenance_unit
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
foreman
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
based_on_entity_id
integer
false
Existing plan item the new one is copied from.
drag_n_drop_resource
string
false
Resource the item was dropped onto in the planner - worker, agrifield or main_facility.
use_multidate
boolean
false
Set to 1 to create one plan item per date in multidate_dates instead of a single item.
multidate_dates
array of dates
false
Dates to create plan items for. Read only when use_multidate is set.
multidate_start_clock
string
false
Start clock as HH:MM, applied to every date in multidate_dates.
multidate_stop_clock
string
false
Stop clock as HH:MM, applied to every date in multidate_dates.
planned_stop_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned end of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. When empty, the item is created as a Todo: roster_type is set to { "id": 12 } regardless of what was sent. Ignored when use_multidate is set.
worker_ids
array of integers
false
Creates one plan item per worker. Takes precedence over worker.
material_planned_usages
array of objects
false
Planned material usage. Applied to the first plan item only; the rest receive a copy.
fault_planitem
object
false
Links the plan item to a fault item. Object with a faultitem field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
inspection_planitem
object
false
Links the plan item to an inspection case. Object with an inspection_case field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
split_to_days
boolean
false
Splits a plan item spanning several days into one item per day.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
name
string
*
Planitem name, Utf8 string 255 chars. Auto generated based on plannedDurationSec, plannedStartTime, plannedStopTime
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
material_planned_usage_str
string
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Comma-separated subset of the serializer groups this endpoint offers (default, planitem, material_all, workdone, planitemlist, owner, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
division
object (Department)
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Creates or modifies a Planitem. Planitem subtypes, set through roster_type, are Task (id 8, the common case, with planned start and stop time), Todo (id 12, no planned stop time), Teamwork (id 18) and Groupwork (id 19).
Requirements
Name
Requirement
Type
Description
id
integer|string
Planitem id or uuid. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
outer_id
string
false
Truncated to 100 characters.
description
string
false
Truncated to 1000 characters.
planned_start_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned start of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 13:30:00. An empty value stores the current time. Ignored when use_multidate is set.
is_deleted
boolean
false
is_draft
boolean
false
planned_duration_hours
integer
false
planned_duration_sec
integer
false
cost
float
false
Decimal comma is accepted.
roster_type
object
false
Planitem subtype. Default is { "id": 8 }.
worker
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
customer
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
customer_person
object
false
Reference to CustomerPerson. Send { "id": <id> }, or null to clear.
provider
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
worktype
object
false
Reference to Worktype. Send { "id": <id> }, or null to clear.
main_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
secondary_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
agrifield
object
false
Reference to Agrifield. Send { "id": <id> }, or null to clear.
project
object
false
Reference to Project. Send { "id": <id> }, or null to clear.
cost_account
object
false
Reference to CostAccount. Send { "id": <id> }, or null to clear.
agrifield_work
object
false
Reference to AgrifieldWork. Send { "id": <id> }, or null to clear.
maintenance_unit
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
foreman
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
based_on_entity_id
integer
false
Existing plan item the new one is copied from.
drag_n_drop_resource
string
false
Resource the item was dropped onto in the planner - worker, agrifield or main_facility.
use_multidate
boolean
false
Set to 1 to create one plan item per date in multidate_dates instead of a single item.
multidate_dates
array of dates
false
Dates to create plan items for. Read only when use_multidate is set.
multidate_start_clock
string
false
Start clock as HH:MM, applied to every date in multidate_dates.
multidate_stop_clock
string
false
Stop clock as HH:MM, applied to every date in multidate_dates.
planned_stop_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned end of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. When empty, the item is created as a Todo: roster_type is set to { "id": 12 } regardless of what was sent. Ignored when use_multidate is set.
worker_ids
array of integers
false
Creates one plan item per worker. Takes precedence over worker.
material_planned_usages
array of objects
false
Planned material usage. Applied to the first plan item only; the rest receive a copy.
fault_planitem
object
false
Links the plan item to a fault item. Object with a faultitem field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
inspection_planitem
object
false
Links the plan item to an inspection case. Object with an inspection_case field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
split_to_days
boolean
false
Splits a plan item spanning several days into one item per day.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
name
string
*
Planitem name, Utf8 string 255 chars. Auto generated based on plannedDurationSec, plannedStartTime, plannedStopTime
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
material_planned_usage_str
string
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Creates or modifies a Planitem. Planitem subtypes, set through roster_type, are Task (id 8, the common case, with planned start and stop time), Todo (id 12, no planned stop time), Teamwork (id 18) and Groupwork (id 19).
Requirements
Name
Requirement
Type
Description
id
integer|string
Planitem id or uuid. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
outer_id
string
false
Truncated to 100 characters.
description
string
false
Truncated to 1000 characters.
planned_start_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned start of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 13:30:00. An empty value stores the current time. Ignored when use_multidate is set.
is_deleted
boolean
false
is_draft
boolean
false
planned_duration_hours
integer
false
planned_duration_sec
integer
false
cost
float
false
Decimal comma is accepted.
roster_type
object
false
Planitem subtype. Default is { "id": 8 }.
worker
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
customer
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
customer_person
object
false
Reference to CustomerPerson. Send { "id": <id> }, or null to clear.
provider
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
worktype
object
false
Reference to Worktype. Send { "id": <id> }, or null to clear.
main_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
secondary_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
agrifield
object
false
Reference to Agrifield. Send { "id": <id> }, or null to clear.
project
object
false
Reference to Project. Send { "id": <id> }, or null to clear.
cost_account
object
false
Reference to CostAccount. Send { "id": <id> }, or null to clear.
agrifield_work
object
false
Reference to AgrifieldWork. Send { "id": <id> }, or null to clear.
maintenance_unit
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
foreman
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
based_on_entity_id
integer
false
Existing plan item the new one is copied from.
drag_n_drop_resource
string
false
Resource the item was dropped onto in the planner - worker, agrifield or main_facility.
use_multidate
boolean
false
Set to 1 to create one plan item per date in multidate_dates instead of a single item.
multidate_dates
array of dates
false
Dates to create plan items for. Read only when use_multidate is set.
multidate_start_clock
string
false
Start clock as HH:MM, applied to every date in multidate_dates.
multidate_stop_clock
string
false
Stop clock as HH:MM, applied to every date in multidate_dates.
planned_stop_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned end of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. When empty, the item is created as a Todo: roster_type is set to { "id": 12 } regardless of what was sent. Ignored when use_multidate is set.
worker_ids
array of integers
false
Creates one plan item per worker. Takes precedence over worker.
material_planned_usages
array of objects
false
Planned material usage. Applied to the first plan item only; the rest receive a copy.
fault_planitem
object
false
Links the plan item to a fault item. Object with a faultitem field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
inspection_planitem
object
false
Links the plan item to an inspection case. Object with an inspection_case field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
split_to_days
boolean
false
Splits a plan item spanning several days into one item per day.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
name
string
*
Planitem name, Utf8 string 255 chars. Auto generated based on plannedDurationSec, plannedStartTime, plannedStopTime
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
material_planned_usage_str
string
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Creates a Workdone from a Planitem and marks the plan item done
Documentation
Sandbox
Documentation
Creates new Workdone from Planitem
Requirements
Name
Requirement
Type
Description
planid
integer|string
Planitem id
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
name
string
*
Planitem name, Utf8 string 255 chars. Auto generated based on plannedDurationSec, plannedStartTime, plannedStopTime
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
material_planned_usage_str
string
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Comma-separated subset of the serializer groups this endpoint offers (default, planitem, material_all, workdone, planitemlist, owner, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
division
object (Department)
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Startpoint. Date as Y-m-d, for example 2026-08-28. Defaults to the first day of the current month when omitted.
to
date
false
YYYY-MM-DD
Endpoint. Date as Y-m-d, for example 2026-08-28. The whole of that day is included. When omitted the period runs to the end of the current month.
agrifield_work_id
integer
false
AgrifieldWork id
color_base
string
false
Entity the row colour is taken from.
cost_account_id
integer
false
Filter by cost account id.
main_facility_id
integer
false
Filter by main facility id.
project_id
integer
false
Filter by project id.
selfonly
boolean
false
Truthy limits the result to the authenticated worker.
worker_id
integer
false
Filter by worker id.
worktype_id
integer
false
Filter by worktype id.
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (planitem, planitemlist, owner, search, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Creates or modifies a Planitem. Planitem subtypes, set through roster_type, are Task (id 8, the common case, with planned start and stop time), Todo (id 12, no planned stop time), Teamwork (id 18) and Groupwork (id 19).
Requirements
Name
Requirement
Type
Description
id
integer|string
Planitem id or uuid. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
outer_id
string
false
Truncated to 100 characters.
description
string
false
Truncated to 1000 characters.
planned_start_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned start of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 13:30:00. An empty value stores the current time. Ignored when use_multidate is set.
is_deleted
boolean
false
is_draft
boolean
false
planned_duration_hours
integer
false
planned_duration_sec
integer
false
cost
float
false
Decimal comma is accepted.
roster_type
object
false
Planitem subtype. Default is { "id": 8 }.
worker
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
customer
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
customer_person
object
false
Reference to CustomerPerson. Send { "id": <id> }, or null to clear.
provider
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
worktype
object
false
Reference to Worktype. Send { "id": <id> }, or null to clear.
main_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
secondary_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
agrifield
object
false
Reference to Agrifield. Send { "id": <id> }, or null to clear.
project
object
false
Reference to Project. Send { "id": <id> }, or null to clear.
cost_account
object
false
Reference to CostAccount. Send { "id": <id> }, or null to clear.
agrifield_work
object
false
Reference to AgrifieldWork. Send { "id": <id> }, or null to clear.
maintenance_unit
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
foreman
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
based_on_entity_id
integer
false
Existing plan item the new one is copied from.
drag_n_drop_resource
string
false
Resource the item was dropped onto in the planner - worker, agrifield or main_facility.
use_multidate
boolean
false
Set to 1 to create one plan item per date in multidate_dates instead of a single item.
multidate_dates
array of dates
false
Dates to create plan items for. Read only when use_multidate is set.
multidate_start_clock
string
false
Start clock as HH:MM, applied to every date in multidate_dates.
multidate_stop_clock
string
false
Stop clock as HH:MM, applied to every date in multidate_dates.
planned_stop_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned end of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. When empty, the item is created as a Todo: roster_type is set to { "id": 12 } regardless of what was sent. Ignored when use_multidate is set.
worker_ids
array of integers
false
Creates one plan item per worker. Takes precedence over worker.
material_planned_usages
array of objects
false
Planned material usage. Applied to the first plan item only; the rest receive a copy.
fault_planitem
object
false
Links the plan item to a fault item. Object with a faultitem field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
inspection_planitem
object
false
Links the plan item to an inspection case. Object with an inspection_case field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
split_to_days
boolean
false
Splits a plan item spanning several days into one item per day.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
name
string
*
Planitem name, Utf8 string 255 chars. Auto generated based on plannedDurationSec, plannedStartTime, plannedStopTime
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
material_planned_usage_str
string
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
New planned start. Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00.
to
datetime
true
YYYY-MM-DD HH:MM:SS
New planned end. Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Resource usage of planitems over a period. Returns an array of objects with: name, plancount,
hours, hectares, worker, main_facility, secondary_facility
Parameters
Parameter
Type
Required?
Format
Description
from
date
false
YYYY-MM-DD
Date as Y-m-d, for example 2026-08-28.
to
date
false
YYYY-MM-DD
Date as Y-m-d, for example 2026-08-28.
agrifield_work_id
integer
false
AgrifieldWork id
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (owner, planitem, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Comma-separated subset of the serializer groups this endpoint offers (default, planitem, material_all, workdone, planitemlist, owner, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
division
object (Department)
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Creates or modifies a Planitem. Planitem subtypes, set through roster_type, are Task (id 8, the common case, with planned start and stop time), Todo (id 12, no planned stop time), Teamwork (id 18) and Groupwork (id 19).
Requirements
Name
Requirement
Type
Description
id
integer|string
Planitem id or uuid. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
outer_id
string
false
Truncated to 100 characters.
description
string
false
Truncated to 1000 characters.
planned_start_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned start of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 13:30:00. An empty value stores the current time. Ignored when use_multidate is set.
is_deleted
boolean
false
is_draft
boolean
false
planned_duration_hours
integer
false
planned_duration_sec
integer
false
cost
float
false
Decimal comma is accepted.
roster_type
object
false
Planitem subtype. Default is { "id": 8 }.
worker
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
customer
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
customer_person
object
false
Reference to CustomerPerson. Send { "id": <id> }, or null to clear.
provider
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
worktype
object
false
Reference to Worktype. Send { "id": <id> }, or null to clear.
main_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
secondary_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
agrifield
object
false
Reference to Agrifield. Send { "id": <id> }, or null to clear.
project
object
false
Reference to Project. Send { "id": <id> }, or null to clear.
cost_account
object
false
Reference to CostAccount. Send { "id": <id> }, or null to clear.
agrifield_work
object
false
Reference to AgrifieldWork. Send { "id": <id> }, or null to clear.
maintenance_unit
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
foreman
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
based_on_entity_id
integer
false
Existing plan item the new one is copied from.
drag_n_drop_resource
string
false
Resource the item was dropped onto in the planner - worker, agrifield or main_facility.
use_multidate
boolean
false
Set to 1 to create one plan item per date in multidate_dates instead of a single item.
multidate_dates
array of dates
false
Dates to create plan items for. Read only when use_multidate is set.
multidate_start_clock
string
false
Start clock as HH:MM, applied to every date in multidate_dates.
multidate_stop_clock
string
false
Stop clock as HH:MM, applied to every date in multidate_dates.
planned_stop_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned end of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. When empty, the item is created as a Todo: roster_type is set to { "id": 12 } regardless of what was sent. Ignored when use_multidate is set.
worker_ids
array of integers
false
Creates one plan item per worker. Takes precedence over worker.
material_planned_usages
array of objects
false
Planned material usage. Applied to the first plan item only; the rest receive a copy.
fault_planitem
object
false
Links the plan item to a fault item. Object with a faultitem field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
inspection_planitem
object
false
Links the plan item to an inspection case. Object with an inspection_case field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
split_to_days
boolean
false
Splits a plan item spanning several days into one item per day.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
name
string
*
Planitem name, Utf8 string 255 chars. Auto generated based on plannedDurationSec, plannedStartTime, plannedStopTime
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
material_planned_usage_str
string
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Creates or modifies a Planitem. Planitem subtypes, set through roster_type, are Task (id 8, the common case, with planned start and stop time), Todo (id 12, no planned stop time), Teamwork (id 18) and Groupwork (id 19).
Requirements
Name
Requirement
Type
Description
id
integer|string
Planitem id or uuid. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
outer_id
string
false
Truncated to 100 characters.
description
string
false
Truncated to 1000 characters.
planned_start_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned start of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 13:30:00. An empty value stores the current time. Ignored when use_multidate is set.
is_deleted
boolean
false
is_draft
boolean
false
planned_duration_hours
integer
false
planned_duration_sec
integer
false
cost
float
false
Decimal comma is accepted.
roster_type
object
false
Planitem subtype. Default is { "id": 8 }.
worker
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
customer
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
customer_person
object
false
Reference to CustomerPerson. Send { "id": <id> }, or null to clear.
provider
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
worktype
object
false
Reference to Worktype. Send { "id": <id> }, or null to clear.
main_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
secondary_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
agrifield
object
false
Reference to Agrifield. Send { "id": <id> }, or null to clear.
project
object
false
Reference to Project. Send { "id": <id> }, or null to clear.
cost_account
object
false
Reference to CostAccount. Send { "id": <id> }, or null to clear.
agrifield_work
object
false
Reference to AgrifieldWork. Send { "id": <id> }, or null to clear.
maintenance_unit
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
foreman
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
based_on_entity_id
integer
false
Existing plan item the new one is copied from.
drag_n_drop_resource
string
false
Resource the item was dropped onto in the planner - worker, agrifield or main_facility.
use_multidate
boolean
false
Set to 1 to create one plan item per date in multidate_dates instead of a single item.
multidate_dates
array of dates
false
Dates to create plan items for. Read only when use_multidate is set.
multidate_start_clock
string
false
Start clock as HH:MM, applied to every date in multidate_dates.
multidate_stop_clock
string
false
Stop clock as HH:MM, applied to every date in multidate_dates.
planned_stop_time
datetime
false
YYYY-MM-DD HH:MM:SS
Planned end of the work. Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. When empty, the item is created as a Todo: roster_type is set to { "id": 12 } regardless of what was sent. Ignored when use_multidate is set.
worker_ids
array of integers
false
Creates one plan item per worker. Takes precedence over worker.
material_planned_usages
array of objects
false
Planned material usage. Applied to the first plan item only; the rest receive a copy.
fault_planitem
object
false
Links the plan item to a fault item. Object with a faultitem field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
inspection_planitem
object
false
Links the plan item to an inspection case. Object with an inspection_case field holding an id. Read only on POST /api/plans; the other routes this endpoint serves ignore it.
split_to_days
boolean
false
Splits a plan item spanning several days into one item per day.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
name
string
*
Planitem name, Utf8 string 255 chars. Auto generated based on plannedDurationSec, plannedStartTime, plannedStopTime
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
material_planned_usage_str
string
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Creates a Workdone from a Planitem and marks the plan item done
Documentation
Sandbox
Documentation
Creates new Workdone from Planitem
Requirements
Name
Requirement
Type
Description
planid
integer|string
Planitem id
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
name
string
*
Planitem name, Utf8 string 255 chars. Auto generated based on plannedDurationSec, plannedStartTime, plannedStopTime
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
material_planned_usage_str
string
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Comma-separated subset of the serializer groups this endpoint offers (owner, planitem, material_all). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Deletes one material usage of a Planitem. Removed permanently rather than soft-deleted, so the
row does not appear in the recycle bin or in a from_updated_at delta sync. Returns the parent
Planitem, not the removed usage
Requirements
Name
Requirement
Type
Description
planid
integer|string
Plan id
usageid
integer|string
Material Usage id
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Startpoint. Date as Y-m-d, for example 2026-08-28. Defaults to the first day of the current month when omitted.
to
date
false
YYYY-MM-DD
Endpoint. Date as Y-m-d, for example 2026-08-28. The whole of that day is included. When omitted the period runs to the end of the current month.
agrifield_work_id
integer
false
AgrifieldWork id
color_base
string
false
Entity the row colour is taken from.
cost_account_id
integer
false
Filter by cost account id.
main_facility_id
integer
false
Filter by main facility id.
project_id
integer
false
Filter by project id.
selfonly
boolean
false
Truthy limits the result to the authenticated worker.
worker_id
integer
false
Filter by worker id.
worktype_id
integer
false
Filter by worktype id.
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (planitem, planitemlist, owner, search, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
workdones[]
array of objects (Workdone)
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
is_group_plan
boolean
*
from_time
DateTime
*
to_time
DateTime
*
duration_seconds
integer
*
pause_seconds
integer
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
worker
object (Worker)
*
foreman
object (Worker)
*
worktype
object (Worktype)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
agrifield
object (Agrifield)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
agrifield_work
object (AgrifieldWork)
*
is_draft
boolean
*
planned_duration_hours
integer
*
customer
object (Customer)
*
provider
object (Customer)
*
customer_person
object (CustomerPerson)
*
CustomerPerson
is_executed
boolean
*
outer_id
string
*
Event subject
planned_duration_sec
integer
*
cost
float
*
fault_planitem
object (FaultPlanitem)
*
inspection_planitem
object (InspectionPlanitem)
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
A Project groups work and cost over something larger than a single job - a season, a
contract, a construction site. Workers, machines and fields can be booked to a project as
resources. These endpoints create and edit projects, attach and remove resources, and read
statistics per resource. Removing a resource returns the project figures that remain rather
than a bare acknowledgement. Projects sit alongside cost accounts rather than replacing
them.
GET
/api/gantt/{id}
Project by ID or UUID
Documentation
Sandbox
Documentation
Returns Project tasks for Gantt graph by ID or UUID
Requirements
Name
Requirement
Type
Description
id
integer
Project id
Parameters
Parameter
Type
Required?
Format
Description
uuid
string
false
Project uuid
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (gantt). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
workdones[]
array of objects (Workdone)
*
DANGER
When project has thousands of workdones (company 233 Lääne Teed)
Then including this into serialization will cause serious performance hit
Comma-separated subset of the serializer groups this endpoint offers (projects, rosteritem). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Removes a resource from a Project, together with its QR image and preferences
Documentation
Sandbox
Documentation
Removes a resource from a Project, together with its QR image and preferences. Removed
permanently rather than soft-deleted, so the row does not appear in the recycle bin or in a
from_updated_at delta sync. Returns the project's remaining stats row for that resource type, or
{ id, is_deleted: true } when none remains
Id of the project resource, of the type named by resource_type
Parameters
Parameter
Type
Required?
Format
Description
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (projects, rosteritem). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Returns Projects collection (Array of Project json entries)
Parameters
Parameter
Type
Required?
Format
Description
is_archived
boolean
false
true or 1
If is_archived=1 then return also archived records
archived
boolean
false
Alias of is_archived; either being truthy has the same effect.
from_updated_at
string
false
Unix timestamp
Return only records updated on or after Unix timestamp
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (default, projects). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
project_manager_fullname
string
*
planned_work_hours
double
*
fullname
string
*
classificator
string
*
rowclass
string
*
division
object (Department)
*
id
integer
*
Project id in Terake
name
string
*
Project name, Utf8 string 255 chars
outer_id
string
*
Project Id in external system, for example code in Accounting or Project Management system.
from_time
DateTime
*
to_time
DateTime
*
actual_finish_time
DateTime
*
planned_work_seconds
integer
*
planned_budget
integer
*
description
string
*
project_workers[]
array of objects (ProjectWorker)
*
project_worktypes[]
array of objects (ProjectWorktype)
*
project_facilities[]
array of objects (ProjectFacility)
*
project_maintenance_units[]
array of objects (ProjectMaintenanceUnit)
*
project_materials[]
array of objects (ProjectMaterial)
*
project_workobjects[]
array of objects (ProjectAgrifield)
*
cost_account
object (CostAccount)
*
project_manager
object (Worker)
*
qr
string
*
QR code
This is copy of QrImage->QrText parameter for fast querying in lists
Project id. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
qr_image
object
false
QR code as { "qr_text": "..." }.
name
string
false
outer_id
string
false
Identifier in the source system.
from_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value clears the field. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
to_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value clears the field. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
actual_finish_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value clears the field. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
planned_work_hours
float
false
Decimal comma is accepted.
is_archived
boolean
false
planned_budget
float
false
Decimal comma is accepted.
description
string
false
customer
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
cost_account
object
false
Reference to CostAccount. Send { "id": <id> }, or null to clear.
department
object
false
Reference to Department. Send { "id": <id> }, or null to clear.
project_manager
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
uuid
string
false
Project uuid
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
project_manager_fullname
string
*
planned_work_hours
double
*
fullname
string
*
classificator
string
*
rowclass
string
*
division
object (Department)
*
id
integer
*
Project id in Terake
name
string
*
Project name, Utf8 string 255 chars
outer_id
string
*
Project Id in external system, for example code in Accounting or Project Management system.
from_time
DateTime
*
to_time
DateTime
*
actual_finish_time
DateTime
*
planned_work_seconds
integer
*
planned_budget
integer
*
description
string
*
project_workers[]
array of objects (ProjectWorker)
*
project_worktypes[]
array of objects (ProjectWorktype)
*
project_facilities[]
array of objects (ProjectFacility)
*
project_maintenance_units[]
array of objects (ProjectMaintenanceUnit)
*
project_materials[]
array of objects (ProjectMaterial)
*
project_workobjects[]
array of objects (ProjectAgrifield)
*
cost_account
object (CostAccount)
*
project_manager
object (Worker)
*
qr
string
*
QR code
This is copy of QrImage->QrText parameter for fast querying in lists
Comma-separated subset of the serializer groups this endpoint offers (default, projects, projects_formatted_date). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
project_manager_fullname
string
*
from_time
DateTime
*
to_time
DateTime
*
planned_work_hours
double
*
fullname
string
*
classificator
string
*
rowclass
string
*
division
object (Department)
*
id
integer
*
Project id in Terake
name
string
*
Project name, Utf8 string 255 chars
outer_id
string
*
Project Id in external system, for example code in Accounting or Project Management system.
actual_finish_time
DateTime
*
planned_work_seconds
integer
*
planned_budget
integer
*
description
string
*
project_workers[]
array of objects (ProjectWorker)
*
project_worktypes[]
array of objects (ProjectWorktype)
*
project_facilities[]
array of objects (ProjectFacility)
*
project_maintenance_units[]
array of objects (ProjectMaintenanceUnit)
*
project_materials[]
array of objects (ProjectMaterial)
*
project_workobjects[]
array of objects (ProjectAgrifield)
*
cost_account
object (CostAccount)
*
project_manager
object (Worker)
*
qr
string
*
QR code
This is copy of QrImage->QrText parameter for fast querying in lists
Project id. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
qr_image
object
false
QR code as { "qr_text": "..." }.
name
string
false
outer_id
string
false
Identifier in the source system.
from_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value clears the field. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
to_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value clears the field. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
actual_finish_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value clears the field. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
planned_work_hours
float
false
Decimal comma is accepted.
is_archived
boolean
false
planned_budget
float
false
Decimal comma is accepted.
description
string
false
customer
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
cost_account
object
false
Reference to CostAccount. Send { "id": <id> }, or null to clear.
department
object
false
Reference to Department. Send { "id": <id> }, or null to clear.
project_manager
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
uuid
string
false
Project uuid
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
project_manager_fullname
string
*
planned_work_hours
double
*
fullname
string
*
classificator
string
*
rowclass
string
*
division
object (Department)
*
id
integer
*
Project id in Terake
name
string
*
Project name, Utf8 string 255 chars
outer_id
string
*
Project Id in external system, for example code in Accounting or Project Management system.
from_time
DateTime
*
to_time
DateTime
*
actual_finish_time
DateTime
*
planned_work_seconds
integer
*
planned_budget
integer
*
description
string
*
project_workers[]
array of objects (ProjectWorker)
*
project_worktypes[]
array of objects (ProjectWorktype)
*
project_facilities[]
array of objects (ProjectFacility)
*
project_maintenance_units[]
array of objects (ProjectMaintenanceUnit)
*
project_materials[]
array of objects (ProjectMaterial)
*
project_workobjects[]
array of objects (ProjectAgrifield)
*
cost_account
object (CostAccount)
*
project_manager
object (Worker)
*
qr
string
*
QR code
This is copy of QrImage->QrText parameter for fast querying in lists
A roster item is a shift: a worker scheduled to work between two times, with a status
showing whether it has been taken, done or rejected. Calendar items cover both roster items
and plan items, which is why several routes accept either. These endpoints create and edit
roster items, fill a roster across workers and dates, copy or move items, set recurrence
and clear a period. Vacations and absences are roster items with their own type. Marking an
item done creates the Workdone that records the hours actually worked.
GET
/api/absences
Vacations and absences over a period.
Documentation
Sandbox
Documentation
Returns Vacations or Absences collection
Parameters
Parameter
Type
Required?
Format
Description
from
date
false
YYYY-MM-DD
Date as Y-m-d, for example 2026-08-28.
to
date
false
YYYY-MM-DD
Date as Y-m-d, for example 2026-08-28.
worker_id
string|integer
false
Filter by worker
selfonly
boolean
false
0|1
Only authenticated user own objects
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (vacation, classificator). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
true
Return
Parameter
Type
Versions
Description
200
duration_calendardays
integer
*
duration_workdays
integer
*
duration_weekends
integer
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
description
string
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Returns roster and plan rows combined as calendar items.
Parameters
Parameter
Type
Required?
Format
Description
from
date
false
YYYY-MM-DD
Start datetime. Date as Y-m-d, for example 2026-08-28. Defaults to the first day of the current month when omitted. For workers without ROLE_ADMIN or ROLE_OBSERVER the period starts no earlier than the first day of the month 3 months ago, and a period lying entirely before that comes back empty.
to
date
false
YYYY-MM-DD
End datetime. Date as Y-m-d, for example 2026-08-28. The whole of that day is included. When omitted the period runs to the end of the current month.
from_updated_at
integer
false
Unix timestamp. When given, only items modified at or after it are returned, deleted items included. Holidays are unaffected.
only_rosteritem
boolean
false
When given, the response holds the 'rosteritems' key only, the other calendaritem types are not queried at all.
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (calendaritem, classificator, owner, auditcolumns, baseattribute). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
true
Return
Parameter
Type
Versions
Description
200
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Copies or moves the listed Rosteritems and Planitems by a day offset and/or onto another
Documentation
Sandbox
Documentation
Copies or moves the listed Rosteritems and Planitems by a day offset and/or onto another
resource. Returns the resulting calendar items, or an empty array when neither days_offset nor
change_resource is set
Parameters
Parameter
Type
Required?
Format
Description
action
string
false
copy to duplicate the items, move to relocate them. Defaults to copy.
planitem_ids
array of integers
false
Plan items to copy or move.
rosteritem_ids
array of integers
false
Roster items to copy or move.
days_offset
integer
false
Number of days to shift the items by. Defaults to 0.
change_resource
boolean
false
Reassign the copies to the target resource instead of keeping the original one.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
duration_seconds
integer
*
pause_minutes
string
*
planned_start_time
string
*
planned_stop_time
string
*
workdones
array
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Calendar items grouped by one resource type - worker, main_facility, secondary_facility
Documentation
Sandbox
Documentation
Returns calendar items grouped by one resource type - worker, main_facility, secondary_facility,
workobject or customer.
Requirements
Name
Requirement
Type
Description
resource_type
Parameters
Parameter
Type
Required?
Format
Description
from
date
false
YYYY-MM-DD
Start datetime. Date as Y-m-d, for example 2026-08-28. Defaults to the first day of the current month when omitted.
to
date
false
YYYY-MM-DD
End datetime. Date as Y-m-d, for example 2026-08-28. The whole of that day is included. When omitted the period runs to the end of the current month.
from_updated_at
integer
false
Unix timestamp. When given, only items modified at or after it are returned, deleted items included. Holidays and project reservations are unaffected, they carry no modification time.
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (calendaritem, classificator, owner, auditcolumns, baseattribute). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
true
Return
Parameter
Type
Versions
Description
200
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Recurrence Setup related to Rosteritem. Returns the recurrence of the Rosteritem or Planitem, or
null when it has none
Requirements
Name
Requirement
Type
Description
calendaritem_id
integer|string
Rosteritem or Planitem id, whichever the route addresses
recurrence_id
integer|string
RosteritemRecurrence id
Parameters
Parameter
Type
Required?
Format
Description
_route
string
false
Query parameter _route
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (rosteritem, planitem, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Creates or modifies the recurrence of a Rosteritem or Planitem
Documentation
Sandbox
Documentation
Saves the recurrence of a Rosteritem or Planitem. A new recurrence generates the recurring
events; an existing one has events added or removed
Requirements
Name
Requirement
Type
Description
calendaritem_id
integer|string
Rosteritem or Planitem id, whichever the route addresses
recurrence_id
integer|string
RosteritemRecurrence id. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
to_time
date
false
Y-m-d
Date as Y-m-d, for example 2026-08-28. An empty value stores today. Any string PHP can parse is accepted and any time part is dropped, but a slash-separated date is read US-first, so send Y-m-d.
recurrence_type
object
false
Reference to RecurrenceType. Send { "id": <id> }, or null to clear.
custom_rule_json
string
false
Truncated to 1000 characters.
tz
string
true
IANA timezone name the recurrence dates are interpreted in, for example Europe/Tallinn
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Creates or modifies the recurrence of a Rosteritem or Planitem
Documentation
Sandbox
Documentation
Saves the recurrence of a Rosteritem or Planitem. A new recurrence generates the recurring
events; an existing one has events added or removed
Requirements
Name
Requirement
Type
Description
calendaritem_id
integer|string
Rosteritem or Planitem id, whichever the route addresses
recurrence_id
integer|string
RosteritemRecurrence id. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
to_time
date
false
Y-m-d
Date as Y-m-d, for example 2026-08-28. An empty value stores today. Any string PHP can parse is accepted and any time part is dropped, but a slash-separated date is read US-first, so send Y-m-d.
recurrence_type
object
false
Reference to RecurrenceType. Send { "id": <id> }, or null to clear.
custom_rule_json
string
false
Truncated to 1000 characters.
tz
string
true
IANA timezone name the recurrence dates are interpreted in, for example Europe/Tallinn
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
GET
/api/plans/{calendaritem_id}/recurrence/{recurrence_id}
Recurrence Setup related to Rosteritem
Documentation
Sandbox
Documentation
Recurrence Setup related to Rosteritem. Returns the recurrence of the Rosteritem or Planitem, or
null when it has none
Requirements
Name
Requirement
Type
Description
calendaritem_id
integer|string
Rosteritem or Planitem id, whichever the route addresses
recurrence_id
integer|string
RosteritemRecurrence id
Parameters
Parameter
Type
Required?
Format
Description
_route
string
false
Query parameter _route
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (rosteritem, planitem, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
PUT
/api/plans/{calendaritem_id}/recurrence/{recurrence_id}
Creates or modifies the recurrence of a Rosteritem or Planitem
Documentation
Sandbox
Documentation
Saves the recurrence of a Rosteritem or Planitem. A new recurrence generates the recurring
events; an existing one has events added or removed
Requirements
Name
Requirement
Type
Description
calendaritem_id
integer|string
Rosteritem or Planitem id, whichever the route addresses
recurrence_id
integer|string
RosteritemRecurrence id. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
to_time
date
false
Y-m-d
Date as Y-m-d, for example 2026-08-28. An empty value stores today. Any string PHP can parse is accepted and any time part is dropped, but a slash-separated date is read US-first, so send Y-m-d.
recurrence_type
object
false
Reference to RecurrenceType. Send { "id": <id> }, or null to clear.
custom_rule_json
string
false
Truncated to 1000 characters.
tz
string
true
IANA timezone name the recurrence dates are interpreted in, for example Europe/Tallinn
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Writes roster items across the selected workers and dates
Documentation
Sandbox
Documentation
Handles writes roster items across the selected workers and dates
Parameters
Parameter
Type
Required?
Format
Description
month
integer
true
Month the roster edit applies to.
year
integer
true
Year the roster edit applies to.
selected_dates
array of dates
false
Dates to write roster items for. Ignored when selection_type is 2, which derives them from selected_individuals.
selected_worker_ids
array of integers
false
Workers to write roster items for. Ignored when selection_type is 2.
selected_individuals
object
false
Per-worker date selection, keyed by worker id. Used when selection_type is 2.
selection_type
integer
false
2 takes the selection from selected_individuals, anything else uses selected_dates with selected_worker_ids.
save_mode
integer
false
How existing roster items in range are treated. Defaults to 1.
editable
object
true
The roster item template applied to every selected slot - clock times as fromClock and toClock or multidate_start_clock and multidate_stop_clock, pause as pause_minutes in HH:MM or as pauseHours plus pauseMinutes, plus the relations to store.
delete
boolean
true
Removes the roster items in the selection instead of writing them.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
duration_seconds
integer
*
pause_minutes
string
*
planned_start_time
string
*
planned_stop_time
string
*
workdones
array
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Creates a Planitem (work order) from the Rosteritem named in the URL, copying its times
Documentation
Sandbox
Documentation
Creates a Planitem (work order) from the Rosteritem named in the URL, copying its times,
worktype and Workobject. Does not have a request body.
Requirements
Name
Requirement
Type
Description
rosteritem_id
integer|string
Rosteritem id
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
division
object (Department)
*
id
integer
*
description
string
*
planned_start_time
DateTime
*
planned_stop_time
DateTime
*
name
string
*
Planitem name, Utf8 string 255 chars. Auto generated based on plannedDurationSec, plannedStartTime, plannedStopTime
fullname
string
*
Planitem fullname, Utf8 string 255 chars. Auto generated based plannedDurationSec, plannedStartTime, plannedStopTime, and related Entities names
material_planned_usages[]
array of objects (MaterialPlannedUsage)
*
is_draft
boolean
*
planned_duration_hours
integer
*
is_executed
boolean
*
planned_duration_sec
integer
*
plan_status
object (PlanStatus)
*
Classificator about plan status
is updated automatically
Currently supported
workdone_in_progress: has Workdone AND Workdone has no end date
workdone_unfinished: has Workdone AND Workdone has end_date AND flag getIsUnfinished;
workdone_finished: has Workdone AND Workdone has end_date AND no flag getIsUnfinished;
edited: no Workdone AND changed after 8h after plan creation
rejected: no Workdone AND worker unassigned 8h after plan creation
postponed: no Workdone AND planned start time increased after 8h after plan creation
Future
planned
blocked ? manual entry from mobile app
in_progress: has Workdone AND Workdone has no end date
Recurrence Setup related to Rosteritem. Returns the recurrence of the Rosteritem or Planitem, or
null when it has none
Requirements
Name
Requirement
Type
Description
calendaritem_id
integer|string
Rosteritem or Planitem id, whichever the route addresses
recurrence_id
integer|string
RosteritemRecurrence id
Parameters
Parameter
Type
Required?
Format
Description
_route
string
false
Query parameter _route
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (rosteritem, planitem, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Creates or modifies the recurrence of a Rosteritem or Planitem
Documentation
Sandbox
Documentation
Saves the recurrence of a Rosteritem or Planitem. A new recurrence generates the recurring
events; an existing one has events added or removed
Requirements
Name
Requirement
Type
Description
calendaritem_id
integer|string
Rosteritem or Planitem id, whichever the route addresses
recurrence_id
integer|string
RosteritemRecurrence id. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
to_time
date
false
Y-m-d
Date as Y-m-d, for example 2026-08-28. An empty value stores today. Any string PHP can parse is accepted and any time part is dropped, but a slash-separated date is read US-first, so send Y-m-d.
recurrence_type
object
false
Reference to RecurrenceType. Send { "id": <id> }, or null to clear.
custom_rule_json
string
false
Truncated to 1000 characters.
tz
string
true
IANA timezone name the recurrence dates are interpreted in, for example Europe/Tallinn
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Creates or modifies the recurrence of a Rosteritem or Planitem
Documentation
Sandbox
Documentation
Saves the recurrence of a Rosteritem or Planitem. A new recurrence generates the recurring
events; an existing one has events added or removed
Requirements
Name
Requirement
Type
Description
calendaritem_id
integer|string
Rosteritem or Planitem id, whichever the route addresses
recurrence_id
integer|string
RosteritemRecurrence id. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
to_time
date
false
Y-m-d
Date as Y-m-d, for example 2026-08-28. An empty value stores today. Any string PHP can parse is accepted and any time part is dropped, but a slash-separated date is read US-first, so send Y-m-d.
recurrence_type
object
false
Reference to RecurrenceType. Send { "id": <id> }, or null to clear.
custom_rule_json
string
false
Truncated to 1000 characters.
tz
string
true
IANA timezone name the recurrence dates are interpreted in, for example Europe/Tallinn
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
GET
/api/roster/{calendaritem_id}/recurrence/{recurrence_id}
Recurrence Setup related to Rosteritem
Documentation
Sandbox
Documentation
Recurrence Setup related to Rosteritem. Returns the recurrence of the Rosteritem or Planitem, or
null when it has none
Requirements
Name
Requirement
Type
Description
calendaritem_id
integer|string
Rosteritem or Planitem id, whichever the route addresses
recurrence_id
integer|string
RosteritemRecurrence id
Parameters
Parameter
Type
Required?
Format
Description
_route
string
false
Query parameter _route
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (rosteritem, planitem, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
PUT
/api/roster/{calendaritem_id}/recurrence/{recurrence_id}
Creates or modifies the recurrence of a Rosteritem or Planitem
Documentation
Sandbox
Documentation
Saves the recurrence of a Rosteritem or Planitem. A new recurrence generates the recurring
events; an existing one has events added or removed
Requirements
Name
Requirement
Type
Description
calendaritem_id
integer|string
Rosteritem or Planitem id, whichever the route addresses
recurrence_id
integer|string
RosteritemRecurrence id. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
to_time
date
false
Y-m-d
Date as Y-m-d, for example 2026-08-28. An empty value stores today. Any string PHP can parse is accepted and any time part is dropped, but a slash-separated date is read US-first, so send Y-m-d.
recurrence_type
object
false
Reference to RecurrenceType. Send { "id": <id> }, or null to clear.
custom_rule_json
string
false
Truncated to 1000 characters.
tz
string
true
IANA timezone name the recurrence dates are interpreted in, for example Europe/Tallinn
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Creates a Workdone from a Rosteritem and marks the item done
Documentation
Sandbox
Documentation
Creates new Workdone from Rosteritem
Requirements
Name
Requirement
Type
Description
id
integer|string
Rosteritem id or uuid
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
duration_seconds
integer
*
pause_minutes
string
*
planned_start_time
string
*
planned_stop_time
string
*
workdones
array
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Roster for a single day. myself=1 limits it to the authenticated worker. Returns the roster rows
for one day
Parameters
Parameter
Type
Required?
Format
Description
date
date
false
YYYY-MM-DD
Startpoint. Date as Y-m-d, for example 2026-08-28.
myself
boolean
false
Truthy limits the result to the authenticated worker.
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (owner, rosteritem, classificator, planitem, plan). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Comma-separated subset of the serializer groups this endpoint offers (rosteritem, owner, auditcolumns, rosteritem_list). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
duration_seconds
integer
*
pause_minutes
string
*
planned_start_time
string
*
planned_stop_time
string
*
workdones
array
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Creates or modifies a Rosteritem (Scheduled Work or an absence). Returns an array of items
Documentation
Sandbox
Documentation
Creates or modifies (if id is set) a Rosteritem: a Scheduled Work entry or an absence (Vacation,
Sickness, Away, Day off, Study leave, Parental leave, Without pay).
Scheduled Work (roster_type 1) accepts the full field set, and several workers, agrifields and
main facilities at once: one item is created per combination. Absence types accept exactly one
resource (worker, worktype, main_facility, agrifield, project, customer, cost_account or
maintenance_unit, the first one present wins), the times rounded to whole days and the
description; every other field is ignored for them.
Example: vacation 3rd July...4th July registered by a user without admin rights:
{
"planned_start_time": "2022-07-03T21:00:00.000Z",
"planned_stop_time": "2022-07-05T21:00:00.000Z",
"worker": {
"id": 6119
},
"roster_status": {
"id": 2
},
"roster_type": {
"id": 2
},
"description": ""
}
Requirements
Name
Requirement
Type
Description
id
integer|string
Rosteritem id or uuid. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
from_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value stores the current time. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
to_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value stores the current time. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
is_deleted
boolean
false
is_draft
boolean
false
pause_minutes
string
false
HH:MM or HH:MM:SS
Duration as HH:MM or HH:MM:SS, or a plain number of seconds. It is stored as seconds.
worker
object (Worker) or array of objects
false
Object
Worker as { id: N }. For Scheduled Work an array of such objects creates one item per worker; leave it out to schedule an agrifield or main_facility without a worker. For absence types this is the first resource looked at; one resource is required.
roster_type
object (RosterType)
false
Object
Rosteritem type classificator, sent as { id: N }. Values:
* 1 Scheduled Work (workplan) - the default when left out, also when modifying,
* 2 Vacation (unavailable),
* 3 Sickness (emergency),
* 4 Away (disabled),
* 14 Day off,
* 15 Study leave,
* 16 Parental leave,
* 17 Without pay. Example for vacation: { id: 2 }. A user without admin, approver, observer or agronomist role may create Scheduled Work only for themselves; other workers give 403.
roster_status
object (RosterStatus)
false
Object
Rosteritem assignment status classificator, sent as { id: N }. Values:
* 1 open - Worker not assigned, new item - orange color,
* 2 taken - Worker (someone who has no privileges) has created or assigned herself item: to be accepted by Boss - red color,
* 3 assigned - Worker assignment is accepted by Boss - green color. The default when left out, also when modifying,
* 4 reopen - assigned Worker has refused to do it and no new worker assigned - orange color. Example for vacation registered by employee: { id: 2 }
foreman
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
main_facility
object (Facility) or array of objects
false
Object
Main facility as { id: N }. For Scheduled Work an array creates one item per facility (combined with every worker and agrifield given).
secondary_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
cost_account
object
false
Reference to CostAccount. Send { "id": <id> }, or null to clear.
project
object
false
Reference to Project. Send { "id": <id> }, or null to clear.
customer
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
customer_person
object
false
Reference to CustomerPerson. Send { "id": <id> }, or null to clear.
provider
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
maintenance_unit
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
worktype
object (Worktype)
false
Object
Worktype as { id: N }. When creating Scheduled Work without it, the worker's own worktype is used.
agrifield
object (Agrifield) or array of objects
false
Object
Agrifield as { id: N }. For Scheduled Work an array creates one item per agrifield (combined with every worker and main_facility given).
description
string
false
Truncated to 1000 characters.
outer_id
string
false
Truncated to 100 characters.
shift
object
false
Reference to Shift. Send { "id": <id> }, or null to clear.
planned_start_time
Date string
true
ISO-8601
Start of the item. Example '2022-07-03T00:00:00+03:00' or '2022-07-03T21:00:00.000Z'. For absence types the time part is dropped and the day starts at 00:00.
planned_stop_time
Date string
true
ISO-8601
End of the item, same format as planned_start_time. For absence types it is rounded up to 00:00 of the next day, so a 2 day vacation '2022-07-03'...'2022-07-04' ends at '2022-07-05T00:00:00+03:00' or '2022-07-05T21:00:00.000Z'. For Scheduled Work an end that is not after the start is moved one day forward.
worker_ids
array of integers
false
Scheduled Work only. Worker ids; creates one item per worker and takes precedence over worker.
Headers
Name
Required?
Description
X-Terake-Api-Key
true
Return
Parameter
Type
Versions
Description
200
duration_seconds
integer
*
pause_minutes
string
*
planned_start_time
string
*
planned_stop_time
string
*
workdones
array
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Rosteritems awaiting approval. show_done=1 also returns those already handled.
The response has a fixed structure and may not include every field these records carry elsewhere in the API.
Parameters
Parameter
Type
Required?
Format
Description
from_updated_at
integer
false
Records updated from Unix timestamp
from
date
false
YYYY-MM-DD
Startpoint. Date as Y-m-d, for example 2026-08-28. Defaults to the first day of the current month when omitted.
to
date
false
YYYY-MM-DD
Endpoint. Date as Y-m-d, for example 2026-08-28. The whole of that day is included. When omitted the period runs to the end of the current month.
cost_account_id
integer
false
Filter by cost account id.
department_ids
string
false
Comma-separated department ids to restrict the result to.
main_facility_id
integer
false
Filter by main facility id.
project_id
integer
false
Filter by project id.
show_done
boolean
false
Truthy also returns rows already marked done.
worker_id
integer
false
Filter by worker id.
worktype_id
integer
false
Filter by worktype id.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
duration_seconds
integer
*
pause_minutes
string
*
planned_start_time
string
*
planned_stop_time
string
*
workdones
array
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
duration_seconds
integer
*
pause_minutes
string
*
planned_start_time
string
*
planned_stop_time
string
*
workdones
array
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Comma-separated subset of the serializer groups this endpoint offers (rosteritem, workdone, owner, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
duration_seconds
integer
*
pause_minutes
string
*
planned_start_time
string
*
planned_stop_time
string
*
workdones
array
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Creates or modifies a Rosteritem (Scheduled Work or an absence). Returns an array of items
Documentation
Sandbox
Documentation
Creates or modifies (if id is set) a Rosteritem: a Scheduled Work entry or an absence (Vacation,
Sickness, Away, Day off, Study leave, Parental leave, Without pay).
Scheduled Work (roster_type 1) accepts the full field set, and several workers, agrifields and
main facilities at once: one item is created per combination. Absence types accept exactly one
resource (worker, worktype, main_facility, agrifield, project, customer, cost_account or
maintenance_unit, the first one present wins), the times rounded to whole days and the
description; every other field is ignored for them.
Example: vacation 3rd July...4th July registered by a user without admin rights:
{
"planned_start_time": "2022-07-03T21:00:00.000Z",
"planned_stop_time": "2022-07-05T21:00:00.000Z",
"worker": {
"id": 6119
},
"roster_status": {
"id": 2
},
"roster_type": {
"id": 2
},
"description": ""
}
Requirements
Name
Requirement
Type
Description
id
integer|string
Rosteritem id or uuid. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
from_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value stores the current time. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
to_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value stores the current time. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
is_deleted
boolean
false
is_draft
boolean
false
pause_minutes
string
false
HH:MM or HH:MM:SS
Duration as HH:MM or HH:MM:SS, or a plain number of seconds. It is stored as seconds.
worker
object (Worker) or array of objects
false
Object
Worker as { id: N }. For Scheduled Work an array of such objects creates one item per worker; leave it out to schedule an agrifield or main_facility without a worker. For absence types this is the first resource looked at; one resource is required.
roster_type
object (RosterType)
false
Object
Rosteritem type classificator, sent as { id: N }. Values:
* 1 Scheduled Work (workplan) - the default when left out, also when modifying,
* 2 Vacation (unavailable),
* 3 Sickness (emergency),
* 4 Away (disabled),
* 14 Day off,
* 15 Study leave,
* 16 Parental leave,
* 17 Without pay. Example for vacation: { id: 2 }. A user without admin, approver, observer or agronomist role may create Scheduled Work only for themselves; other workers give 403.
roster_status
object (RosterStatus)
false
Object
Rosteritem assignment status classificator, sent as { id: N }. Values:
* 1 open - Worker not assigned, new item - orange color,
* 2 taken - Worker (someone who has no privileges) has created or assigned herself item: to be accepted by Boss - red color,
* 3 assigned - Worker assignment is accepted by Boss - green color. The default when left out, also when modifying,
* 4 reopen - assigned Worker has refused to do it and no new worker assigned - orange color. Example for vacation registered by employee: { id: 2 }
foreman
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
main_facility
object (Facility) or array of objects
false
Object
Main facility as { id: N }. For Scheduled Work an array creates one item per facility (combined with every worker and agrifield given).
secondary_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
cost_account
object
false
Reference to CostAccount. Send { "id": <id> }, or null to clear.
project
object
false
Reference to Project. Send { "id": <id> }, or null to clear.
customer
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
customer_person
object
false
Reference to CustomerPerson. Send { "id": <id> }, or null to clear.
provider
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
maintenance_unit
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
worktype
object (Worktype)
false
Object
Worktype as { id: N }. When creating Scheduled Work without it, the worker's own worktype is used.
agrifield
object (Agrifield) or array of objects
false
Object
Agrifield as { id: N }. For Scheduled Work an array creates one item per agrifield (combined with every worker and main_facility given).
description
string
false
Truncated to 1000 characters.
outer_id
string
false
Truncated to 100 characters.
shift
object
false
Reference to Shift. Send { "id": <id> }, or null to clear.
planned_start_time
Date string
true
ISO-8601
Start of the item. Example '2022-07-03T00:00:00+03:00' or '2022-07-03T21:00:00.000Z'. For absence types the time part is dropped and the day starts at 00:00.
planned_stop_time
Date string
true
ISO-8601
End of the item, same format as planned_start_time. For absence types it is rounded up to 00:00 of the next day, so a 2 day vacation '2022-07-03'...'2022-07-04' ends at '2022-07-05T00:00:00+03:00' or '2022-07-05T21:00:00.000Z'. For Scheduled Work an end that is not after the start is moved one day forward.
worker_ids
array of integers
false
Scheduled Work only. Worker ids; creates one item per worker and takes precedence over worker.
Headers
Name
Required?
Description
X-Terake-Api-Key
true
Return
Parameter
Type
Versions
Description
200
duration_seconds
integer
*
pause_minutes
string
*
planned_start_time
string
*
planned_stop_time
string
*
workdones
array
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Creates or modifies a Rosteritem (Scheduled Work or an absence). Returns an array of items
Documentation
Sandbox
Documentation
Creates or modifies (if id is set) a Rosteritem: a Scheduled Work entry or an absence (Vacation,
Sickness, Away, Day off, Study leave, Parental leave, Without pay).
Scheduled Work (roster_type 1) accepts the full field set, and several workers, agrifields and
main facilities at once: one item is created per combination. Absence types accept exactly one
resource (worker, worktype, main_facility, agrifield, project, customer, cost_account or
maintenance_unit, the first one present wins), the times rounded to whole days and the
description; every other field is ignored for them.
Example: vacation 3rd July...4th July registered by a user without admin rights:
{
"planned_start_time": "2022-07-03T21:00:00.000Z",
"planned_stop_time": "2022-07-05T21:00:00.000Z",
"worker": {
"id": 6119
},
"roster_status": {
"id": 2
},
"roster_type": {
"id": 2
},
"description": ""
}
Requirements
Name
Requirement
Type
Description
id
integer|string
Rosteritem id or uuid. Only when modifying an existing record; leave it out to create a new one.
Parameters
Parameter
Type
Required?
Format
Description
from_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value stores the current time. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
to_time
datetime
false
Y-m-d H:i:s
Date and time as Y-m-d H:i:s, for example 2026-08-28 14:30:00. An empty value stores the current time. Read in the company time zone. Any string PHP can parse is accepted, but a slash-separated date is read US-first, so send Y-m-d H:i:s.
is_deleted
boolean
false
is_draft
boolean
false
pause_minutes
string
false
HH:MM or HH:MM:SS
Duration as HH:MM or HH:MM:SS, or a plain number of seconds. It is stored as seconds.
worker
object (Worker) or array of objects
false
Object
Worker as { id: N }. For Scheduled Work an array of such objects creates one item per worker; leave it out to schedule an agrifield or main_facility without a worker. For absence types this is the first resource looked at; one resource is required.
roster_type
object (RosterType)
false
Object
Rosteritem type classificator, sent as { id: N }. Values:
* 1 Scheduled Work (workplan) - the default when left out, also when modifying,
* 2 Vacation (unavailable),
* 3 Sickness (emergency),
* 4 Away (disabled),
* 14 Day off,
* 15 Study leave,
* 16 Parental leave,
* 17 Without pay. Example for vacation: { id: 2 }. A user without admin, approver, observer or agronomist role may create Scheduled Work only for themselves; other workers give 403.
roster_status
object (RosterStatus)
false
Object
Rosteritem assignment status classificator, sent as { id: N }. Values:
* 1 open - Worker not assigned, new item - orange color,
* 2 taken - Worker (someone who has no privileges) has created or assigned herself item: to be accepted by Boss - red color,
* 3 assigned - Worker assignment is accepted by Boss - green color. The default when left out, also when modifying,
* 4 reopen - assigned Worker has refused to do it and no new worker assigned - orange color. Example for vacation registered by employee: { id: 2 }
foreman
object
false
Reference to Worker. Send { "id": <id> }, or null to clear.
main_facility
object (Facility) or array of objects
false
Object
Main facility as { id: N }. For Scheduled Work an array creates one item per facility (combined with every worker and agrifield given).
secondary_facility
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
cost_account
object
false
Reference to CostAccount. Send { "id": <id> }, or null to clear.
project
object
false
Reference to Project. Send { "id": <id> }, or null to clear.
customer
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
customer_person
object
false
Reference to CustomerPerson. Send { "id": <id> }, or null to clear.
provider
object
false
Reference to Customer. Send { "id": <id> }, or null to clear.
maintenance_unit
object
false
Reference to Facility. Send { "id": <id> }, or null to clear.
worktype
object (Worktype)
false
Object
Worktype as { id: N }. When creating Scheduled Work without it, the worker's own worktype is used.
agrifield
object (Agrifield) or array of objects
false
Object
Agrifield as { id: N }. For Scheduled Work an array creates one item per agrifield (combined with every worker and main_facility given).
description
string
false
Truncated to 1000 characters.
outer_id
string
false
Truncated to 100 characters.
shift
object
false
Reference to Shift. Send { "id": <id> }, or null to clear.
planned_start_time
Date string
true
ISO-8601
Start of the item. Example '2022-07-03T00:00:00+03:00' or '2022-07-03T21:00:00.000Z'. For absence types the time part is dropped and the day starts at 00:00.
planned_stop_time
Date string
true
ISO-8601
End of the item, same format as planned_start_time. For absence types it is rounded up to 00:00 of the next day, so a 2 day vacation '2022-07-03'...'2022-07-04' ends at '2022-07-05T00:00:00+03:00' or '2022-07-05T21:00:00.000Z'. For Scheduled Work an end that is not after the start is moved one day forward.
worker_ids
array of integers
false
Scheduled Work only. Worker ids; creates one item per worker and takes precedence over worker.
Headers
Name
Required?
Description
X-Terake-Api-Key
true
Return
Parameter
Type
Versions
Description
200
duration_seconds
integer
*
pause_minutes
string
*
planned_start_time
string
*
planned_stop_time
string
*
workdones
array
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Creates a Workdone from a Rosteritem and marks the item done
Documentation
Sandbox
Documentation
Creates new Workdone from Rosteritem
Requirements
Name
Requirement
Type
Description
id
integer|string
Rosteritem id or uuid
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
duration_seconds
integer
*
pause_minutes
string
*
planned_start_time
string
*
planned_stop_time
string
*
workdones
array
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
name
string
*
Rosteritem name, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
worktype
object (Worktype)
*
shift
object (Shift)
*
description
string
*
pause_seconds
integer
*
workdone
object (Workdone)
*
agrifield
object (Agrifield)
*
foreman
object (Worker)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
customer
object (Customer)
*
customer_person
object (CustomerPerson)
*
Customer contact person
provider
object (Customer)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
Roster for one month, by year and month. myself=1 limits it to the authenticated worker. Returns
the roster grid for the period, or the string Error: cannot find workers
Parameters
Parameter
Type
Required?
Format
Description
year
integer
false
Four-digit year. Defaults to the current year.
month
integer
false
Month 1-12. Defaults to the current month.
myself
boolean
false
Truthy limits the result to the authenticated worker.
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (owner, rosteritem, classificator, auditcolumns). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Comma-separated subset of the serializer groups this endpoint offers (vacation, classificator). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
true
Return
Parameter
Type
Versions
Description
200
duration_calendardays
integer
*
duration_workdays
integer
*
duration_weekends
integer
*
id
integer
*
from_time
DateTime
*
to_time
DateTime
*
fullname
string
*
Rosteritem fullname, Utf8 string 255 chars. Auto generated based on shift, fromTime, toTime, and related Entities names
worker
object (Worker)
*
description
string
*
roster_type
object (RosterType)
*
Classificator about calendar item type
work, - usual type, wide green color
unavailable, - (translate to "vacation" if rosteritem has worker set) - slim red color
emergency, - (translate to "sickness" if rosteritem has worker set) - slim red color
roster_status
object (RosterStatus)
*
Classificator about (Worker) assignment status
open, - Worker not assigned - orange color
taken, - Worker has created or assigned herself Open or Reopen status item: to be accepted by Boss - red color,
assigned, - Worker assignment is accepted by Boss - green color,
reopen, - assigned Worker has refused to do it - orange color,
A Shift is a named working pattern - a morning shift, a night shift - with its start and
end. Roster items and workday rules reference one so that hours are counted against the
right pattern. These endpoints create, edit, list and delete shifts. Shifts are scheduled
rather than measured, which is why they sit with planning rather than with worked hours.
Shift counts are reported separately under Reports.
GET
/api/shifts
All Shifts list
Documentation
Sandbox
Documentation
List of Shifts
Parameters
Parameter
Type
Required?
Format
Description
is_archived
boolean
false
Truthy returns archived records instead of active ones.
archived
boolean
false
Alias of is_archived; either being truthy has the same effect.
from_updated_at
integer
false
Records updated from Unix timestamp.
groups
string
false
Comma-separated subset of the serializer groups this endpoint offers (rosteritem, baseattribute). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
pause_minutes
string
*
fullname
string
*
classificator
string
*
id
integer
*
from_time
string
*
to_time
string
*
pause_seconds
integer
*
name
string
*
Shift name, Utf8 string 255 chars
short_name
string
*
Shift short name, Utf8 string 3 chars
description
string
*
worktype
object (Worktype)
*
agrifield
object (Agrifield)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
maintenance_unit
object (Facility)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
created_at
DateTime
*
outer_id
string
*
Id in external system, for example code in Accounting or Human Resources system.
color_code
object (Color)
*
Color in visuals
qr
string
*
QR code
This is copy of QrImage->QrText parameter for fast querying in lists
Comma-separated subset of the serializer groups this endpoint offers (rosteritem, baseattribute). Narrows the response to those groups, dropping the nested objects the others add; a group not offered here is refused with 400.
Headers
Name
Required?
Description
X-Terake-Api-Key
false
Worker or token api key. The preferred way to authenticate; send this or the apikey query parameter.
Return
Parameter
Type
Versions
Description
200
pause_minutes
string
*
fullname
string
*
classificator
string
*
id
integer
*
from_time
string
*
to_time
string
*
pause_seconds
integer
*
name
string
*
Shift name, Utf8 string 255 chars
short_name
string
*
Shift short name, Utf8 string 3 chars
description
string
*
worktype
object (Worktype)
*
agrifield
object (Agrifield)
*
main_facility
object (Facility)
*
secondary_facility
object (Facility)
*
maintenance_unit
object (Facility)
*
cost_account
object (CostAccount)
*
project
object (Project)
*
created_at
DateTime
*
outer_id
string
*
Id in external system, for example code in Accounting or Human Resources system.
color_code
object (Color)
*
Color in visuals
qr
string
*
QR code
This is copy of QrImage->QrText parameter for fast querying in lists