Voxbi Cockpit APIs
All endpoints

Delete-a-timepoint correction (user)

Requests removal of an EXISTING timepoint. timepoint_id is required and must be one of the requesting employee's own timepoints. Two outcomes:

  • If there is no pending correction for that timepoint, a pending delete request is created (201); on validator acceptance the timepoint is removed.
  • If a correction for that timepoint is already pending, that pending request is canceled directly (200, no new request and no approval); i.e. delete retracts the outstanding correction.

Self-scoped: the authenticated user must be the {employee_id}.

HTTP: bearerAuth

User bearer token. Default authentication for customer-facing endpoints. Obtain a token by calling POST /login with your credentials, then send it on every subsequent request as Authorization: Bearer <token>. The token inherits the permissions and PBX scope of the authenticated user.

HTTP Authorization Scheme
bearer
Bearer format
Bearer <token>
pbx_id path · string · uuid *
employee_id path · string · uuid *

Request body · required

Request schema
timepoint_id*string · uuid
The existing timepoint to remove. Must belong to the authenticated employee's own user. Required.
correction_commentstring | null
new_commentstring | null

Responses

An already-pending correction for the timepoint was canceled instead.
Response schema
id*string · uuid
Unique identifier of the correction request.
read-only
example: 550e8400-e29b-41d4-a716-446655440000
mxvp_user_id*string · uuid
Identifier of the Pbx (tenant) that owns this correction (the model's pbx_id).
example: 550e8400-e29b-41d4-a716-446655440001
timepoint_id*string | null · uuid
Identifier of the time point this correction targets. Null when the correction requests the creation of a brand new time point rather than a change to an existing one.
example: 550e8400-e29b-41d4-a716-446655440002
requester_ext_id*string | null · uuid
Identifier of the employee who requested the correction. Resolved from the related requester employee when loaded, falling back to the stored employee_id. Null when no requesting employee can be determined.
example: 550e8400-e29b-41d4-a716-446655440003
new_status_id*string | null · uuid
Identifier of the Tempus status the time point should be changed to. Null when the correction does not change the status.
example: 550e8400-e29b-41d4-a716-446655440004
new_sub_status_id*string | null · uuid
Identifier of the Tempus sub-status the time point should be changed to. Null when the correction does not change the sub-status.
example: 550e8400-e29b-41d4-a716-446655440005
old_status_id*string | null · uuid
Identifier of the Tempus status the time point had before the correction. Null when no prior status applies.
example: 550e8400-e29b-41d4-a716-446655440006
old_sub_status_id*string | null · uuid
Identifier of the Tempus sub-status the time point had before the correction. Null when no prior sub-status applies.
example: 550e8400-e29b-41d4-a716-446655440007
new_location_idstring | null · uuid
Location the correction asks the time point to be recorded at. Null when the correction does not touch the location, which is NOT the same as asking for the location to be cleared: acceptance leaves the time point's current location exactly as it is. Always null on corrections raised before this field existed.
example: 550e8400-e29b-41d4-a716-446655440010
old_location_idstring | null · uuid
The location the time point was pointed at when the correction was raised. A snapshot, so the requested move reads as old -> new and so the reversal created by cancelling an accepted correction can swap the pair. Null when the time point had no location, or when the correction adds a new one.
example: 550e8400-e29b-41d4-a716-446655440011
old_locationobject | null
The location the time point was pointed at when the correction was raised, resolved. Null when it had none.
idstring · uuid
example: 550e8400-e29b-41d4-a716-446655440011
namestring
example: HQ Luxembourg
latitudenumber | null · double
example: 49.6008
longitudenumber | null · double
example: 6.133
geofence_radius_minteger | null
example: 150
new_locationobject | null
The location the correction asks for, resolved. Null when the correction does not touch the location.
idstring · uuid
example: 550e8400-e29b-41d4-a716-446655440010
namestring
example: Remote office
latitudenumber | null · double
example: 49.612
longitudenumber | null · double
example: 6.13
geofence_radius_minteger | null
example: 200
new_time*string | null · date-time
Requested new timestamp for the time point, in ISO 8601 format. A null value on a correction targeting an existing time point indicates a removal (deletion) request.
example: 2024-03-01T09:00:00.000000Z
old_time*string | null · date-time
Original timestamp of the time point before the correction, in ISO 8601 format. Null when no prior time applies.
example: 2024-03-01T08:30:00.000000Z
correction_comment*string | null
Free-form justification supplied by the requester explaining why the correction is needed. Null when no comment was given.
example: Forgot to clock out at the end of the shift.
new_comment*string | null
Comment to be applied to the time point when the correction is accepted (used in particular when creating a new time point). Null when not set.
example: Manual entry approved by supervisor.
status*string | null
Workflow state of the correction request. `pending` awaits validator review, `accepted` has been approved and applied to the time point, `rejected` was refused, `canceled` was withdrawn, and `rejected_closed` was refused and closed. Legacy stored values `refused` and `refused_closed` are normalized to `rejected` and `rejected_closed` respectively.
enum: pending accepted rejected canceled rejected_closed
example: pending
create_time*string · date-time
Timestamp when the correction request was created, in ISO 8601 format (the model's created_at).
read-only
example: 2024-03-01T08:29:07.000000Z
update_time*string · date-time
Timestamp when the correction request was last updated, in ISO 8601 format (the model's updated_at).
read-only
example: 2024-03-01T08:29:07.000000Z
accepted_validations_count*integer · int32
Number of validators who have accepted this correction request.
example: 1
refused_validations_count*integer · int32
Number of validators who have refused this correction request.
example: 0
accepted_by*array<object>
Every validator that must sign off on this correction, with their individual decision. A correction may require multiple validators. One entry per approval record; empty when no validators are assigned yet.
employee_id*string | null · uuid
Identifier of the Tempus employee acting as validator.
example: 550e8400-e29b-41d4-a716-446655440004
status*string
This validator's decision. `pending` awaits their action; `accepted` and `rejected` record the outcome.
enum: pending accepted rejected
example: pending
timepointobject
The time point this correction targets. Only present when the related time point is loaded on the model; absent otherwise.
idstring · uuid
Unique identifier of the time point.
read-only
example: 550e8400-e29b-41d4-a716-446655440002
mxvp_user_idstring · uuid
Identifier of the Pbx (tenant) that owns the time point.
example: 550e8400-e29b-41d4-a716-446655440001
ext_idstring | null · uuid
Identifier of the employee the time point belongs to. Resolved from the related employee when loaded, falling back to the time point's user identifier. Null when neither is available.
example: 550e8400-e29b-41d4-a716-446655440003
status_idstring | null · uuid
Identifier of the Tempus status currently assigned to the time point.
example: 550e8400-e29b-41d4-a716-446655440004
timestring | null · date-time
Start timestamp of the time point, in ISO 8601 format. Null when not set.
example: 2024-03-01T08:30:00.000000Z
migration_idstring | null
Legacy migration identifier carried in the time point metadata, used to trace records imported from a previous system. Null when not migrated.
example: legacy-tp-10293
delete_datestring | null · date-time
Soft-delete timestamp of the time point, in ISO 8601 format. Null when the time point has not been deleted.
statusobject
The Tempus status assigned to the time point. Only present when the status relation is loaded; absent otherwise.
idstring · uuid
Unique identifier of the status.
read-only
example: 550e8400-e29b-41d4-a716-446655440004
mxvp_user_idstring · uuid
Identifier of the Pbx (tenant) that owns the status.
example: 550e8400-e29b-41d4-a716-446655440001
namestring | null
Display name of the status.
example: Working
iconstring | null
CSS icon class used to represent the status, from its style metadata. Null when not set.
example: la la-briefcase
fontcolorstring | null
Font color (CSS color value) for the status label, from its style metadata. Null when not set.
example: #ffffff
backgroundcolorstring | null
Background color (CSS color value) for the status badge, from its style metadata. Null when not set.
example: #2e7d32
cssstring | null
Additional CSS class applied to the status badge, from its style metadata. Null when not set.
example: status-working
commentinteger · int32
Whether a comment is required when assigning this status, normalized from the status metadata to an integer flag (0 = not required, 1 = required).
enum: 0 1
example: 0
payableboolean | null
Whether time recorded under this status is payable. Null when not configured.
example: 1
actionstring | null
Optional action keyword associated with the status, from its metadata. Null when none.
example: clock_in
migration_idstring | null
Legacy migration identifier for the status, from its metadata. Null when not migrated.
example: legacy-status-7
delete_datestring | null · date-time
Soft-delete timestamp of the status, in ISO 8601 format. Null when not deleted.
substatusesarray<object>
Sub-statuses attached to the time point. Only present when the sub-status relation is loaded; may be empty.
idstring · uuid
Unique identifier of the sub-status.
read-only
example: 550e8400-e29b-41d4-a716-446655440005
mxvp_user_idstring · uuid
Identifier of the Pbx (tenant) that owns the sub-status.
example: 550e8400-e29b-41d4-a716-446655440001
namestring | null
Display name of the sub-status.
example: Client meeting
iconstring | null
CSS icon class used to represent the sub-status, from its style metadata. Null when not set.
example: la la-users
fontcolorstring | null
Font color (CSS color value) for the sub-status label, from its style metadata. Null when not set.
example: #000000
backgroundcolorstring | null
Background color (CSS color value) for the sub-status badge, from its style metadata. Null when not set.
example: #bbdefb
cssstring | null
Additional CSS class applied to the sub-status badge, from its style metadata. Null when not set.
example: substatus-meeting
commentinteger · int32
Whether a comment is required when assigning this sub-status, normalized from the sub-status metadata to an integer flag (0 = not required, 1 = required).
enum: 0 1
example: 0
actionstring | null
Optional action keyword associated with the sub-status, from its metadata. Null when none.
delete_datestring | null · date-time
Soft-delete timestamp of the sub-status, in ISO 8601 format. Null when not deleted.
A pending delete correction was created.
Response schema
id*string · uuid
Unique identifier of the correction request.
read-only
example: 550e8400-e29b-41d4-a716-446655440000
mxvp_user_id*string · uuid
Identifier of the Pbx (tenant) that owns this correction (the model's pbx_id).
example: 550e8400-e29b-41d4-a716-446655440001
timepoint_id*string | null · uuid
Identifier of the time point this correction targets. Null when the correction requests the creation of a brand new time point rather than a change to an existing one.
example: 550e8400-e29b-41d4-a716-446655440002
requester_ext_id*string | null · uuid
Identifier of the employee who requested the correction. Resolved from the related requester employee when loaded, falling back to the stored employee_id. Null when no requesting employee can be determined.
example: 550e8400-e29b-41d4-a716-446655440003
new_status_id*string | null · uuid
Identifier of the Tempus status the time point should be changed to. Null when the correction does not change the status.
example: 550e8400-e29b-41d4-a716-446655440004
new_sub_status_id*string | null · uuid
Identifier of the Tempus sub-status the time point should be changed to. Null when the correction does not change the sub-status.
example: 550e8400-e29b-41d4-a716-446655440005
old_status_id*string | null · uuid
Identifier of the Tempus status the time point had before the correction. Null when no prior status applies.
example: 550e8400-e29b-41d4-a716-446655440006
old_sub_status_id*string | null · uuid
Identifier of the Tempus sub-status the time point had before the correction. Null when no prior sub-status applies.
example: 550e8400-e29b-41d4-a716-446655440007
new_location_idstring | null · uuid
Location the correction asks the time point to be recorded at. Null when the correction does not touch the location, which is NOT the same as asking for the location to be cleared: acceptance leaves the time point's current location exactly as it is. Always null on corrections raised before this field existed.
example: 550e8400-e29b-41d4-a716-446655440010
old_location_idstring | null · uuid
The location the time point was pointed at when the correction was raised. A snapshot, so the requested move reads as old -> new and so the reversal created by cancelling an accepted correction can swap the pair. Null when the time point had no location, or when the correction adds a new one.
example: 550e8400-e29b-41d4-a716-446655440011
old_locationobject | null
The location the time point was pointed at when the correction was raised, resolved. Null when it had none.
idstring · uuid
example: 550e8400-e29b-41d4-a716-446655440011
namestring
example: HQ Luxembourg
latitudenumber | null · double
example: 49.6008
longitudenumber | null · double
example: 6.133
geofence_radius_minteger | null
example: 150
new_locationobject | null
The location the correction asks for, resolved. Null when the correction does not touch the location.
idstring · uuid
example: 550e8400-e29b-41d4-a716-446655440010
namestring
example: Remote office
latitudenumber | null · double
example: 49.612
longitudenumber | null · double
example: 6.13
geofence_radius_minteger | null
example: 200
new_time*string | null · date-time
Requested new timestamp for the time point, in ISO 8601 format. A null value on a correction targeting an existing time point indicates a removal (deletion) request.
example: 2024-03-01T09:00:00.000000Z
old_time*string | null · date-time
Original timestamp of the time point before the correction, in ISO 8601 format. Null when no prior time applies.
example: 2024-03-01T08:30:00.000000Z
correction_comment*string | null
Free-form justification supplied by the requester explaining why the correction is needed. Null when no comment was given.
example: Forgot to clock out at the end of the shift.
new_comment*string | null
Comment to be applied to the time point when the correction is accepted (used in particular when creating a new time point). Null when not set.
example: Manual entry approved by supervisor.
status*string | null
Workflow state of the correction request. `pending` awaits validator review, `accepted` has been approved and applied to the time point, `rejected` was refused, `canceled` was withdrawn, and `rejected_closed` was refused and closed. Legacy stored values `refused` and `refused_closed` are normalized to `rejected` and `rejected_closed` respectively.
enum: pending accepted rejected canceled rejected_closed
example: pending
create_time*string · date-time
Timestamp when the correction request was created, in ISO 8601 format (the model's created_at).
read-only
example: 2024-03-01T08:29:07.000000Z
update_time*string · date-time
Timestamp when the correction request was last updated, in ISO 8601 format (the model's updated_at).
read-only
example: 2024-03-01T08:29:07.000000Z
accepted_validations_count*integer · int32
Number of validators who have accepted this correction request.
example: 1
refused_validations_count*integer · int32
Number of validators who have refused this correction request.
example: 0
accepted_by*array<object>
Every validator that must sign off on this correction, with their individual decision. A correction may require multiple validators. One entry per approval record; empty when no validators are assigned yet.
employee_id*string | null · uuid
Identifier of the Tempus employee acting as validator.
example: 550e8400-e29b-41d4-a716-446655440004
status*string
This validator's decision. `pending` awaits their action; `accepted` and `rejected` record the outcome.
enum: pending accepted rejected
example: pending
timepointobject
The time point this correction targets. Only present when the related time point is loaded on the model; absent otherwise.
idstring · uuid
Unique identifier of the time point.
read-only
example: 550e8400-e29b-41d4-a716-446655440002
mxvp_user_idstring · uuid
Identifier of the Pbx (tenant) that owns the time point.
example: 550e8400-e29b-41d4-a716-446655440001
ext_idstring | null · uuid
Identifier of the employee the time point belongs to. Resolved from the related employee when loaded, falling back to the time point's user identifier. Null when neither is available.
example: 550e8400-e29b-41d4-a716-446655440003
status_idstring | null · uuid
Identifier of the Tempus status currently assigned to the time point.
example: 550e8400-e29b-41d4-a716-446655440004
timestring | null · date-time
Start timestamp of the time point, in ISO 8601 format. Null when not set.
example: 2024-03-01T08:30:00.000000Z
migration_idstring | null
Legacy migration identifier carried in the time point metadata, used to trace records imported from a previous system. Null when not migrated.
example: legacy-tp-10293
delete_datestring | null · date-time
Soft-delete timestamp of the time point, in ISO 8601 format. Null when the time point has not been deleted.
statusobject
The Tempus status assigned to the time point. Only present when the status relation is loaded; absent otherwise.
idstring · uuid
Unique identifier of the status.
read-only
example: 550e8400-e29b-41d4-a716-446655440004
mxvp_user_idstring · uuid
Identifier of the Pbx (tenant) that owns the status.
example: 550e8400-e29b-41d4-a716-446655440001
namestring | null
Display name of the status.
example: Working
iconstring | null
CSS icon class used to represent the status, from its style metadata. Null when not set.
example: la la-briefcase
fontcolorstring | null
Font color (CSS color value) for the status label, from its style metadata. Null when not set.
example: #ffffff
backgroundcolorstring | null
Background color (CSS color value) for the status badge, from its style metadata. Null when not set.
example: #2e7d32
cssstring | null
Additional CSS class applied to the status badge, from its style metadata. Null when not set.
example: status-working
commentinteger · int32
Whether a comment is required when assigning this status, normalized from the status metadata to an integer flag (0 = not required, 1 = required).
enum: 0 1
example: 0
payableboolean | null
Whether time recorded under this status is payable. Null when not configured.
example: 1
actionstring | null
Optional action keyword associated with the status, from its metadata. Null when none.
example: clock_in
migration_idstring | null
Legacy migration identifier for the status, from its metadata. Null when not migrated.
example: legacy-status-7
delete_datestring | null · date-time
Soft-delete timestamp of the status, in ISO 8601 format. Null when not deleted.
substatusesarray<object>
Sub-statuses attached to the time point. Only present when the sub-status relation is loaded; may be empty.
idstring · uuid
Unique identifier of the sub-status.
read-only
example: 550e8400-e29b-41d4-a716-446655440005
mxvp_user_idstring · uuid
Identifier of the Pbx (tenant) that owns the sub-status.
example: 550e8400-e29b-41d4-a716-446655440001
namestring | null
Display name of the sub-status.
example: Client meeting
iconstring | null
CSS icon class used to represent the sub-status, from its style metadata. Null when not set.
example: la la-users
fontcolorstring | null
Font color (CSS color value) for the sub-status label, from its style metadata. Null when not set.
example: #000000
backgroundcolorstring | null
Background color (CSS color value) for the sub-status badge, from its style metadata. Null when not set.
example: #bbdefb
cssstring | null
Additional CSS class applied to the sub-status badge, from its style metadata. Null when not set.
example: substatus-meeting
commentinteger · int32
Whether a comment is required when assigning this sub-status, normalized from the sub-status metadata to an integer flag (0 = not required, 1 = required).
enum: 0 1
example: 0
actionstring | null
Optional action keyword associated with the sub-status, from its metadata. Null when none.
delete_datestring | null · date-time
Soft-delete timestamp of the sub-status, in ISO 8601 format. Null when not deleted.
Authorization Token Missing. This error is returned when the authorization token is missing.
Response schema
errorstring
Error message
example: Authorization Token is missing
Not authorized for this employee/tenant, or no linked employee record.
Response schema
No response body.
Data Not Found. This error is returned when the requested data is not found.
Response schema
messagearray<string>
[]string
Unprocessable Parameters. This error is returned when a parameter is not valid.
Response schema
messagestring
example: The given data was invalid.
errorsobject
filterarray<string>
[]string
sortarray<string>
[]string
pagearray<string>
[]string
per_pagearray<string>
[]string
post https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/corrections/delete
Base URL
Request sample
curl -X POST 'https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/corrections/delete' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  --data '{"timepoint_id":"550e8400-e29b-41d4-a716-446655440002","correction_comment":"Wrong entry."}'
const response = await fetch('https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/corrections/delete', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${YOUR_TOKEN}`,
  },
  body: JSON.stringify({
    "timepoint_id": "550e8400-e29b-41d4-a716-446655440002",
    "correction_comment": "Wrong entry."
}),
});

const data = await response.json();
console.log(data);
import requests

response = requests.post('https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/corrections/delete',
    headers={'Authorization': f'Bearer {YOUR_TOKEN}'},
    json={
    "timepoint_id": "550e8400-e29b-41d4-a716-446655440002",
    "correction_comment": "Wrong entry."
}
)
response.raise_for_status()
data = response.json()
print(data)
<?php
$context = stream_context_create([
    'http' => [
        'method'  => 'POST',
        'header'  => "Content-Type: application/json\r\nAuthorization: Bearer YOUR_TOKEN",
        'content' => '{
    \"timepoint_id\": \"550e8400-e29b-41d4-a716-446655440002\",
    \"correction_comment\": \"Wrong entry.\"
}',
    ],
]);

$response = file_get_contents('https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/corrections/delete', false, $context);
$data = json_decode($response, true);
print_r($data);
Sample request
{}
"timepoint_id": "550e8400-e29b-41d4-a716-446655440002",
"correction_comment": "Wrong entry."
}
No example for this status.
No example for this status.
{}
"error": "Authorization Token is missing"
}
Cache-Control string
example: private, must-revalidate
Connection string
example: keep-alive
Content-Type string
example: application/json
Vary string
example: Origin
X-RateLimit-Limit integer
Max requests allowed in the current rate-limit window.
example: 60
X-RateLimit-Remaining integer
Requests remaining in the current rate-limit window.
example: 57
No example for this status.
{}
"message": []
"Data not found"
]
}
Cache-Control string
example: private, must-revalidate
Connection string
example: keep-alive
Content-Type string
example: application/json
Vary string
example: Origin
X-RateLimit-Limit integer
Max requests allowed in the current rate-limit window.
example: 60
X-RateLimit-Remaining integer
Requests remaining in the current rate-limit window.
example: 57
{}
"errors": {}
"filter": [],
"The filter field must be an array."
],
"sort": [],
"The sort field must be a string."
],
"page": [],
"The page field must be an integer."
],
"per_page": []
"The per page field must be an integer."
]
}
}
Cache-Control string
example: private, must-revalidate
Connection string
example: keep-alive
Content-Type string
example: application/json
Vary string
example: Origin
X-RateLimit-Limit integer
Max requests allowed in the current rate-limit window.
example: 60
X-RateLimit-Remaining integer
Requests remaining in the current rate-limit window.
example: 57