Time registrationsGetEmployeeWork

GetEmployeeWork

Project management service 1.8: Returns one employee's project-time registrations whose work date lies in a range, as full WorkUnit objects with task, project and customer headers.

ServiceProject management 1.8
EndpointPOST https://app{server-number}.timelog.com/{account}/WebServices/ProjectManagement/V1_8/ProjectManagementServiceSecure.svc
SOAPActionGetEmployeeWorkRequest
Content-Typetext/xml; charset=utf-8
AuthenticationA token from GetToken
PermissionsOwn registrations: no privilege needed.
Changes dataNo
Safe to retryYes

How it works

Looks up the employee by initials, checks the caller may see that employee's time, and returns every PROJECT-time registration whose work date is >= startDate and <= endDate. Each item is a WorkUnit with GUID, task ID, allocation GUID, duration, billable duration, comment, additional text, an IsEditable flag and Details. Dates: compared with the registration's date, so an endDate at 00:00 includes that day, but a startDate with a time of day after 00:00 EXCLUDES its own day. WorkUnit.StartDateTime comes back as the work date at 00:00 and EndDateTime as date + duration - not the stored start / end times. The list is not ordered and not paged.

Parameters

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

initialsstring
Required

Initials of the employee. Empty -> Invalid 10002; unknown -> Invalid 30015.

startDatedateTime
Required

First work date. Send it at 00:00 - a later time of day excludes that day.

endDatedateTime
Required

Last work date.

tokenSecurityToken
Required

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

Request

POST /{account}/WebServices/ProjectManagement/V1_8/ProjectManagementServiceSecure.svc HTTP/1.1
Host: app{server-number}.timelog.com
Content-Type: text/xml; charset=utf-8
SOAPAction: "GetEmployeeWorkRequest"

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:pm="http://www.timelog.com/api/tlp/v1_8"
                  xmlns:tok="http://www.timelog.com/api/tlp/v1_3">
  <soapenv:Body>
    <pm:GetEmployeeWork>
      <pm:initials>{initials}</pm:initials>
      <pm:startDate>{startDate}</pm:startDate>
      <pm:endDate>{endDate}</pm:endDate>
      <pm:token>
        <tok:Initials>{Initials from GetToken}</tok:Initials>
        <tok:Expires>{Expires from GetToken, unchanged}</tok:Expires>
        <tok:Hash>{Hash from GetToken}</tok:Hash>
      </pm:token>
    </pm:GetEmployeeWork>
  </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.

ReturnWorkUnit[]

Response<WorkUnit>: every project-time registration of the employee in the range; 'Successfully called' message. ResponseState Success, empty Return.

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>
    <GetEmployeeWorkResponse xmlns="http://www.timelog.com/api/tlp/v1_8">
      <GetEmployeeWorkResult xmlns:a="http://api.timelog.com"
                             xmlns:b="http://www.timelog.com/api/tlp/v1_7"
                             xmlns:c="http://api.timelog.com/services/crm/1_2"
                             xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <a:Return>
          <b:WorkUnit>
            <b:GUID>3f2504e0-4f89-41d3-9a0c-305000000001</b:GUID>
            <b:AllocationGUID>3f2504e0-4f89-41d3-9a0c-305000000002</b:AllocationGUID>
            <b:TaskID>1001</b:TaskID>
            <b:EmployeeInitials>Example</b:EmployeeInitials>
            <b:Duration>Example</b:Duration>
            <b:StartDateTime>2026-10-01T00:00:00</b:StartDateTime>
            <b:EndDateTime>2026-10-01T00:00:00</b:EndDateTime>
            <b:Description>Example</b:Description>
            <b:TimeStamp>AAAAAAAAAAA=</b:TimeStamp>
            <b:IsEditable>false</b:IsEditable>
            <b:AdditionalText>Example</b:AdditionalText>
            <b:IsMeeting>false</b:IsMeeting>
            <b:BillableDuration>Example</b:BillableDuration>
            <b:Details>
              <b:TaskHeader>
                <b:ID>1001</b:ID>
                <b:Name>Example </b:Name>
                <b:No>1001</b:No>
                <b:IsActive>true</b:IsActive>
                <b:WBS>Example</b:WBS>
                <b:FullName>Example full</b:FullName>
                <b:ExternalKey>Example</b:ExternalKey>
              </b:TaskHeader>
              <b:ProjectHeader>
                <b:ID>1001</b:ID>
                <b:ProjectGUID>3f2504e0-4f89-41d3-9a0c-305000000003</b:ProjectGUID>
                <b:Name>Example </b:Name>
                <b:No>1001</b:No>
                <b:IsActive>true</b:IsActive>
                <b:IsGeneralProject>false</b:IsGeneralProject>
                <b:StartDate>2026-10-01T00:00:00</b:StartDate>
                <b:EndDate>2026-10-01T00:00:00</b:EndDate>
                <b:MainContractID>1001</b:MainContractID>
              </b:ProjectHeader>
              <b:CustomerHeader>
                <c:ID>1001</c:ID>
                <c:Name>Example </c:Name>
                <c:No>1001</c:No>
                <c:GUID>3f2504e0-4f89-41d3-9a0c-305000000004</c:GUID>
              </b:CustomerHeader>
            </b:Details>
          </b:WorkUnit>
        </a:Return>
        <a:ReturnTypeDescription>WorkUnit</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>false</a:IsReturnPaged>
        <a:TotalPageCount>0</a:TotalPageCount>
      </GetEmployeeWorkResult>
    </GetEmployeeWorkResponse>
  </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
Invalid10002{field}, was null or emptyinitials empty: 'Initials, was null or empty'.Send the named value.
Invalid30015Unknown employee Initials: '{initials}'.No employee has these initials.—
Invalid20012User: {initials}, has Insufficient Access. Missing privilege was: {role}——
Invalid40004V1_{n} is deprecated. Please upgrade to V1_{m} or later.Nothing is read or written and the token is NOT checked.Call the same operation on the current version.