GetAllSalaryCodes
Salary service 1.1: Returns every salary code of the account with its salary-account posting rules.
| Service | Salary 1.1 |
| Endpoint | POST https://app{server-number}.timelog.com/{account}/WebServices/Salary/V1_1/SalaryServiceSecure.svc |
| SOAPAction | http://www.timelog.com/api/tlp/v1_1/SalaryService/GetAllSalaryCodes |
| Content-Type | text/xml; charset=utf-8 |
| Authentication | A token from GetToken |
| Changes data | No |
| Safe to retry | Yes |
How it works
The account's salary codes: the codes that time is posted under on the salary accounts - the system codes for normal working time and project time and the account's supplement / paid-out codes - with code, name, salary account, posting factor and sign, time-tracking format and specification type. The salaryCodeStatus parameter is IGNORED on every call returns active AND inactive codes - filter on IsActive yourself. Configuration only: factors are multipliers, not money; no employee data.
Parameters
Each parameter has one label: Required, Conditional (required depending on other values) or Optional. Send them in the order shown.
Meant to select active, inactive or all codes. IGNORED on V1_1 - every value returns all codes. Send 'All' so the request says what the response does. Allowed values: All, Active, Inactive.
The token from GetToken: Initials, Expires and Hash, sent back unchanged.
Request
POST /{account}/WebServices/Salary/V1_1/SalaryServiceSecure.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_1/SalaryService/GetAllSalaryCodes"
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:salary="http://www.timelog.com/api/tlp/v1_1"
xmlns:tok="http://www.timelog.com/api/tlp/v1_3">
<soapenv:Body>
<salary:GetAllSalaryCodes>
<salary:salaryCodeStatus>{salaryCodeStatus: All | Active | Inactive}</salary:salaryCodeStatus>
<salary:token>
<tok:Initials>{Initials from GetToken}</tok:Initials>
<tok:Expires>{Expires from GetToken, unchanged}</tok:Expires>
<tok:Hash>{Hash from GetToken}</tok:Hash>
</salary:token>
</salary:GetAllSalaryCodes>
</soapenv:Body>
</soapenv:Envelope>
curl -X POST "https://app{server-number}.timelog.com/{account}/WebServices/Salary/V1_1/SalaryServiceSecure.svc" \
-H "Content-Type: text/xml; charset=utf-8" \
-H 'SOAPAction: "http://www.timelog.com/api/tlp/v1_1/SalaryService/GetAllSalaryCodes"' \
--data-binary @request.xml
import requests
URL = "https://app{server-number}.timelog.com/{account}/WebServices/Salary/V1_1/SalaryServiceSecure.svc"
SOAP_ACTION = '"http://www.timelog.com/api/tlp/v1_1/SalaryService/GetAllSalaryCodes"'
envelope = """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:salary="http://www.timelog.com/api/tlp/v1_1"
xmlns:tok="http://www.timelog.com/api/tlp/v1_3">
<soapenv:Body>
<salary:GetAllSalaryCodes>
<salary:salaryCodeStatus>{salaryCodeStatus: All | Active | Inactive}</salary:salaryCodeStatus>
<salary:token>
<tok:Initials>{Initials from GetToken}</tok:Initials>
<tok:Expires>{Expires from GetToken, unchanged}</tok:Expires>
<tok:Hash>{Hash from GetToken}</tok:Hash>
</salary:token>
</salary:GetAllSalaryCodes>
</soapenv:Body>
</soapenv:Envelope>"""
response = requests.post(
URL,
data=envelope.encode("utf-8"),
headers={"Content-Type": "text/xml; charset=utf-8", "SOAPAction": SOAP_ACTION},
timeout=60,
)
result = parse_result(response) # see "Responses and errors"
{…} placeholder with your own value.Response
The call returns the standard response envelope. Check ResponseState first: a failed call still returns HTTP 200.
Success, Invalid or Error.
0 on success, otherwise the error code. See Errors.
Response<Salary>: every salary code, unpaged. No 'Successfully called' message is added; ResponseState Success. ResponseState Success with an empty Return when the account has no salary codes.
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>
<GetAllSalaryCodesResponse xmlns="http://www.timelog.com/api/tlp/v1_1">
<GetAllSalaryCodesResult xmlns:a="http://api.timelog.com"
xmlns:b="http://api.timelog.com/services/salary/1_1"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Return>
<b:Salary>
<b:Code>Example</b:Code>
<b:Name>Example </b:Name>
<b:Description>Example</b:Description>
<b:SalaryCodeSystemType>NormalWorkingTime</b:SalaryCodeSystemType>
<b:SalaryAccountFactor>0</b:SalaryAccountFactor>
<b:FlexPositiveFactor>0</b:FlexPositiveFactor>
<b:SalaryAccountFactorEffect>Substract</b:SalaryAccountFactorEffect>
<b:IsActive>true</b:IsActive>
<b:SalaryCodeID>1001</b:SalaryCodeID>
<b:IsSystemSalaryCode>false</b:IsSystemSalaryCode>
<b:SalaryCodeGuid>3f2504e0-4f89-41d3-9a0c-305000000001</b:SalaryCodeGuid>
<b:SalaryAccountID>1001</b:SalaryAccountID>
<b:TimeTrackingFormat>Hours</b:TimeTrackingFormat>
<b:SalarySpecificationType>SalaryTime</b:SalarySpecificationType>
</b:Salary>
</a:Return>
<a:ReturnTypeDescription>Salary</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>
</GetAllSalaryCodesResult>
</GetAllSalaryCodesResponse>
</s:Body>
</s:Envelope>
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:
| ResponseState | ErrorCode | Message | What it means | What to do |
|---|---|---|---|---|
| Invalid | 40004 | V1_{n} is deprecated. Please upgrade to V1_{m} or later. | Please upgrade to V1_1 or later.'). | Call the same operation on the current version. |