Update calendarPermission

Namespace: microsoft.graph

Update the permissions assigned to an existing sharee or delegate, through the corresponding calendarPermission object for a calendar.


Depending on the type of calendar that the event is in and the permission type (delegated or application) requested, one of the following permissions is required to call this API. To learn more, including how to choose permissions, see Permissions.

Calendar Delegated (work or school account) Delegated (personal Microsoft account) Application
user calendar Calendars.ReadWrite Calendars.ReadWrite Calendars.ReadWrite
group calendar Group.ReadWrite.All Not supported. Not supported.

HTTP request

Update the specified permissions of a user's calendar:

PATCH /users/{id}/calendar/calendarPermissions/{id}

Update the specified permissions of a group calendar:

PATCH /groups/{id}/calendar/calendarPermissions/{id}

Update the specified permissions of the user calendar that contains the identified event:

PATCH /users/{id}/events/{id}/calendar/calendarPermissions/{id}

Request headers

Name Description
Authorization Bearer {token}. Required.
Content-Type application/json. Required.

Request body

In the request body, supply the values for relevant fields that should be updated. Existing properties that are not included in the request body will maintain their previous values or be recalculated based on changes to other property values. For best performance, don't include existing values that haven't changed.

Property Type Description
role calendarRoleType The permission level to change to for the calendar sharee or delegate.


If successful, this method returns a 200 OK response code and an updated calendarPermission object in the response body.



The following example changes the permission level of the sharee, Adele, to write.

PATCH https://graph.microsoft.com/v1.0/users/{id}/calendar/calendarPermissions/RGVmYXVsdA==
Content-type: application/json

  "role": "write"


The following is an example of the response.

Note: The response object shown here might be shortened for readability.

HTTP/1.1 200 OK
Content-type: application/json

    "id": "RGVmYXVsdA==",
    "isRemovable": true,
    "isInsideOrganization": true,
    "role": "write",
    "allowedRoles": [
    "emailAddress": {
        "name": "Adele Vance",
        "address": "AdeleV@contoso.OnMicrosoft.com"