EmployeesGetEmployeesPaged

GetEmployeesPaged

Organisation service 1.9: Returns one page of the account's employees - active first, then inactive - as full Employee records.

ServiceOrganisation 1.9
EndpointPOST https://app{server-number}.timelog.com/{account}/WebServices/Organisation/V1_9/OrganisationServiceSecure.svc
SOAPActionhttp://www.timelog.com/api/tlp/v1_9/OrganisationService/GetEmployeesPaged
Content-Typetext/xml; charset=utf-8
AuthenticationA token from GetToken
PermissionsThe result includes private address / telephone and cost price / hourly rate of every employee.
Changes dataNo
Safe to retryYes
PagingYes, up to 100 per page

How it works

Loads EVERY employee of the account, converts each to an Employee record, and only then cuts out the requested page. Each call therefore costs the whole employee list, whatever the page size. API users, system users and other non-employee user types are not included. There is no filter, no 'modified since' and no scoping to the caller - every caller sees every employee.

Parameters

Each parameter has one label: Required, Conditional (required depending on other values) or Optional. Send them in the order shown.

pageinteger
Required

1-based page number. 0 or negative behaves like 1. Beyond the last page -> empty Return.

pageSizeinteger
Required

Employees per page; values above 100 are silently capped at 100. 0 or negative -> empty Return and a meaningless TotalPageCount.

tokenSecurityToken
Required

The token from GetToken: Initials, Expires and Hash, sent back unchanged.

Request

POST /{account}/WebServices/Organisation/V1_9/OrganisationServiceSecure.svc HTTP/1.1
Host: app{server-number}.timelog.com
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://www.timelog.com/api/tlp/v1_9/OrganisationService/GetEmployeesPaged"

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:org="http://www.timelog.com/api/tlp/v1_9"
                  xmlns:tok="http://www.timelog.com/api/tlp/v1_3">
  <soapenv:Body>
    <org:GetEmployeesPaged>
      <org:page>1</org:page>
      <org:pageSize>100</org:pageSize>
      <org:token>
        <tok:Initials>{Initials from GetToken}</tok:Initials>
        <tok:Expires>{Expires from GetToken, unchanged}</tok:Expires>
        <tok:Hash>{Hash from GetToken}</tok:Hash>
      </org:token>
    </org:GetEmployeesPaged>
  </soapenv:Body>
</soapenv:Envelope>
Replace every {…} placeholder with your own value.

Response

The call returns the standard response envelope. Check ResponseState first: a failed call still returns HTTP 200.

ResponseStatestring
Required

Success, Invalid or Error.

ErrorCodeinteger

0 on success, otherwise the error code. See Errors.

TotalPageCountinteger

Number of pages for the whole result with your pageSize. Keep calling with page + 1 until you have read them all.

ReturnEmployee[]

Response<Employee>: one page of full employee records; IsReturnPaged = true; TotalPageCount = ceiling. One 'Successfully called' message. ResponseState Success, empty Return, TotalPageCount 0.

Example response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <GetEmployeesPagedResponse xmlns="http://www.timelog.com/api/tlp/v1_9">
      <GetEmployeesPagedResult xmlns:a="http://api.timelog.com"
                               xmlns:b="http://www.timelog.com/api/tlp/v1_9"
                               xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <a:Return>
          <b:Employee>
            <a:Action>Original</a:Action>
            <a:IsCustomFieldsLoaded>false</a:IsCustomFieldsLoaded>
            <a:CustomFields i:nil="true"/>
            <a:IsExternalKeysLoaded>false</a:IsExternalKeysLoaded>
            <a:ExternalKeys i:nil="true"/>
            <b:ID>3f2504e0-4f89-41d3-9a0c-305000000001</b:ID>
            <b:EmployeeID>1001</b:EmployeeID>
            <b:UserName>Example user</b:UserName>
            <b:Initials>ABC</b:Initials>
            <b:FirstName>Example first</b:FirstName>
            <b:LastName>Example last</b:LastName>
            <b:Fullname>Example</b:Fullname>
            <b:EmployeeNo>1001</b:EmployeeNo>
            <b:Title>Example</b:Title>
            <b:DepartmentGuid>3f2504e0-4f89-41d3-9a0c-305000000002</b:DepartmentGuid>
            <b:DepartmentName>Example department</b:DepartmentName>
            <b:DepartmentNo>1001</b:DepartmentNo>
            <b:InterfaceLanguage>0</b:InterfaceLanguage>
            <b:Telephone>+45 00 00 00 00</b:Telephone>
            <b:Mobile>+45 00 00 00 00</b:Mobile>
            <b:PrivateAddress>Example</b:PrivateAddress>
            <b:PrivateZip>Example</b:PrivateZip>
            <b:PrivateCity>Copenhagen</b:PrivateCity>
            <b:PrivateTelephone>+45 00 00 00 00</b:PrivateTelephone>
            <b:ExternalIdentifier>Example</b:ExternalIdentifier>
            <b:HiredDate>2026-10-01T00:00:00</b:HiredDate>
            <b:TerminationDate>2026-10-01T00:00:00</b:TerminationDate>
            <b:IsHired>false</b:IsHired>
            <b:IsLocked>false</b:IsLocked>
            <b:CostPriceGuid>3f2504e0-4f89-41d3-9a0c-305000000003</b:CostPriceGuid>
            <b:CostPrice>0</b:CostPrice>
            <b:HourlyRateGuid>3f2504e0-4f89-41d3-9a0c-305000000004</b:HourlyRateGuid>
            <b:HourlyRate>0</b:HourlyRate>
            <b:SalaryGroupID>1001</b:SalaryGroupID>
          </b:Employee>
        </a:Return>
        <a:ReturnTypeDescription>Employee</a:ReturnTypeDescription>
        <a:Request>…</a:Request>
        <a:ResponseState>Success</a:ResponseState>
        <a:Messages>
          <a:APIMessage>
            <a:Message>Duration of call was 0,0421337 sec.</a:Message>
            <a:Severity>Message</a:Severity>
            <a:ErrorCode>0</a:ErrorCode>
          </a:APIMessage>
        </a:Messages>
        <a:ErrorCode>0</a:ErrorCode>
        <a:IsReturnPaged>true</a:IsReturnPaged>
        <a:TotalPageCount>1</a:TotalPageCount>
      </GetEmployeesPagedResult>
    </GetEmployeesPagedResponse>
  </s:Body>
</s:Envelope>
Illustrative example: built from the service description (WSDL) in the same format as a real response, with made-up values. The Request block is shortened.

Errors

All errors come back with HTTP 200: check ResponseState, ErrorCode and Messages. The errors every operation can return (expired or invalid token, API not enabled, HTTPS required, general errors) are listed once in Responses and errors.

Errors specific to this operation:

ResponseStateErrorCodeMessageWhat it meansWhat to do
Invalid15000An error occurred when trying to retrieve all employees. Try again and if the issue persists contact support.Data-layer failure while loading employees.Retry later; contact support if it persists.