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.

image-20241111-100931.png

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.

URL Structure

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:

Authentication

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.

GET /api/1/calendar

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:

[
    {
        "id": 1959,
        "sources": [
            {
                "id": 5655,
                "calendarId": 1959,
                "emailsEnabled": false,
                "eventType": {
                    "issueRequired": false,
                    "key": "meeting",
                    "name": "Meetings",
                    "projectRequired": false,
                    "systemType": true,
                    "usersRequired": true
                },
                "order": 1,
                "value": "{\"color\":\"#7500ca\",\"projectId\":-1,\"condColors\":[],\"name\":\"Dekki's meetings\",\"concurrence\":\"allow\",\"hideStartTime\":false,\"issueFields\":[{\"id\":\"issuekey\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.project\",\"showEvent\":false,\"showInfo\":true},{\"id\":\"event.summary\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.users\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.reporter\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.description\",\"showEvent\":true,\"showInfo\":true}],\"summaryFromSourceName\":false,\"summaryFromIssueSummary\":false}"
            },
            {
                "id": 5656,
                "calendarId": 1959,
                "emailsEnabled": false,
                "eventType": {
                    "issueRequired": false,
                    "key": "jira",
                    "name": "Jira dates",
                    "projectRequired": false,
                    "systemType": true,
                    "usersRequired": false
                },
                "order": 2,
                "value": "{\"color\":\"#cc6fcc\",\"condColors\":[],\"dateRanges\":[],\"singleDates\":[\"duedate\"],\"summaryFromSourceName\":false,\"projectId\":-1,\"name\":\"Dekki's JD source\",\"issueFields\":[{\"id\":\"duedate\",\"showEvent\":false,\"showInfo\":true},{\"id\":\"issuekey\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"summary\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"issuetype\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"status\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"assignee\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"reporter\",\"showEvent\":false,\"showInfo\":true},{\"id\":\"description\",\"showEvent\":false,\"showInfo\":true}],\"hideStartTime\":false}"
            }
        ],
        "value": "{\"description\":\"\",\"name\":\"Dekki Gedru's first calendar\",\"usersFromEvents\":true}",
        "user": "66625976fc0cc7a600b08977"
    },
    {
        "id": 1995,
        "sources": [
            {
                "id": 5779,
                "calendarId": 1995,
                "emailsEnabled": false,
                "eventType": {
                    "issueRequired": false,
                    "key": "jira",
                    "name": "Jira dates",
                    "projectRequired": false,
                    "systemType": true,
                    "usersRequired": false
                },
                "order": 1,
                "value": "{\"color\":\"#057fff\",\"condColors\":[],\"dateRanges\":[],\"singleDates\":[\"duedate\"],\"summaryFromSourceName\":false,\"projectId\":10336,\"name\":\"Jira dates events\",\"issueFields\":[{\"id\":\"duedate\",\"showEvent\":false,\"showInfo\":true},{\"id\":\"issuekey\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"summary\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"issuetype\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"status\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"assignee\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"reporter\",\"showEvent\":false,\"showInfo\":true},{\"id\":\"description\",\"showEvent\":false,\"showInfo\":true}],\"hideStartTime\":false}"
            },
            {
                "id": 5780,
                "calendarId": 1995,
                "emailsEnabled": false,
                "eventType": {
                    "issueRequired": false,
                    "key": "sprint",
                    "name": "Jira sprints",
                    "projectRequired": false,
                    "systemType": true,
                    "usersRequired": false
                },
                "order": 2,
                "value": "{\"boardId\":132,\"color\":\"#cc6fcc\",\"name\":\"Sprints\",\"projectId\":10336,\"show\":0,\"state\":0,\"hideStartTime\":false}"
            },
            {
                "id": 5781,
                "calendarId": 1995,
                "emailsEnabled": false,
                "eventType": {
                    "issueRequired": false,
                    "key": "version",
                    "name": "Jira versions",
                    "projectRequired": false,
                    "systemType": true,
                    "usersRequired": false
                },
                "order": 3,
                "value": "{\"name\":\"Versions\",\"color\":\"#ff3e05\",\"projectId\":10371,\"show\":0,\"releasedStatus\":0}"
            },
            {
                "id": 5782,
                "calendarId": 1995,
                "emailsEnabled": false,
                "eventType": {
                    "issueRequired": false,
                    "key": "trip",
                    "name": "Business trips",
                    "projectRequired": false,
                    "systemType": true,
                    "usersRequired": true
                },
                "order": 4,
                "value": "{\"color\":\"#40af04\",\"projectId\":0,\"condColors\":[],\"name\":\"Business trips\",\"issuesAsResources\":false,\"concurrence\":\"allow\",\"hideStartTime\":false,\"issueFields\":[{\"id\":\"event.summary\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.users\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.reporter\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.description\",\"showEvent\":true,\"showInfo\":true}],\"summaryFromSourceName\":false,\"summaryFromIssueSummary\":false}"
            }
        ],
        "value": "{\"description\":\"\",\"name\":\"Development\",\"usersFromEvents\":true}",
        "user": "6666d5194d18cbf6772f4"
    }
]

