Headers
API key. Value must be formatted like so: lucca application={api_key}.
Body
Create a single of multiple time-entry (toggle body type).
- object
- object[]
Reference to the time-entry owner.
1
The timeEntry start date and time. Please do NOT send any offset/timezone information ("Z", "+01:00", etc...).
Duration of the time-entry in the "c" format of a C# timespan In other words : d.hh:mm:ss. Max: "1.00:00:00" (ie 24 hours).
Unit in which the time-entry has been entered.
- 0: Days (eg "1/2 day")
- 1: Hours (eg "8h15min")
- 2: Time (eg "23:45:00")
Attribute used to identify last modification source :
- 0: Automatic fallback on theoretical time-entries from workcycles.
- 1: Entered with Lucca Timesheet quick-fill tools.
- 2: Manually created or edited (default).
- 3: Imported from external sources. Can be read-only for the user depending on Timesheet configuration.
- 4: Entered with Lucca Timesheet clock-in clock-out tool.
Represent the activities that time-entry should be associated with. When not in activity mode, send an empty array, or do not serialize this property.
A comment to add additional information about the given time-entry. It will be visible on Lucca Timesheet user interface.
Optional reference of a configured Time Type. To use only if the timesheet is set up to use Time Types. Null otherwise.
1
Response
OK
time-entries are the working time sequences spent by a user on any given day.
time-entries come in different units and submission modes that should match the timesheet configuration of a given owner on a given day.
About units & duration
Lucca Timesheet supports up to 3 different units when it comes to entering time-entries. These are:
0: DaysIn this case, the user does not enter the exact hours he/she started working, but rather the total duration spent as a fraction of a day. For example: "John worked half a day on Monday".1: HoursIn this case, the user still does not enter the exact hours, but only the duration spent in hours. For example: "John worked 7h30min yesterday".2: TimeIn this unit, the user has to enter the actual time he/she started working, as well as the end time. For example: "John started working at 08:00 for 3 hours, thus ending at 11:00".
enum TimeEntryUnit:
{
Days = 0,
Hours = 1,
Time = 2
}Whichever the unit, the time-entry is mainly determined by three properties:
(int) ownerId: The user it belongs to.(date-time) startsAt: The date and time when the user started working. InDaysandHoursunits, the time part can only be00:00:00for "morning" (AM) or12:00:00for the "afternoon" (PM).(duration) duration: The total time spent by the user from the time he/she started. In all units, this property is serialized as a string compliant with the Timespan formating:d.hh:mm:sswheredis the number of days (can be omitted if equal to zero which is in most cases),hhthe number of hours,mmthe number of minutes, andssthe number of seconds.
Some examples :
// TIME UNIT
// Case: "John (id: 416) worked between 09:45 and 12:15 on January, 1st 2021."
var timeEntry = {
"ownerId": 416,
"startsAt": "2021-01-01 09:45:00",
"duration: "02:30:00",
"unit": 2
};
// HOURS UNIT
// Case: "John (id: 416) spent 4h45min working on January, 1st 2021 in the morning"
var timeEntry = {
"ownerId": 416,
"startsAt": "2021-01-01 00:00:00",
"duration: "04:45:00",
"unit": 1
}
// DAYS UNIT
// Case: "John (id: 416) worked on the afternoon of January, 1st 2021"
var timeEntry = {
"ownerId": 416,
"startsAt": "2021-01-01 12:00:00",
"duration: "12:00:00",
"unit": 0
}About submission modes
There are 2 submission modes in Lucca Timesheet:
- Attendance: the user is expected to enter the sequences of work without much detail.
- Activities: the user is expected to enter the time spent on each task / project / whatever.
Therefore, time-entries in activities mode have a supplementary property: the set of task / project / cost center / ... the user worked on. These analytical items are called AxisSections. More info here.
The time-entry is NOT determined by the axisSection[] it is associated with as a user can change the axisSection[].
{
"ownerId": 416,
"startsAt": "2021-01-01 00:00:00",
"duration: "04:45:00",
"unit": 1,
"axisSections": [
{
"name": "R&D",
"axis": {
"name": "Cost centers"
}
},
{
"name": "My awesome project",
"axis": {
"name": "Projects"
}
},
{
"name": "Testing",
"axis": {
"name": "Tasks"
}
}
]
}About time types
Each time-entry can reference a time type via its timeTypeId property.
Time types are a configured working time classification. It is generally used as a way of discriminating different types of working hours regarding compensation:
- Attendance
- Travels
- etc...
Time types can only be used on users that belong to a specific regulation (ie time and attendance policy) mode: timeTrackingMode: typed. Whenever it is not the case, the timeTypeId property should be left null.
Validation rules
Locked timeentries after timesheet submission
A time-entry cannot be modified if its startsAt date belongs to an already submitted or approved timesheet.
StartsAt and timezones
The startsAt date-time property must be considered a floating date-time. As such, no UTC offset should be sent when creating or editing a time-entry.
Max duration
A time-entry cannot have a duration longer than 24h00 (ie one full day).
Cut at midnight
A time-entry cannot overlap 2 different days (example startsAt = 18:00:00 and duration = 10:00:00). It should be two distinct time-entries cut at 00:00:00.
Mandatory axisSection on activity timesheets
A time-entry must have axisSection if the corresponding timesheet is in activity mode, and vice-versa.
Inactive axisSection
A time-entry cannot be modified if one of its axisSection is no longer active (active=false).
Incompatible axisSections
A time-entry cannot have nested axisSections that does not meet a correct parent-child tree structure.
Fields
- The time-entry resource
- Option 2
{
"id": 552586,
"ownerId": 90,
"owner": {
"id": 90,
"name": "Hélène Girard",
"url": "https://example.ilucca.net/api/v3/timesheetusers/90"
},
"unit": 2,
"startsAt": "2024-04-22T09:30:00",
"duration": "03:45:00",
"endsAt": "2024-04-22T13:15:00",
"authorId": 90,
"createdAt": "2024-07-04T11:59:51.09",
"modifierId": 90,
"modifiedAt": "2024-07-04T17:00:54.4",
"archivedAt": null,
"creationSource": 2,
"layer": 0,
"axisSections": [
{
"id": 41,
"name": "Conception",
"url": "https://example.ilucca.net/api/v3/axissections/41"
},
{
"id": 127,
"name": "Animal Logic",
"url": "https://example.ilucca.net/api/v3/axissections/127"
},
{
"id": 346,
"name": "Projet Rose : KPI - tableau de bord",
"url": "https://example.ilucca.net/api/v3/axissections/346"
},
{
"id": 347,
"name": "Art Direction",
"url": "https://example.ilucca.net/api/v3/axissections/347"
}
],
"comment": {
"id": 59,
"name": "This is a comment",
"url": "https://example.ilucca.net/api/v3/timeentrycomments/59"
},
"timeTypeId": null,
"timesheetId": 10967,
"timesheet": {
"id": 10967,
"name": "90 - avril 2024 - Submitted",
"url": "https://example.ilucca.net/api/v3/timmitimesheets/10967"
}
}