Sync employee leave
Use our Time Off API to sync leave status from your HR platform right to your Calven calendars
Overview
The Time Off API exposes a single endpoint that allows customers to post time off dates for their users. The endpoint also allows customers to post notifications of cancelled time off.
The time off endpoint accepts an array of time off event objects. Each object specifies:
-
The time off event type (
scheduled
orcancelled
) -
The time off start and end dates
-
The user email OR the Calven
uid
for the user -
For
scheduled
time off an optional time offtype
can be provided
When the document contains scheduled time off, the user’s plan for the relevant day(s) will be changed to a
- away as long as the date is not in the past. Transactions for scheduled time off in the past are ignored.
When the document contains canceled time off, the user’s plan will be modified according to the cancelled time off date:
-
If the date is in the past, no action is taken
-
If the date is within the booking horizon, the user’s plan is changed according to their week plan
-
If the date is beyond the booking horizon, the user’s plan is deleted. It will be recreated by the horizon booking engine at a later date.
In the case where a user has made a different plan to the week plan and subsequently has approved time off that is cancelled for that day, the day plan will still be reset according to their week plan. ie. Their original plan variation for that day is lost.
Note that the API does not support partial time off days.
API
Authentication
Connections to the integration are authenticated using a bearer token obtained from the https://api.calven.com/v1/auth
endpoint.
API endpoint
Time off data is POSTed to the https://api.calven.com/v1/timeoff
endpoint.
Input documents
The time off event endpoint accepts an array of timeOffEvent
.
The input data takes the following form:
{
"timeOffEvents": [
{
"email": "Mary.Smith@emaildomain.com",
"eventType": "scheduled",
"startDate":"2022-08-08",
"endDate":"2022-08-08"
},
{
"email": "John.Jones@emaildomain.com",
"eventType": "cancelled",
"startDate":"2022-08-08",
"endDate":"2022-08-08"
},
{
"uid": "ABC123HGbghdhdI",
"eventType": "scheduled",
"startDate":"2023-01-01",
"endDate":"2023-01-01",
"timeOffType":"holiday"
},
{
"uid": "ABC123HGbghdhdI",
"eventType": "scheduled",
"startDate":"2023-01-02",
"endDate":"2023-01-23",
}
]
}
Field |
Type |
Description |
---|---|---|
|
Array |
The array of time off events |
|
String |
The user’s email address. This will be used to search for the user in both the Calven |
|
String |
An identifier for this time off event. It must be unique within the set of events POSTed in a given call to the |
|
String |
The user’s Calven UID. One of |
|
String |
Time off event type, either |
|
String |
Start of time off period, date in ISO 8601 format, inclusive. |
|
String |
End of time off period, date in ISO 8601 format, inclusive |
|
String |
Optional time off type - One of |
Responses
The server will respond as follows:
Resonse code |
Meaning |
Body |
---|---|---|
200 |
Input was processed successfully |
Success response document (see below) |
400 |
Bad request - Input document was not valid. e.g. approval status other than scheduled or cancelled, dates were not valid, time off type is invalid |
Error Response document (see below) |
401 |
Authentication data was not provided |
Error Response document (see below) |
403 |
Authentication data was invalid |
Error Response document (see below) |
Success response document
{
"timestamp": "2023-05-15T10:23:45Z",
"results": [
{
"eventId":"71FA8F0D-DBB6-42AC-8618-1865DD476769"
"resultCode": 0,
"message": "OK"
},
{
"eventId":"4A480792-F730-458D-BAC8-65FFE1EAC666"
"resultCode": 1,
"message": "user not found"
}
]
}
Property |
Type |
Description |
---|---|---|
|
String |
Timestamp when the response was generated. |
|
Array |
The results for the time off events that were submitted |
|
String |
The event identifier to which this result corresponds. |
|
number |
The result code for this occupancy event:
|
|
String |
Additional text associated with the |
Error response document
{
"message": "Invalid time off type 'party'"
}
Property |
Type |
Description |
---|---|---|
|
String |
Additional text associated with the error |