GET /api/1/calendar/{calendarId}

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:

{
    "id": 1959,
    "publicCalendar": false,
    "calendarEditable": false,
    "permCalendarEdit": {
        "groups": [],
        "users": []
    },
    "eventsEditable": false,
    "permEventsEdit": {
        "groups": [],
        "users": []
    },
    "eventReporterEdit": false,
    "sources": [
        {
            "id": 5655,
            "calendarId": 1959,
            "emailsEnabled": false,
            "eventType": {
                "issueRequired": false,
                "key": "meeting",
                "name": "Meetings",
                "projectRequired": false,
                "systemType": true,
                "usersRequired": true
            },
            "order": 1,
            "value": "{\"color\":\"#7500ca\",\"projectId\":-1,\"condColors\":[],\"name\":\"Dekki's meetings\",\"concurrence\":\"allow\",\"hideStartTime\":false,\"issueFields\":[{\"id\":\"issuekey\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.project\",\"showEvent\":false,\"showInfo\":true},{\"id\":\"event.summary\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.users\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.reporter\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.description\",\"showEvent\":true,\"showInfo\":true}],\"summaryFromSourceName\":false,\"summaryFromIssueSummary\":false}"
        },
        {
            "id": 5656,
            "calendarId": 1959,
            "emailsEnabled": false,
            "eventType": {
                "issueRequired": false,
                "key": "jira",
                "name": "Jira dates",
                "projectRequired": false,
                "systemType": true,
                "usersRequired": false
            },
            "order": 2,
            "value": "{\"color\":\"#cc6fcc\",\"condColors\":[],\"dateRanges\":[],\"singleDates\":[\"duedate\"],\"summaryFromSourceName\":false,\"projectId\":-1,\"name\":\"Dekki's JD source\",\"issueFields\":[{\"id\":\"duedate\",\"showEvent\":false,\"showInfo\":true},{\"id\":\"issuekey\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"summary\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"issuetype\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"status\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"assignee\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"reporter\",\"showEvent\":false,\"showInfo\":true},{\"id\":\"description\",\"showEvent\":false,\"showInfo\":true}],\"hideStartTime\":false}"
        }
    ],
    "value": "{\"description\":\"\",\"name\":\"Dekki Gedru's first calendar\",\"usersFromEvents\":true}",
    "user": "534534976fc0cc7a60053444"
}

404 status code is returned for non-existing calendarId or when the calendarId is not associated with the token.

POST /api/1/calendar

Creates a new calendar.

To create a public calendar, please follow the example below.

Request Body:

{
  "publicCalendar": true,
  "calendarEditable": true,
  "eventsEditable": true,
  "value": "{\"name\":\"New public calendar\",\"usersFromEvents\":true}",
  "user": "userID"
}

To create a private calendar or a calendar with permission granted to specific users or groups, please use the following example.

Request Body:

{
  "publicCalendar": false,
  "permCalendarView": {
        "groups": [],
        "users": []
    },
  "calendarEditable": false,
  "permCalendarEdit": {
    "groups": [],
    "users": []
  },
  "eventsEditable": false,
  "permEventsEdit": {
    "groups": [],
    "users": []
  },
  "eventReporterEdit": false,
  "value": "{\"name\":\"New calendar\",\"usersFromEvents\":true}",
  "user": "userID"
}

Response: 200 OK: Returns the newly created calendar object (with calendar id)

PUT /api/1/calendar

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:

{
  "id": "calendarId",
  "publicCalendar": false,
  "permCalendarView": {
        "groups": [],
        "users": []
    },
  "calendarEditable": false,
  "permCalendarEdit": {
    "groups": [],
    "users": []
  },
  "eventsEditable": false,
  "permEventsEdit": {
    "groups": [],
    "users": []
  },
  "eventReporterEdit": false,
  "value": "{\"name\":\"Updated calendar\",\"usersFromEvents\":true}",
  "user": "userId"
}

Response:

DELETE /api/1/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:

GET /api/1/eventypes

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:

POST /api/1/source

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:

