IntegrationsUpdate an external system

Update an external system

Replaces the name and description of an external system.

Overwrites both text fields of an existing external system; the ID, and every external key and conflict attached to it, stay as they are. Both fields are required — send the current value of the one you do not want to change.

Use it to:

  • Rename your integration's system after a product rename, keeping all its external keys.

Not for:

  • Renaming a system created by a built-in TimeLog integration — those integrations resolve mappings by name; keep their names unique (see ExternalSystemRead.Name).

Behaviour:

  • Idempotent.
  • Safe to retry.
  • Side effect: Updates ExternalSystemName and ExternalSystemDescription of the row. External keys and conflicts reference the ID and are untouched.
  • Changes are visible to the next read immediately.

Call first: GET /v1/external-systems/{externalSystemID}

See also: POST /v1/external-systems

Not yet documented: examples (success).

curl -X PUT "https://app3.timelog.com/your-account/api/v1/external-systems/123" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
  "Name": "John Doe",
  "Description": "example_string"
}'
{
  "Properties": {
    "ID": 123,
    "Name": "John Doe",
    "Description": "example_string",
    "IsSystemExternalSystem": true
  },
  "Links": [
    {
      "Href": "example_string",
      "Rel": "example_string"
    }
  ],
  "Actions": [
    {}
  ]
}
PUT
/v1/external-systems/{externalSystemID}
PUT
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
externalSystemIDinteger
Required

The external system to update.

Format: int32
Content-Typestring
Required

The media type of the request body

Options: application/json
Namestring
Required

Display name of the external system. Not unique: sending an existing name creates a second system with that name. - null, empty or whitespace-only — 400 "'Name' must not be empty." Built-in TimeLog integrations resolve key mappings by system name. Giving a system the name of another one makes those name-based lookups ambiguous (see ExternalSystemRead.Name). > Not yet documented: behaviour.

Min length: 1 • Max length: 200
Descriptionstring
Required

Free-text description of the external system. - null, empty or whitespace-only — 400 "'Description' must not be empty."

Min length: 1 • Max length: 255
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

externalSystemIDinteger
Required

The external system to update.

Body

application/json
Namestring
Required

Display name of the external system. Not unique: sending an existing name creates a second system with that name.

  • null, empty or whitespace-only — 400 "'Name' must not be empty."

Built-in TimeLog integrations resolve key mappings by system name. Giving a system the name of another one makes those name-based lookups ambiguous (see ExternalSystemRead.Name).

Not yet documented: behaviour.

Descriptionstring
Required

Free-text description of the external system.

  • null, empty or whitespace-only — 400 "'Description' must not be empty."

Responses

Propertiesobject

An external system registered in the account: a named "other side" (ERP, payroll, calendar, CRM …) that TimeLog objects can be linked to through external keys (ExternalKey.ExternalSystemID) and that integration conflicts are raised against. TimeLog's own built-in integrations create one per integration handler (named after the handler, e.g. "e-conomic <site>_v1"); an integrator can register its own with POST /v1/external-systems.

Linksarray
Actionsobject[]