You can use this REST API to develop integrations between Company Calendar for Jira and other applications or systems. This page documents the available REST resources along with expected HTTP responses and sample requests. |
To use REST API, an admin has to generate a token tied either to specific calendars or all calendars. It’s recommended to assign minimum calendars per token and to create "All Calendars" tokens only when it’s needed.
![]() |
Introduced in the app version 8.1, users are able to create, edit and delete calendars and custom event sources via REST API. The editing and deletion of calendars and sources can be managed on the token level. |
![]() |
Please note that it is important to use a token based on the “All” calendars options should you wish to add new calendars via REST API. |
To use REST API, your application will make an HTTP request and parse the response.
Since the Cloud version of the app is hosted in the Cloud, while the Server and Data Center versions reside on the same server as Jira, there are different URLs for REST API.
For Jira Cloud REST API URIs start with:
https://ccj.brizoit.com/ccj/rest/brizo-calendar
For Jira Server REST API URIs start with your Jira URL followed by /rest/brizo-calendar
JIRA-SERVER-URL/rest/brizo-calendar
Jira URL can be copied from the browser or checked in Administration -> System -> General configuration, Base URL setting:
Requests to the REST points should be authenticated by Bearer authentication (also known as token authentication). To do so, the clients must send the token in the Authorization header when making requests:
Authorization: Bearer <token>
When no token or wrong token is passed all REST resources return 401 error code.
Returns the list of calendars tied for the passed token.
Successful response brings JSON with calendars associated with the passed token:
See the response sample:
|
Returns the calendar for the given calendar id.
In addition to properties returned by GET /api/1/calendar
, this method brings permissions related properties.
Successful response brings JSON with a calendar:
See the response sample:
|
404 status code
is returned for non-existing calendarId or when the calendarId is not associated with the token.
Creates a new calendar.
To create a public calendar, please follow the example below.
Request Body:
|
To create a private calendar or a calendar with permission granted to specific users or groups, please use the following example.
Request Body:
|
Response: 200 OK: Returns the newly created calendar object (with calendar id)
Updates an existing calendar.
Important: It is necessary to provide the complete value JSON object when updating resources. If any properties are omitted in the update request, they will be overwritten or lost. To retain all existing properties, ensure that you include them in the request body during the update. |
Request body:
|
Response:
200 OK: Calendar updated successfully. Returns the updated calendar object
400 Bad Request: Missing calendar ID.
Deletes a calendar by its ID.
Deleting a calendar is possible when the token has the permission to delete the calendar. |
Path Parameters:
id (Long): The ID of the calendar to delete.
Response:
200 OK: Calendar deleted successfully. Returns the deleted calendar object.
403 Forbidden: Delete operation not allowed.
Retrieves all available event types, including predefined ones like vacation, sickness, trip, and meeting, along with any custom event types defined by the user.
Response:
200 OK: Returns a list of event types. The list includes both predefined types (e.g., vacation, sickness, trip, meeting) and custom types defined by the user.
Creates a new source linked to a calendar.
For the POST /api/1/source endpoint, note that the eventTypeId should be obtained from the /api/1/eventypes endpoint. |
Request Body:
|
Updates an existing source.
|
Important: It is necessary to provide the complete value JSON object when updating resources. If any properties are omitted in the update request, they will be overwritten or lost. To retain all existing properties, ensure that you include them in the request body during the update. |
Returns the source for the given source id.
Successful response brings JSON with a source representation:
See the response sample:
|
404 status code
is returned for non-existing sourceId or when the sourceId belongs to a calendar that is not associated with the token.
Deletes a source by its ID.
Path Parameters:
Deletes a source by its ID (Long): The ID of the source to delete.
Deleting a source is possible when the token has the permission to delete the source. |
Response:
200 OK: Source deleted successfully. Returns the deleted source object.
403 Forbidden
Searches for events.
Only events from sources with type key vacation, sickness, trip, meeting or custom are returned.
JSON body parameters:
startDate long Unix milliseconds timestamp. Mutually exclusive with startDateIso and endDateIso. endDate long Unix milliseconds timestamp. Mutually exclusive with startDateIso and endDateIso. startDateIso string ISO 8601 date and time. Mutually exclusive with startDate and endDate. endDateIso string Unix milliseconds timestamp. Mutually exclusive with startDateIso and endDateIso. calendarId long Id of the calendar to fetch events from. Mutually exclusive with sourceId. sourceId long Id of the source to fetch events from. Mutually exclusive with calendarId. |
Interval between start and end dates should be less than 92 days (i.e. a quarter).
JSON body parameters samples:
Period passed as Unix milliseconds and calendarId:
{ "startDate": 1672531200000, "endDate": 1680307200000, "calendarId": 1959 } |
Here:
- startDate corresponds to Sun Jan 01 2023 00:00:00 GMT
- endDate corresponds to Sat Apr 01 2023 00:00:00 GMT
2. Period passed as ISO dates and sourceId:
{ "startDateIso": "2023-01-01T00:00:00-05:00", "endDateIso": "2023-04-01T00:00:00-04:00", "sourceId": 5655 } |
Here:
- startDateIso corresponds to Sun Jan 01 2023 00:00:00 EST
- endDateIso corresponds to Sat Apr 01 2023 00:00:00 DST
Successful response brings JSON with matching events:
As for now, values are non-paginated and all matching events are returned. We might introduce the pagination should we see the need.
See the response sample:
|
400 status code
is returned when parameters validation fails. The status is accompanied with the error messages. E.g.:
404 status code
is returned for non-existing calendarId or sourceId or when the calendarId or sourceId correspond to a calendar that is not associated with the token.
Creates a new event.
To create an all-day event, please see the example below.
Request body:
|
To create an event with the specified start and end times, please use the following example.
Request Body:
|
Here:
startDate corresponds to Tue Oct 08 2024 06:00:00 GMT
endDate corresponds to Tue Oct 08 2024 06:45:00 GMT
To create a recurrent event, please provide startDate and endDate to define the range to expand the occurrences.
Request body:
|
Response:
200 OK: Event successfully created. Returns the created event object.
Updates an existing event.
|
Update a recurrent event
Request body:
|
Response:
200 OK: Event updated successfully.
400 Bad Request: Missing event ID.
Deletes an event by its ID.
Path Parameters:
id (Long): The ID of the event to delete.
Response:
200 OK: Event deleted successfully.
This endpoint handles deletion operations for recurring events. Depending on the request body, you can delete the entire recurrence chain, a single occurrence, or remove a specific instance from a recurring series.
id (Long): The ID of the recurring event or the specific occurrence to be deleted.
Delete the Entire Recurrence Chain (ALL)
If the event is a recurring series, and the recurrence_id is defined in the model:
The parentId
in the model is used to indicate the main recurring event.
The entire recurrence chain, including all occurrences, will be deleted.
Delete the Current Event from the Chain (Single Event Deletion)
If the event has a recurrence_id
:
The id
in the URL points to a single event within the recurrence chain.
The parentId
in the model refers to the main event, which is the parent of the recurrence chain.
Only the specified event will be deleted, while the rest of the chain remains intact.
Delete an Occurrence (Add Exception Date to the Main Chain)
To delete a specific occurrence of the recurring event (without deleting the entire series):
The model should have the same parentId
as the main event, while the id
is used in the request URL to specify the occurrence.
The parentId
in the model will be overridden by the provided id
, ensuring that only the specified occurrence is removed.
Mode: "delete"
Select: "current"
Exdate: The date (YYYY-MM-DD
) to exclude from the recurring event.
Exemples body:
Delete the Current Event from the Chain (Single Event Deletion)
|
Delete an Occurrence (Add Exception Date to the Main Chain)
|
We have tickets to implement following functionality:
to create or edit events via the REST API:.
to create or edit calendars or sources via the REST API: .
If you are interested in these features, please contact us through the support portal https://brizoit.atlassian.net/servicedesk/customer/portal/3.
We have tickets to implement following functionality:
to create or edit events via the REST API: - CJ-4727Getting issue details... STATUS .
to create or edit calendars or sources via the REST API: - CJ-4733Getting issue details... STATUS .
If you are interested in these features, please contact us through the support portal https://brizoit.atlassian.net/servicedesk/customer/portal/3.