EmployeeRemove all of an employee's competences

Remove all of an employee's competences

Permanently deletes every competence of one employee, or every competence of one competence group.

Hard delete of the employee's competence rows — all of them, or with groupId > 0 only those whose competence belongs to that group. The call reaches this action only with userId in the query: without it the request falls through to DELETE /employee-competences/{id} and is rejected as "The value 'bulk' is not valid for Int32.".

Use it to:

  • Reset an employee's skills profile before a full re-import
  • Clear one competence group for an employee (groupId)

Not for:

  • Removing one competence — DELETE /v2/employee-competences/{id}

Behaviour:

  • Idempotent.
  • A repeat deletes nothing more and answers 204.
  • Safe to retry.
  • Side effect: Raises CompetenceValueBatchDeleted once, with no domain object (description 'CompetenceValueBatchDeletedForUser<userId>').
  • On failure: 403: nothing deleted (the check runs first).
  • Changes are visible to the next read immediately.
  • Batch: One DELETE statement.

Call first: GET /v1/user

Next: POST /v2/employee-competences/bulk

See also: DELETE /v2/employee-competences/{id}

Not yet documented: examples.

curl -X DELETE "https://app3.timelog.com/your-account/api/v2/employee-competences/bulk?userId=123&groupId=123" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{}
DELETE
/v2/employee-competences/bulk
DELETE
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.
query
userIdinteger
Required

UserID of the employee. Refers to UserRead.UserID. Look up valid values with GET /v1/user.

Format: int32
query
groupIdinteger

Limit the delete to competences of this group. Omitted, 0 or negative = ALL the employee's competences. An unknown group deletes nothing. Filters on EmployeeCompetenceGroupRead.GroupId (eq). Refers to CompetenceGroupDetailRead.GroupId. Look up valid values with GET /v2/competences/by-group.

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.

Query Parameters

userIdinteger
Required

UserID of the employee.

Refers to UserRead.UserID. Look up valid values with GET /v1/user.

groupIdinteger

Limit the delete to competences of this group. Omitted, 0 or negative = ALL the employee's competences. An unknown group deletes nothing.

Filters on EmployeeCompetenceGroupRead.GroupId (eq).

Refers to CompetenceGroupDetailRead.GroupId. Look up valid values with GET /v2/competences/by-group.

Responses