EmployeesUpdateEmployee

UpdateEmployee

Organisation service 1.9: Changes an employee's user name, initials, names, number, e-mail, title, phones, working-time / calendar / allowance / type and cost-price / hourly-rate references.

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/UpdateEmployee
Content-Typetext/xml; charset=utf-8
AuthenticationA token from GetToken
Changes dataYes
Safe to retryYes

How it works

References are matched BY NAME, as in CreateEmployee: normal working time, holiday calendar, allowance legislation, employee type; the cost price within the employee's legal entity; the hourly rate resolved for the employee's legal entity. The first failing look-up stops the call. Changing the user name changes the LOGIN name. The e-mail is checked for format only - no confirmation is sent to the old or new address. The title is limited to 50 characters. User name / initials must stay unique; a clash with an INACTIVE user is tolerated only when the call leaves both unchanged.

Parameters

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

employeeGuidguid
Required

GUID of the employee.

usernamestring

Optional. Default unchanged. New LOGIN user name. Blank = unchanged. Must be unique among users.

initialsstring

Optional. Default unchanged. New initials. Blank = unchanged. Must be unique among users.

firstnamestring

Optional. Default unchanged. Blank = unchanged.

lastnamestring

Optional. Default unchanged. Blank = unchanged.

employeeNostring

Optional. Default unchanged. Employee number. Blank = unchanged.

emailstring

Optional. Default unchanged. New e-mail - where set-password mails go. Format-checked only; no confirmation. Blank = unchanged.

titlestring

Optional. Default unchanged. Blank = unchanged.

telephonestring

Optional. Default unchanged. Work telephone. Blank = unchanged.

mobilestring

Optional. Default unchanged. Mobile telephone. Blank = unchanged.

normalWorkingTimeNamestring

Optional. Default unchanged. Name of a normal working time. Not found -> 'The normal working week was not found'.

holidayCalendarNamestring

Optional. Default unchanged. Name of a holiday calendar.

allowanceLegislationNamestring

Optional.

employeeTypeNamestring

Optional. Default unchanged. Name of an employee type.

hourlyRateNamestring

Optional. Default unchanged. Name of an hourly rate, resolved for the employee's legal entity.

costPriceNamestring

Optional. Default unchanged. Name of a cost price in the employee's legal entity.

externalIdentifierstring

Optional. Default unchanged. Identifier from your system. Not checked for uniqueness. Blank = unchanged.

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/UpdateEmployee"

<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:UpdateEmployee>
      <org:employeeGuid>{employeeGuid}</org:employeeGuid>
      <org:username>unchanged</org:username>
      <org:initials>unchanged</org:initials>
      <org:firstname>unchanged</org:firstname>
      <org:lastname>unchanged</org:lastname>
      <org:employeeNo>unchanged</org:employeeNo>
      <org:email>unchanged</org:email>
      <org:title>unchanged</org:title>
      <org:telephone>unchanged</org:telephone>
      <org:mobile>unchanged</org:mobile>
      <org:normalWorkingTimeName>unchanged</org:normalWorkingTimeName>
      <org:holidayCalendarName>unchanged</org:holidayCalendarName>
      <org:allowanceLegislationName>{allowanceLegislationName}</org:allowanceLegislationName>
      <org:employeeTypeName>unchanged</org:employeeTypeName>
      <org:hourlyRateName>unchanged</org:hourlyRateName>
      <org:costPriceName>unchanged</org:costPriceName>
      <org:externalIdentifier>unchanged</org:externalIdentifier>
      <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:UpdateEmployee>
  </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.

ReturnEmployeeHeader[]

Response<EmployeeHeader> of the employee after the update and a 'Successfully called' message. Never - failure is an Error envelope with an 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>
    <UpdateEmployeeResponse xmlns="http://www.timelog.com/api/tlp/v1_9">
      <UpdateEmployeeResult 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:EmployeeHeader>
            <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:EmployeeNo>1001</b:EmployeeNo>
            <b:Fullname>Example</b:Fullname>
          </b:EmployeeHeader>
        </a:Return>
        <a:ReturnTypeDescription>EmployeeHeader</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>
      </UpdateEmployeeResult>
    </UpdateEmployeeResponse>
  </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
Error40001Error during call on TimeLog.API, Message 'Object reference not set to an instance of an object.'employeeGuid unknown.Take the GUID from EmployeeHeader.ID. Do not retry.
Error40001Error during call on TimeLog.API, Message 'The {normal working week | holiday calendar | allowance settings | employee type | cost price | hourly rate} was not found' / 'The department is not found'A working time / holiday calendar / allowance / employee type / cost price / hourly rate name was not found.—
Error40001Error during call on TimeLog.API, Message '{The email address is mandatory | No first name was provided | No last name was provided | No initials was provided | No user name was provided}''No user name was provided' - assigning the user name threw.Send the value.
Error40001Error during call on TimeLog.API, Message 'The title exceeds the maximum length of 50 characters'title longer than 50 characters.Shorten the title to 50 characters.
Error40001Error during call on TimeLog.API, Message 'The user violates the Business Rules for users'Save refused: no employee-edit privilege for this employee, user name / initials already used, invalid e-mail, invalid employee number, or a reference rule. V1_9 lists the rule messages instead of the generic text.Check the integration user's employee privileges first; then uniqueness of initials / user name; then the referenced data.
Error40001Error during call on TimeLog.API, Message 'System.Collections.Generic.List`1[TimeLog.TLP.Error.IViolation]'The save returned violations without throwing, and the operation printed the LIST'S TYPE NAME instead of the messages. The caller cannot tell which rule failed.DeactivateEmployee: use a termination date on or after the last registration.
Error———Always send the string parameter, even as an empty string.