Returns calendar events with optional filters, reference catalogs and time records.
https://api.doboard.com/{account_id}/calendar_events_get
account_id is the numeric organization identifier.
GET, POST. POST accepts parameters as application/x-www-form-urlencoded.
Requires a valid session_id.
An ADMIN can retrieve all events. Other users receive events assigned to themselves, users sharing their projects, and events with no assigned user. Additional filters apply within that selection.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
session_id |
string | Yes | — | Authenticated session ID. |
event_id |
int | No | Not set | Filter by event ID. |
user_id |
int | No | Not set | Filter by assigned user. |
role_id |
int | No | Not set | Filter by role. |
period_begin |
date/datetime | No | Not set | Beginning of the requested date range. Applied only together with period_end. |
period_end |
date/datetime | No | Not set | End of the requested date range. Applied only together with period_begin. |
start |
int | No | 0 |
Result offset. Send a nonnegative integer. |
length |
int | No | 1000 effective limit |
The implementation always uses 1000, regardless of the supplied value. |
with_roles |
flag | No | Off | Set to 1 to include data.roles. |
with_locations |
flag | No | Off | Set to 1 to include up to 250 locations in data.locations. |
with_hours |
flag | No | Off | Set to 1 to include time records. Requires a supported show_only value. |
show_only |
enum | No | Not set | hours_estimated, hours_worked or hours_avaible. Used with with_hours. |
submitted_begin |
datetime | No | Not set | Lower date boundary for additional time records. |
submitted_end |
datetime | No | Not set | Upper date boundary for additional time records. |
with_notification_stat |
flag | No | Off | Set to 1 to include data.notification_stat for the session user. |
Use Y-m-d or Y-m-d H:i:s for the event range. The range filter selects overlapping events, including open-ended events.
GET https://api.doboard.com/42/calendar_events_get?session_id=YOUR_SESSION_ID&user_id=12&period_begin=2026-11-01&period_end=2026-11-30&with_roles=1&with_locations=1
{
"data": {
"events": [
{
"event_id": 501,
"event_name": "Annual leave",
"event_note": "Approved leave",
"user_id": 12,
"role_id": null,
"period_begin": "2026-11-09",
"period_end": "2026-11-13",
"period_type": "VACATION_DAY",
"location_id": 7,
"calendar_day_type": null,
"shift_duration": null
}
],
"records_total": 20,
"records_filtered": 1,
"operation_status": "SUCCESS"
}
}
Optional catalogs and statistics are added only when requested.
records_total counts all organization events before filters and visibility restrictions.records_filtered counts matching events before applying the offset and limit.events: [].with_hours=1 adds data.hours only when show_only is one of the supported values. The spelling hours_avaible is part of the API.
The additional list:
hour_id descending.submitted_begin and submitted_end for date filtering.hours_worked.Event filters such as user_id, role_id and the event date range do not filter this additional list. Event pagination does not apply to it.
| HTTP Code | error_no |
Message | Description |
|---|---|---|---|
401 |
401 |
session_id Unknown |
Missing or invalid session. |
200 |
1701 |
period_begin or period_end wrong format, expected format: Y-m-d H:i:s |
Both event-range boundaries were supplied, but at least one could not be parsed. |
submitted_begin or submitted_end values are ignored.event_id match returns an empty list, not a not-found error.