google-apigoogle-calendar-apigoogle-admin-sdkgoogle-api-python-client

Why does it turn into an unavailable room when I create a google resource calendar with its API?


I'm going to create a google resource calendar room via its API (i.e. https://admin.googleapis.com/admin/directory/v1/customer/my_customer/resources/calendars). But the problem is, when I create one, it turns into an unavailable (crossed out) room within google calendar rooms and I couldn't find any attribute to make it available!

Here's the body request/response:

{
  "kind": "admin#directory#resources#calendars#CalendarResource",
  "etags": "\"CTyc505ppdmJR2motHVsU17kzItOkPo5vYViqlSF0rU/FB0b765ZgWIpTBaxn5YQIwZWWNM\"",
  "resourceId": "9f698cdc-84f9-4688-95a7-c2207b4fa7ae",
  "resourceName": "StackOverflow Test",
  "generatedResourceName": "Orangery Hildesheim Nordstadt-EG-StackOverflow Test (3)",
  "resourceEmail": "c_1881d77mmcaqsihgi426fseae6vnc@resource.calendar.google.com",
  "capacity": 3,
  "buildingId": "Orangery-Hildesheim-Nordstadt",
  "floorName": "EG",
  "resourceCategory": "CONFERENCE_ROOM"
}

Here's the output on google calendar:

enter image description here


Solution

  • After two months finally I found a solution!

    In fact, the main problem is related to the lack of permission for those created resources for other users in the organization. To tackle this problem I used another google API named ACL (Access Control Level) ref, to set a privilege for other users. Basically, a google resource actually is a google resource calendar, so you can use ACL API to access that calendar. Moreover, the parameter to reach that calendar is resourceEmail as the unique ID of the respective resource calendar.

    Here's the thing I did to make unavailable resources to be available (bookable):

    {
        "scope": {
            "type": "domain",
            "value": "orangery.io"  # if you selected type as `domain` you should write your domain name here.
        },
        "role": "writer"
    }
    

    [NOTE]:

    With this procedure, you would need to the https://www.googleapis.com/auth/calendar authorization scope as well.