Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google calendar API 400 error

I'm trying to execute a simple freebusy query on the Google Calendar API. I have my authorization all working fine, can see lists of users' calendars, etc. When I try to submit a free/busy query, I get a 400 error with (as far as I can tell) not details at all about what it doesn't like.

This is true both in my own code and when I use the Google Calendar API "Try It" feature.

Here is my request (created using the Try It widget), and the response: Request

POST https://www.googleapis.com/calendar/v3/freeBusy?key={YOUR_API_KEY}

Content-Type:  application/json
Authorization:  Bearer ya29.AHES6ZTr-2wksEvp0iGPTnHTirTIItib5WwxmSAySq1ghfI98Cz88kA
X-JavaScript-User-Agent:  Google APIs Explorer

{
     "items": [
          {
              "id": "[my calendar id goes here]@group.calendar.google.com"
          }
     ],
     "timeMin": "2012-01-31T09:00:00",
     "timeMax": "2012-01-31T10:00:00",
     "timeZone": "GMT"
}

Response


400 Bad Request

cache-control:  private, max-age=0
content-encoding:  gzip
content-length:  122
content-type:  application/json; charset=UTF-8
date:  Sun, 16 Jun 2013 13:08:32 GMT
expires:  Sun, 16 Jun 2013 13:08:32 GMT
server:  GSE

{
     "error": {
     "errors": [
          {
              "domain": "global",
              "reason": "badRequest",
              "message": "Bad Request"
           }
     ],
    "code": 400,
    "message": "Bad Request"
     }
}

I think it might have something to do with the dateTime objects/formatting? But I don't have any idea what. I'd really appreciate some help; I've been banging my head against this for a week!

like image 786
nilatti Avatar asked Jun 16 '13 13:06

nilatti


2 Answers

Ok, I figured it out and I am leaving the answer for anyone else who is LOSING THEIR MIND over this.

Despite what Google's documentation says about format for datetime in this case, the only format I could get to work was this:

2008-03-07T17:06:02.000Z

so that's YYYY-MM-DDTHH:MM:SS.MMMZ

What is the Z for? I don't know, but it has to be there.

like image 85
nilatti Avatar answered Nov 11 '22 21:11

nilatti


I had the same problem, but I managed to solve it simply by removing the "Z" from DateTime and in TimeZone putting GMT with the time difference:

'dateTime': '2020-10-31T17:00:00.000',
'timeZone': 'GMT-03:00'
like image 44
Jonatas Mendes Avatar answered Nov 11 '22 20:11

Jonatas Mendes