POST

WorkingTime.Save

Create or update a completed working-time row in The route checks customer access, validates start/stop UTC date-times, writes time_counter, runs workingtime.created or workingtime.updated automation, and emits the matching realtime event.

Permissions

  • User must be logged in with a valid bearer token.
  • Returned or changed records are limited by the user permissions, team access, folder access, and account settings.

Action

  • Updates the requested WorkingTime record after validating permissions and input fields.

Push Service

Pushes event workingtime.created to users who should see this change.

Automation

Runs automation event workingtime.created with the record id and submitted parameters after the action succeeds.

Special Instructions

  • Send the bearer token on protected calls with Authorization: Bearer YOUR TOKEN.
  • Send parameters as POST body fields exactly as documented.
  • Send date/time values in UTC Y-m-d H:i:s format when a date or datetime field is used.

Required Parameters

NameTypeSampleExplanation
customer_id
post
int123Customer id that owns the working-time row.
start_date
post
datetime2026-07-17 09:00:00UTC start date/time for the work row. Send UTC date/time as Y-m-d H:i:s, for example 2026-07-20 10:00:00. The SDK converts user local Date/local datetime input to UTC before posting.
stop_date
post
datetime2026-07-17 10:00:00UTC stop date/time for the work row. Send UTC date/time as Y-m-d H:i:s, for example 2026-07-20 10:00:00. The SDK converts user local Date/local datetime input to UTC before posting.

Optional Parameters

NameTypeSampleWhat it gives
working_time_id
post
int55When sent, updates an existing row instead of creating a new one.
category
post
stringsupportClassifies the work row by category.
notes
post
stringFinished setup callSaves notes on the work row.

Authentication

Send the bearer token returned by Login in the request header.

Authorization: Bearer YOUR TOKEN

Sample Request

{
    "url": "\/app\/WorkingTime.Save",
    "method": "POST",
    "headers": {
        "Authorization": "Bearer YOUR TOKEN"
    },
    "body": {
        "customer_id": "123",
        "start_date": "2026-07-17 09:00:00",
        "stop_date": "2026-07-17 10:00:00"
    },
    "url_user": "https:\/\/{user}.bull36.com\/app\/WorkingTime.Save",
    "url_domain": "https:\/\/{domain}\/app\/WorkingTime.Save"
}

Endpoint

POST /app/WorkingTime.Save
POST https://{user}.bull36.com/app/WorkingTime.Save
POST https://{domain}/app/WorkingTime.Save

Sample Output

{
    "success": 1,
    "message": "Success",
    "id": 55,
    "automation_event": "workingtime.created",
    "socket_event": "workingtime.created"
}

JavaScript Example

const token = 'YOUR TOKEN';
const body = new URLSearchParams({});
// Fill body fields from the Sample Request JSON above.
const res = await fetch('/app/WorkingTime.Save', { method: 'POST', headers: { Authorization: 'Bearer ' + token }, body });
const data = await res.json();
console.log(data);

Error Example

{
    "success": 0,
    "message": "Please select correct time."
}