Users and organisationList employee projections in a period

List employee projections in a period

Lists the per-day norm rows of the caller — or of every employee — between two dates.

Returns one row per employee per day in [startDate, endDate] with the normal working time of the day and its status flags. By default only the caller's own rows are returned; with includeAllEmployees=true the rows of every employee. There is no parameter to pick one other employee. $expand=user adds the User object to each row.

Use it to:

  • Compare registered hours with the norm per day (flex / under-registration checks)
  • Export expected working hours per employee to payroll or BI

Behaviour:

  • Idempotent.
  • Safe to retry.
  • Consistency: eventual
  • Rows are pre-computed by TimeLog; a change of normal working time or holidays shows up only after the projections are regenerated.

See also: GET /v1/user, GET /v1/time-registration/{timeRegistrationID}

Not yet documented: behaviour → consistency detail; examples (success); request → query params → description.

curl -X GET "https://app3.timelog.com/your-account/api/v1/employee-projection/get-in-period?startDate=2024-12-25T10%3A00%3A00Z&endDate=2024-12-25T10%3A00%3A00Z&includeAllEmployees=false&$page=1&$pagesize=10&$expand=user" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "Properties": {
    "TotalRecord": "example_string",
    "TotalPage": "example_string",
    "PageNumber": "example_string"
  },
  "Entities": [
    {
      "Properties": {
        "ProjectionID": 123,
        "UserID": 123,
        "User": {
          "UserID": 123,
          "ID": "123e4567-e89b-12d3-a456-426614174000",
          "FirstName": "John Doe",
          "LastName": "John Doe",
          "Initials": "example_string",
          "IsActive": true,
          "UserType": "Employee",
          "LegalEntityID": 123,
          "Email": "user@example.com"
        },
        "Date": "2024-12-25T10:00:00Z",
        "NormalWorkingTimeDayOrder": 42,
        "NormalWorkingHours": 3.14,
        "NormalWorkingMinutes": 42,
        "IsClosed": true,
        "IsInClosedAccountingPeriod": true,
        "HasRejectedTime": true,
        "IsApproved": true,
        "ID": "123e4567-e89b-12d3-a456-426614174000"
      },
      "Links": [
        {
          "Href": "example_string",
          "Rel": "example_string"
        }
      ],
      "Actions": [
        {}
      ]
    }
  ],
  "Links": [
    {
      "Href": "example_string",
      "Rel": "example_string"
    }
  ]
}
GET
/v1/employee-projection/get-in-period
GET
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
startDatestring
Required

First day of the period (inclusive: Date >= startDate). Omitted -> 404 action-not-matched. Filters on EmployeeProjectionRead.Date (gte).

Format: date-time
query
endDatestring
Required

Last day of the period (inclusive: Date <= endDate). Omitted -> 404 action-not-matched. Filters on EmployeeProjectionRead.Date (lte).

Format: date-time
query
includeAllEmployeesboolean

false = only the caller's rows; true = every employee's rows.

query
$pageinteger

Page number.

query
$pagesizeinteger

Page size. No maximum enforced in the API layer.

query
$expandstring

Expansion. Only user is supported. Allowed values: | Value | Name | Meaning | |---|---|---| | user | user | Add the User object (name, initials, e-mail …) to every row. Any other value makes the call fail with 500. |

Options: user
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

startDatestring
Required

First day of the period (inclusive: Date >= startDate). Omitted -> 404 action-not-matched.

Filters on EmployeeProjectionRead.Date (gte).

endDatestring
Required

Last day of the period (inclusive: Date <= endDate). Omitted -> 404 action-not-matched.

Filters on EmployeeProjectionRead.Date (lte).

includeAllEmployeesboolean

false = only the caller's rows; true = every employee's rows.

$pageinteger

Page number.

$pagesizeinteger

Page size. No maximum enforced in the API layer.

$expandstring

Expansion. Only user is supported.

Allowed values:

ValueNameMeaning
useruserAdd the User object (name, initials, e-mail …) to every row. Any other value makes the call fail with 500.
Allowed values:user

Responses

Propertiesobject

Paging values. They are returned as STRINGS, for example "TotalRecord": "12".

Entitiesarray

Omitted (not []) when the list is empty.

Linksarray