6
votes

How to get/add/update Google Calendar Events using batch request through V3 REST API? I've tried and but not works. According to the docs (https://developers.google.com/google-apps/calendar/batch) it should be possible to send a batch request by posting a multipart/mixed content type message to the API. An example of a working HTTP POST would be great.

Thanks, Riyaz

3

3 Answers

1
votes

The following batch request, gets the eventId1, updates the eventId2 and creates a new event under calender that is identified with calendarId.

POST /batch HTTP/1.1
Authorization: /*Auth token*/
Host: host
Content-Type: multipart/mixed; boundary=batch_foobarbaz
Content-Length: total_content_length

--batch_foobarbaz
Content-Type: application/http
Content-ID: <item1:[email protected]>

GET /calendar/v3/calendars/calendarId/events/eventId1

--batch_foobarbaz
Content-Type: application/http
Content-ID: <item2:[email protected]>

PUT /calendar/v3/calendars/calendarId/events/eventId2
Content-Type: application/json
Content-Length: part_content_length

{{ body }}

--batch_foobarbaz
Content-Type: application/http
Content-ID: <item3:[email protected]>

POST /calendar/v3/calendars/calendarId/events
Content-Type: application/json
Content-Length: part_content_length

{{ body }}

--batch_foobarbaz--
1
votes

I found that the outer URL must be "https://www.googleapis.com/batch/calendar/v3/" and the boundary url must be "/calendar/v3/calendars/{calendarID}/events"

The full HTTP request looks like:

POST /batch/calendar/v3 HTTP/1.1
Authorization: /*Auth token*/
Host: host
Content-Type: multipart/mixed; boundary=batch_foobarbaz
Content-Length: total_content_length

--batch_foobarbaz
Content-ID: 1

GET /calendar/v3/calendars/{calendarID1}/events

--batch_foobarbaz
Content-ID: 2

GET /calendar/v3/calendars/{calendarID2}/events

--batch_foobarbaz--
0
votes

The endpoint is

https://www.googleapis.com/batch

That works for me when I do Calendar batch requests. One problem I had was with my last boundary token I didn't have the -- after it. So each token starts with -- and the last one has -- at the end. As @Burcu Dogan's example shows.