Creates or updates multiple user timesheets in a single batch request. This API is used by the Synchronization module to send multiple records in one request instead of sending each record individually, which: 1. Reduces the number of HTTP requests. 2. Improves performance and efficiency. The batch processing logic (deserialize, validation, transaction handling, saving, and logging) is handled by BatchSaveHelper. Each record will return its own ResponseResult indicating success or failure.
Request Information
URI Parameters :
None.
Body Parameters :
user_timesheet| Name | Description | Type | Additional information |
|---|---|---|---|
| id |
Primary Key |
globally unique identifier | |
| user_id |
Foreign key of the user this timesheet entry belongs to. |
globally unique identifier | |
| hour_type_id |
Foreign key of the hour type |
globally unique identifier |
Required |
| date_from |
Date+Time timesheet FROM |
date |
Required |
| date_from_rounded |
rounded to the nearest configured interval, used for billing/display. |
date |
Required |
| date_to |
Date+Time timesheet TO |
date |
Required |
| date_to_rounded |
rounded to the nearest configured interval, used for billing/display. |
date |
Required |
| remark |
Additional remark field |
string |
Max length: 4000 |
| is_approved |
Inform if this user_timesheet belongs to a week approved (readonly) |
boolean | |
| is_start_stop |
Indicates this entry was recorded via a start/stop timer rather than manually keyed in. |
boolean | |
| is_time_for_money |
Indicates this time is billable ("time for money") rather than purely informational. |
boolean | |
| db_table_id |
Foreign key to the table timesheet is linked. Can be a jobs,project,company or empty |
globally unique identifier | |
| id_in_table |
Foreign key of the object linked. Can be a jobs.id, project.id , company.id or empty |
globally unique identifier | |
| property_1_checked |
Checked state of the hour type's configurable custom property #1 (see ) for this entry. |
boolean | |
| property_2_checked |
Checked state of the hour type's configurable custom property #2 for this entry. |
boolean | |
| property_3_checked |
Checked state of the hour type's configurable custom property #3 for this entry. |
boolean | |
| property_4_checked |
Checked state of the hour type's configurable custom property #4 for this entry. |
boolean | |
| property_5_checked |
Checked state of the hour type's configurable custom property #5 for this entry. |
boolean | |
| start_latitude_decimal |
Latitude of the user's location when the timer was started. |
decimal number | |
| start_longitude_decimal |
Longitude of the user's location when the timer was started. |
decimal number | |
| end_latitude_decimal |
Latitude of the user's location when the timer was stopped. |
decimal number | |
| end_longitude_decimal |
Longitude of the user's location when the timer was stopped. |
decimal number | |
| modified_dateutc |
Readonly system field managed by database, filled with GetUtcDate when adding,updating |
date | |
| is_confirmed |
offline field: is_confirmed flag |
boolean |
Request Formats :
application/json, text/json
{
"id": "e3c244e9-e555-422e-a87f-4bd7b60db8a9",
"user_id": "9728a6b4-94b6-47d0-a6c4-8f55a4fdc067",
"hour_type_id": "6d2d0b8d-cfd9-4a91-9ca6-8caf771ac3ab",
"date_from": "2026-09-16T09:23:08.7411584+00:00",
"date_from_rounded": "2026-09-16T09:23:08.7411584+00:00",
"date_to": "2026-09-16T09:23:08.7411584+00:00",
"date_to_rounded": "2026-09-16T09:23:08.7411584+00:00",
"remark": "sample string 8",
"is_approved": true,
"is_start_stop": true,
"is_time_for_money": true,
"db_table_id": "601b7ac1-fe54-43d9-b89a-a6113d577b8d",
"id_in_table": "1ff35815-feed-4d9b-8e34-f6a0ee93a085",
"property_1_checked": true,
"property_2_checked": true,
"property_3_checked": true,
"property_4_checked": true,
"property_5_checked": true,
"start_latitude_decimal": 19.0,
"start_longitude_decimal": 20.0,
"end_latitude_decimal": 21.0,
"end_longitude_decimal": 22.0,
"modified_dateutc": "2026-09-16T09:23:08.7411584+00:00",
"is_confirmed": true
}
application/xml, text/xml
<user_timesheet xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <date_from>2026-09-16T09:23:08.741Z</date_from> <date_from_rounded>2026-09-16T09:23:08.741Z</date_from_rounded> <date_to>2026-09-16T09:23:08.741Z</date_to> <date_to_rounded>2026-09-16T09:23:08.741Z</date_to_rounded> <db_table_id>601b7ac1-fe54-43d9-b89a-a6113d577b8d</db_table_id> <end_latitude_decimal>21</end_latitude_decimal> <end_longitude_decimal>22</end_longitude_decimal> <hour_type_id>6d2d0b8d-cfd9-4a91-9ca6-8caf771ac3ab</hour_type_id> <id>e3c244e9-e555-422e-a87f-4bd7b60db8a9</id> <id_in_table>1ff35815-feed-4d9b-8e34-f6a0ee93a085</id_in_table> <is_approved>true</is_approved> <is_confirmed>true</is_confirmed> <is_start_stop>true</is_start_stop> <is_time_for_money>true</is_time_for_money> <modified_dateutc>2026-09-16T09:23:08.741Z</modified_dateutc> <property_1_checked>true</property_1_checked> <property_2_checked>true</property_2_checked> <property_3_checked>true</property_3_checked> <property_4_checked>true</property_4_checked> <property_5_checked>true</property_5_checked> <remark>sample string 8</remark> <start_latitude_decimal>19</start_latitude_decimal> <start_longitude_decimal>20</start_longitude_decimal> <user_id>9728a6b4-94b6-47d0-a6c4-8f55a4fdc067</user_id> </user_timesheet>
Response Information
Resource Description :
IHttpActionResult containing batch save results.
user_timesheet| Name | Description | Type | Additional information |
|---|---|---|---|
| id |
Primary Key |
globally unique identifier | |
| user_id |
Foreign key of the user this timesheet entry belongs to. |
globally unique identifier | |
| hour_type_id |
Foreign key of the hour type |
globally unique identifier |
Required |
| date_from |
Date+Time timesheet FROM |
date |
Required |
| date_from_rounded |
rounded to the nearest configured interval, used for billing/display. |
date |
Required |
| date_to |
Date+Time timesheet TO |
date |
Required |
| date_to_rounded |
rounded to the nearest configured interval, used for billing/display. |
date |
Required |
| remark |
Additional remark field |
string |
Max length: 4000 |
| is_approved |
Inform if this user_timesheet belongs to a week approved (readonly) |
boolean | |
| is_start_stop |
Indicates this entry was recorded via a start/stop timer rather than manually keyed in. |
boolean | |
| is_time_for_money |
Indicates this time is billable ("time for money") rather than purely informational. |
boolean | |
| db_table_id |
Foreign key to the table timesheet is linked. Can be a jobs,project,company or empty |
globally unique identifier | |
| id_in_table |
Foreign key of the object linked. Can be a jobs.id, project.id , company.id or empty |
globally unique identifier | |
| property_1_checked |
Checked state of the hour type's configurable custom property #1 (see ) for this entry. |
boolean | |
| property_2_checked |
Checked state of the hour type's configurable custom property #2 for this entry. |
boolean | |
| property_3_checked |
Checked state of the hour type's configurable custom property #3 for this entry. |
boolean | |
| property_4_checked |
Checked state of the hour type's configurable custom property #4 for this entry. |
boolean | |
| property_5_checked |
Checked state of the hour type's configurable custom property #5 for this entry. |
boolean | |
| start_latitude_decimal |
Latitude of the user's location when the timer was started. |
decimal number | |
| start_longitude_decimal |
Longitude of the user's location when the timer was started. |
decimal number | |
| end_latitude_decimal |
Latitude of the user's location when the timer was stopped. |
decimal number | |
| end_longitude_decimal |
Longitude of the user's location when the timer was stopped. |
decimal number | |
| modified_dateutc |
Readonly system field managed by database, filled with GetUtcDate when adding,updating |
date | |
| is_confirmed |
offline field: is_confirmed flag |
boolean |
Response Formats
application/json, text/json
{
"id": "dd1bdc08-cda3-48ca-b9fd-71a55e52d94b",
"user_id": "1eb8edff-7a08-4477-a610-1490c942fdb8",
"hour_type_id": "502073e7-87a6-4b6d-b6f2-3c8393566868",
"date_from": "2026-09-16T09:23:08.7411584+00:00",
"date_from_rounded": "2026-09-16T09:23:08.7411584+00:00",
"date_to": "2026-09-16T09:23:08.7411584+00:00",
"date_to_rounded": "2026-09-16T09:23:08.7411584+00:00",
"remark": "sample string 8",
"is_approved": true,
"is_start_stop": true,
"is_time_for_money": true,
"db_table_id": "3ec1e123-8ae2-4278-8c6a-f57d7ba03018",
"id_in_table": "6779682c-2f4c-48e3-9680-cb7025a68906",
"property_1_checked": true,
"property_2_checked": true,
"property_3_checked": true,
"property_4_checked": true,
"property_5_checked": true,
"start_latitude_decimal": 19.0,
"start_longitude_decimal": 20.0,
"end_latitude_decimal": 21.0,
"end_longitude_decimal": 22.0,
"modified_dateutc": "2026-09-16T09:23:08.7411584+00:00",
"is_confirmed": true
}
application/xml, text/xml
<user_timesheet xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <date_from>2026-09-16T09:23:08.741Z</date_from> <date_from_rounded>2026-09-16T09:23:08.741Z</date_from_rounded> <date_to>2026-09-16T09:23:08.741Z</date_to> <date_to_rounded>2026-09-16T09:23:08.741Z</date_to_rounded> <db_table_id>3ec1e123-8ae2-4278-8c6a-f57d7ba03018</db_table_id> <end_latitude_decimal>21</end_latitude_decimal> <end_longitude_decimal>22</end_longitude_decimal> <hour_type_id>502073e7-87a6-4b6d-b6f2-3c8393566868</hour_type_id> <id>dd1bdc08-cda3-48ca-b9fd-71a55e52d94b</id> <id_in_table>6779682c-2f4c-48e3-9680-cb7025a68906</id_in_table> <is_approved>true</is_approved> <is_confirmed>true</is_confirmed> <is_start_stop>true</is_start_stop> <is_time_for_money>true</is_time_for_money> <modified_dateutc>2026-09-16T09:23:08.741Z</modified_dateutc> <property_1_checked>true</property_1_checked> <property_2_checked>true</property_2_checked> <property_3_checked>true</property_3_checked> <property_4_checked>true</property_4_checked> <property_5_checked>true</property_5_checked> <remark>sample string 8</remark> <start_latitude_decimal>19</start_latitude_decimal> <start_longitude_decimal>20</start_longitude_decimal> <user_id>1eb8edff-7a08-4477-a610-1490c942fdb8</user_id> </user_timesheet>