{
  "eventTypeId":  <evenTypeId from  the /api/1/eventypes endpoint>,
  "calendarConfigurationId": <calendarId>,
  "emailsEnabled": false,
  "value": "{\"color\":\"#0fff04\",\"projectId\":-1,\"condColors\":[],\"name\":\"New source\",\"concurrence\":\"allow\",\"hideStartTime\":false,\"issueFields\":[{\"id\":\"issuekey\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.project\",\"showEvent\":false,\"showInfo\":true},{\"id\":\"event.summary\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.users\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.reporter\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.description\",\"showEvent\":true,\"showInfo\":true}],\"summaryFromSourceName\":false,\"summaryFromIssueSummary\":false}"
}

PUT /api/1/source

Updates an existing source.

{
  "id": <sourceId>,
  "calendarConfigurationId": <calendarId>,
  "eventTypeId": <eventTypeId>,
  "emailsEnabled": false,
  "value": "{\"color\":\"#0fff04\",\"projectId\":-1,\"condColors\":[],\"name\":\"Updated source\",\"concurrence\":\"allow\",\"hideStartTime\":false,\"issueFields\":[{\"id\":\"issuekey\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.project\",\"showEvent\":false,\"showInfo\":true},{\"id\":\"event.summary\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.users\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.reporter\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.description\",\"showEvent\":true,\"showInfo\":true}],\"summaryFromSourceName\":false,\"summaryFromIssueSummary\":false}"
}

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.

GET /api/1/source/{sourceId}

Returns the source for the given source id.

Successful response brings JSON with a source representation:

See the response sample:

{
    "id": 5655,
    "calendarId": 1959,
    "emailsEnabled": false,
    "eventType": {
        "issueRequired": false,
        "key": "meeting",
        "name": "Meetings",
        "projectRequired": false,
        "systemType": true,
        "usersRequired": true
    },
    "order": 1,
    "value": "{\"color\":\"#7500ca\",\"projectId\":-1,\"condColors\":[],\"name\":\"Dekki's meetings\",\"concurrence\":\"allow\",\"hideStartTime\":false,\"issueFields\":[{\"id\":\"issuekey\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.project\",\"showEvent\":false,\"showInfo\":true},{\"id\":\"event.summary\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.users\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.reporter\",\"showEvent\":true,\"showInfo\":true},{\"id\":\"event.description\",\"showEvent\":true,\"showInfo\":true}],\"summaryFromSourceName\":false,\"summaryFromIssueSummary\":false}"
}

404 status code is returned for non-existing sourceId or when the sourceId belongs to a calendar that is not associated with the token.

DELETE /api/1/source/{id}

Deletes a source by its ID.

Path Parameters:

Deleting a source is possible when the token has the permission to delete the source.

Response:

POST /api/1/event/search

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:

  1. 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:

{
    "maxResults": 2147483647,
    "startAt": 0,
    "total": 16,
    "values": [
        {
            "sourceId": 5655,
            "userKeys": [
                "63c16312eac4f07e3f3c4650"
            ],
            "author": "63c16312eac4f07e3f3c4650",
            "allDayStart": "2023-01-01",
            "allDayEnd": "2023-01-01",
            "created": 1673618588000,
            "summary": "Dekki's 1st January meeting",
            "id": 13473
        },
        {
            "sourceId": 5655,
            "endDate": 1672736400000,
            "startDate": 1672732800000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1673341200000,
            "startDate": 1673337600000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1673622600000,
            "startDate": 1673620800000,
            "userKeys": [
                "63c16312eac4f07e3f3c4650"
            ],
            "author": "63c16312eac4f07e3f3c4650",
            "updateAuthor": "63c16312eac4f07e3f3c4650",
            "created": 1673618378000,
            "summary": "fisrt gedru's meeting",
            "updated": 1673618498000,
            "id": 13471
        },
        {
            "sourceId": 5655,
            "endDate": 1673778600000,
            "startDate": 1673776800000,
            "userKeys": [
                "63c16312eac4f07e3f3c4650"
            ],
            "author": "63c16312eac4f07e3f3c4650",
            "created": 1673618484000,
            "summary": "second dekki's meeting",
            "id": 13472
        },
        {
            "sourceId": 5655,
            "endDate": 1673946000000,
            "startDate": 1673942400000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1674550800000,
            "startDate": 1674547200000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1675155600000,
            "startDate": 1675152000000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1675760400000,
            "startDate": 1675756800000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1676365200000,
            "startDate": 1676361600000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1676970000000,
            "startDate": 1676966400000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1677574800000,
            "startDate": 1677571200000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1678179600000,
            "startDate": 1678176000000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1678784400000,
            "startDate": 1678780800000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1679389200000,
            "startDate": 1679385600000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        },
        {
            "sourceId": 5655,
            "endDate": 1679990400000,
            "startDate": 1679986800000,
            "userKeys": [
                "61eff161cb7c5f006be4b63e",
                "637236628fd2d2d5f12ba8d1",
                "62028c79f5d29a0068fb2036",
                "62028c799493720070b81cf7"
            ],
            "recurrence": "FREQ=WEEKLY;BYDAY=TU",
            "author": "5d333333333cab1017089",
            "updateAuthor": "5d333333333cab1017089",
            "created": 1676383015000,
            "summary": "Tuesday status meeting",
            "updated": 1676383045000,
            "id": 13848
        }
    ]
}

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.

