Skip to main content
POST
/
timmi-absences
/
api
/
public
/
services
/
v1.0
/
leaveEntitlementsReplace
Replace entitlements
curl --request POST \
  --url https://{host}/timmi-absences/api/public/services/v1.0/leaveEntitlementsReplace \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: multipart/form-data' \
  --form 'File=<string>' \
  --form 'Description=<string>' \
  --form ReferenceDate=2023-11-07T05:31:56Z \
  --form 'EntryTypes=AutoAccruals,ManualAccruals,Regularizations'
import requests

url = "https://{host}/timmi-absences/api/public/services/v1.0/leaveEntitlementsReplace"

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"File\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ReferenceDate\"\r\n\r\n2023-11-07T05:31:56Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"EntryTypes\"\r\n\r\nAutoAccruals,ManualAccruals,Regularizations\r\n-----011000010111000001101001--"
headers = {
"Authorization": "<authorization>",
"Content-Type": "multipart/form-data"
}

response = requests.post(url, data=payload, headers=headers)

print(response.text)
const form = new FormData();
form.append('File', '<string>');
form.append('Description', '<string>');
form.append('ReferenceDate', '2023-11-07T05:31:56Z');
form.append('EntryTypes', 'AutoAccruals,ManualAccruals,Regularizations');

const options = {method: 'POST', headers: {Authorization: '<authorization>'}};

options.body = form;

fetch('https://{host}/timmi-absences/api/public/services/v1.0/leaveEntitlementsReplace', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://{host}/timmi-absences/api/public/services/v1.0/leaveEntitlementsReplace",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"File\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ReferenceDate\"\r\n\r\n2023-11-07T05:31:56Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"EntryTypes\"\r\n\r\nAutoAccruals,ManualAccruals,Regularizations\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: multipart/form-data"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://{host}/timmi-absences/api/public/services/v1.0/leaveEntitlementsReplace"

payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"File\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ReferenceDate\"\r\n\r\n2023-11-07T05:31:56Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"EntryTypes\"\r\n\r\nAutoAccruals,ManualAccruals,Regularizations\r\n-----011000010111000001101001--")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "<authorization>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://{host}/timmi-absences/api/public/services/v1.0/leaveEntitlementsReplace")
.header("Authorization", "<authorization>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"File\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ReferenceDate\"\r\n\r\n2023-11-07T05:31:56Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"EntryTypes\"\r\n\r\nAutoAccruals,ManualAccruals,Regularizations\r\n-----011000010111000001101001--")
.asString();
require 'uri'
require 'net/http'

url = URI("https://{host}/timmi-absences/api/public/services/v1.0/leaveEntitlementsReplace")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"File\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"Description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"ReferenceDate\"\r\n\r\n2023-11-07T05:31:56Z\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"EntryTypes\"\r\n\r\nAutoAccruals,ManualAccruals,Regularizations\r\n-----011000010111000001101001--"

response = http.request(request)
puts response.read_body
{
  "successLinesCount": 0,
  "globalErrors": {
    "columnsFormatNotSupported": "The file must have columns 'login, lastName, firstName' or 'code, employeeNumber, lastName, firstName'."
  },
  "lineErrors": {
    "7": {
      "loginNotFound": "User login not found"
    },
    "8": {
      "duplicatedLine": "Line 8 is identical to line 23"
    },
    "9": {
      "lastLameNotMatchingLogin": "Lastname does not match to the login of this employee",
      "accountNotAvailableForUser": "The user does not have access to the account 6"
    }
  }
}
{
"Status": 401,
"Message": "Unauthorized"
}

Headers

Authorization
string
required

API key. Value must be formatted like so: lucca application={api_key}.

Query Parameters

strict
boolean
default:false

In strict mode, if the import has errors, nothing is imported. Without strict mode, the lines in error are ignored and those in success are imported.

simulate
boolean
default:false

Allows you to simulate the import. In this case, the response indicates the theoretical result of the import without any data being recorded.

Body

multipart/form-data
File
string
Description
string

Description of the entries generated by the import (visible to users in the account details).

ReferenceDate
string<date-time>

Reference date (text mode). Respect the format: yyyy-MM-ddThh: mm: ss

EntryTypes
string
default:AutoAccruals,ManualAccruals,Regularizations

Types of entries to take into account, separated by commas, from the following list: AutoAccruals, ManualAccruals, Regularisations, EntitlementsImport, Seniority, Fractionnement, TimeSavings, Comp

By default: AutoAccruals, ManualAccruals, Regularizations which correspond to the main cases of acquisition (automatic acquisition, manual adjustments, regularisations).

Response

Example response

successLinesCount
integer
globalErrors
object
lineErrors
object