Time registrationsStop a time tracker

Stop a time tracker

Stops a running time tracker now and turns the tracked time into a time registration.

Ends the tracker at the current server time. A tracker that ran past midnight is split per day (at most the start day and the next day). The tracked time is saved as registration(s) — added to the linked registration when the tracker was started from today's registration — and the tracker is deleted.

Behaviour:

  • Not idempotent.
  • Not safe to retry blindly. A second call targets a deleted tracker and fails with 500.
  • Side effect: Ends the tracker (server clock); splits it across days when it ran past midnight (max 1 extra day).
  • Side effect: Creates or updates time registration(s) — full registration side effects (work unit, invoicing, salary, financials).
  • Side effect: Deletes the tracker once converted.
  • On failure: If conversion yields no registration the ended tracker is saved and the call returns 500.
  • Read-after-write consistency: not yet documented.

Next: GET /v1/time-registration/{timeRegistrationID}

Not yet documented: behaviour → consistency; examples (success).

curl -X POST "https://app3.timelog.com/your-account/api/v1/time-registration/stop-time-tracker/123" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "Properties": {
    "TimeRegistrationID": 123,
    "TimeRegistrationGUID": "123e4567-e89b-12d3-a456-426614174000",
    "UserID": 123,
    "DepartmentID": 123,
    "Date": "2024-12-25T10:00:00Z",
    "Hours": 3.14,
    "Minutes": 42,
    "BillableHours": 3.14,
    "BillableMinutes": 42,
    "IsBillable": true,
    "Factor": 3.14,
    "EntityType": 42,
    "EntityID": 123,
    "AbsenceCode": {
      "AbsenceCodeID": 123,
      "AbsenceCode": "example_string",
      "Name": "John Doe",
      "Description": "example_string",
      "IsActive": true,
      "FlexPositiveFactor": 3.14,
      "SalaryAccountFactor": 3.14,
      "SalaryAccountFactorEffect": 10,
      "SalaryAccountID": 123,
      "AbsenceCodeTypeID": 123,
      "DeductCapacity": true,
      "TimeTrackingFormat": 42,
      "RequireApproval": true,
      "IsPublicVisible": true,
      "IsFavourite": "null",
      "ID": "123e4567-e89b-12d3-a456-426614174000"
    },
    "TimeTrackingFormat": 42,
    "Comment": "null",
    "AdditionalTextField": "null",
    "MonthlyPeriod": "null",
    "Status": 42,
    "ApprovalStatus": 42,
    "InvoiceStatus": 42,
    "IsInvoiced": true,
    "IsFixedPrice": "null",
    "IsInClosedAccountingPeriod": true,
    "IsMeeting": true,
    "CalendarEventID": 123,
    "StartTime": "null",
    "EndTime": "null",
    "Created": "2024-12-25T10:00:00Z",
    "CreatedBy": 42,
    "LastModified": "2024-12-25T10:00:00Z",
    "LastModifiedBy": 42,
    "InterfaceCreated": 42,
    "InterfaceModified": 42
  },
  "Links": [
    {
      "Href": "example_string",
      "Rel": "example_string"
    }
  ],
  "Actions": [
    {}
  ]
}
POST
/v1/time-registration/stop-time-tracker/{timeTrackerId}
POST
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.
path
timeTrackerIdinteger
Required

Integer ID of the time tracker (TimeTrackerID), not a registration ID.

Format: int32
Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp).

The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user.

Not yet documented: how to obtain a token.

Not yet documented: token lifetime.

Path Parameters

timeTrackerIdinteger
Required

Integer ID of the time tracker (TimeTrackerID), not a registration ID.

Responses

Propertiesobject
Linksarray
Actionsobject[]