POST /api/1/event

Creates a new event.

To create an all-day event, please see the example below.

Request body:

{
  "event": {
    "summary": "All-day Rest API event",
    "eventTypeConfigId": "sourceId",
    "userKeys": ["account-id"],
    "allDayStart": "2024-09-29",
    "allDayEnd": "2024-09-29"
  },
  "mode": "add"
}

To create an event with the specified start and end times, please use the following example.

Request Body:

{
  "event": {
    "summary": "Timed Rest API event",
    "eventTypeConfigId": "sourceId",
    "userKeys": ["account-id"],
    "startDate": 1728367200000,
    "endDate": 1728369900000
  },
  "mode": "add"
}

Here:

Recurrent events

To create a recurrent event, please provide startDate and endDate to define the range to expand the occurrences.

Request body:

{
  "event": {
    "recurrence": <recurrence rule>, // see specifications  👉️ https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html 
    "eventTypeConfigId": <sourceId>,
    "summary": "Recurrence event",
    "userKeys": [
      "account-id"
    ],
    "allDayStart": "2024-09-02",
    "allDayEnd": "2024-09-02"
  },
  "mode": "add",
  "startDate": "2024-08-26T00:00:00+03:00",
  "endDate": "2024-10-07T00:00:00+03:00"
}

Response:

PUT /api/1/event

Updates an existing event.

{
  "event": {
    "id": <id>,
    "summary": "Update event",
    "eventTypeConfigId": <evenTypedId>,
    "userKeys": [
      account-id
    ],
    "allDayStart": "2024-08-29",
    "allDayEnd": "2024-08-29"
  },
  "mode": "edit"
}

Update a recurrent event

Request body:

{
  "event": {
    "allDayEnd": "2024-09-19",
    "allDayStart": "2024-09-19",
    "eventTypeConfigId": 14817,
    "summary": "Recurrence event",
    "userKeys": [
      "5b0d271581c3df12acf5298e"
    ],
    "parentId": 60707,
    "recurrenceId": "20240904",
     "id": 60709  // Only required for subsequent updates; omit this field when creating the event for the first time
  },
  "mode": "edit",
  "select": "current",
  "startDate": "2024-08-26T00:00:00+03:00",
  "endDate": "2024-10-07T00:00:00+03:00"
}

Response:

DELETE /api/1/event/{id}

Deletes an event by its ID.

Path Parameters:

Response:

DELETE /api/1/event/{id}/recur

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.

Path Parameters

Deletion Scenarios

  1. Delete the Entire Recurrence Chain (ALL)
    If the event is a recurring series, and the recurrence_id is defined in the model:

  2. Delete the Current Event from the Chain (Single Event Deletion)
    If the event has a recurrence_id:

  3. Delete an Occurrence (Add Exception Date to the Main Chain)
    To delete a specific occurrence of the recurring event (without deleting the entire series):

Exemples body:

  1. Delete the Current Event from the Chain (Single Event Deletion)

{
  "event": {
    "eventTypeConfigId":  <sourceId>,
    "recurrenceId":	"20240906",
    "parentId":	<parentId>
  },
  "exdate": "YYYYMMDD",
  "select": "current",
  "startDate": "2024-08-26T00:00:00+03:00",
  "endDate": "2024-10-07T00:00:00+03:00"
}
  1. Delete an Occurrence (Add Exception Date to the Main Chain)

{
  "event": {
    "eventTypeConfigId": <sourceId>
  },
  "select": "current", 
  "exdate": "YYYYMMDD",
  "startDate": "2024-08-26T00:00:00+03:00",
  "endDate": "2024-10-07T00:00:00+03:00"
}
note

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-4727 - Getting issue details... STATUS .

  • to create or edit calendars or sources via the REST API: CJ-4733 - Getting 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.