6

We use Outlook Batch API to send multiple Outlook REST requests in a single HTTP batch request. In Outlook Batch API, we make 200 requests in the same batch HTTP request and all the concurrent requests succeed. Whereas if we do the same in graph API, only 4 concurrent requests succeed as only 4 concurrent requests are supported in graph APIs (attached request and response).

We have the cases such as 10000 events creating at once(like users can add/remove 10000 items from a single user calendar).

So it would be of great help if the Graph APIs batch limit is set to be same as Outlook API(200 concurrent request).

Sample request:

{
    "requests": [
        {
            "url": "/me/calendars",
            "method": "POST",
            "id": "1",
            "headers": {
                "Content-Type": "application/json"
            },
            "body": {
                "name": "test1s"
            }
        },
        {
            "url": "/me/calendars",
            "method": "POST",
            "id": "2",
            "headers": {
                "Content-Type": "application/json"
            },
            "body": {
                "name": "test2"
            }
        },
        {
            "url": "/me/calendars",
            "method": "POST",
            "id": "3",
            "headers": {
                "Content-Type": "application/json"
            },
            "body": {
                "name": "test3"
            }
        },
        {
            "url": "/me/calendars",
            "method": "POST",
            "id": "4",
            "headers": {
                "Content-Type": "application/json"
            },
            "body": {
                "name": "test4"
            }
        },
        {
            "url": "/me/calendars",
            "method": "POST",
            "id": "5",
            "headers": {
                "Content-Type": "application/json"
            },
            "body": {
                "name": "test5s"
            }
        },
        {
            "url": "/me/calendars",
            "method": "POST",
            "id": "6",
            "headers": {
                "Content-Type": "application/json"
            },
            "body": {
                "name": "test6s"
            }
        },
        {
            "url": "/me/calendars",
            "method": "POST",
            "id": "7",
            "headers": {
                "Content-Type": "application/json"
            },
            "body": {
                "name": "test7s"
            }
        }
    ]
}

Response:

{
    "responses": [
        {
            "id": "6",
            "status": 429,
            "headers": {
                "Retry-After": "1",
                "Cache-Control": "private",
                "Content-Type": "application/json"
            },
            "body": {
                "error": {
                    "code": "ApplicationThrottled",
                    "message": "Application is over its MailboxConcurrency limit.",
                    "innerError": {
                        "date": "2022-08-11T06:21:56",
                        "request-id": "e09afe6b-25d6-4cdc-93f5-0539d6e8b9c6",
                        "client-request-id": "efe22070-473c-28bd-d1bf-ad43bb9f753f"
                    }
                }
            }
        },
        {
            "id": "7",
            "status": 429,
            "headers": {
                "Retry-After": "1",
                "Cache-Control": "private",
                "Content-Type": "application/json"
            },
            "body": {
                "error": {
                    "code": "ApplicationThrottled",
                    "message": "Application is over its MailboxConcurrency limit.",
                    "innerError": {
                        "date": "2022-08-11T06:21:56",
                        "request-id": "e09afe6b-25d6-4cdc-93f5-0539d6e8b9c6",
                        "client-request-id": "efe22070-473c-28bd-d1bf-ad43bb9f753f"
                    }
                }
            }
        },
        {
            "id": "4",
            "status": 429,
            "headers": {
                "Retry-After": "1",
                "Cache-Control": "private",
                "Content-Type": "application/json"
            },
            "body": {
                "error": {
                    "code": "ApplicationThrottled",
                    "message": "Application is over its MailboxConcurrency limit.",
                    "innerError": {
                        "date": "2022-08-11T06:21:56",
                        "request-id": "e09afe6b-25d6-4cdc-93f5-0539d6e8b9c6",
                        "client-request-id": "efe22070-473c-28bd-d1bf-ad43bb9f753f"
                    }
                }
            }
        },
        {
            "id": "5",
            "status": 201,
            "headers": {
                "Location": x"https://outlook.office.com/api/v2.0/Users('xxxx')/Calendars('xxxx')",
                "Cache-Control": "private",
                "OData-Version": "4.0",
                "Content-Type": "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8"
            },
            "body": {
                "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('xxxxx')/calendars/$entity",
                "id": "xxx",
                "name": "test5s",
                "color": "auto",
                "hexColor": "",
                "isDefaultCalendar": false,
                "changeKey": "xxxxx",
                "canShare": true,
                "canViewPrivateItems": true,
                "canEdit": true,
                "allowedOnlineMeetingProviders": [
                    "teamsForBusiness"
                ],
                "defaultOnlineMeetingProvider": "teamsForBusiness",
                "isTallyingResponses": false,
                "isRemovable": true,
                "owner": {
                    "name": "xxxx",
                    "address": "xxxx.onmicrosoft.com"
                }
            }
        },
        {
            "id": "2",
            "status": 201,
            "headers": {
                "Location": "https://outlook.office.com/api/v2.0/Users('xxxx')/Calendars('xxxx')",
                "Cache-Control": "private",
                "OData-Version": "4.0",
                "Content-Type": "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8"
            },
            "body": {
                "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('xx')/calendars/$entity",
                "id": "xxx",
                "name": "test2",
                "color": "auto",
                "hexColor": "",
                "isDefaultCalendar": false,
                "changeKey": "xxxxx",
                "canShare": true,
                "canViewPrivateItems": true,
                "canEdit": true,
                "allowedOnlineMeetingProviders": [
                    "teamsForBusiness"
                ],
                "defaultOnlineMeetingProvider": "teamsForBusiness",
                "isTallyingResponses": false,
                "isRemovable": true,
                "owner": {
                    "name": "xxxx",
                    "address": "xxxxx.onmicrosoft.com"
                }
            }
        },
        {
            "id": "3",
            "status": 201,
            "headers": {
                "Location": "https://outlook.office.com/api/v2.0/Users('xxxx')/Calendars('xxxxx')",
                "Cache-Control": "private",
                "OData-Version": "4.0",
                "Content-Type": "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8"
            },
            "body": {
                "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('xxx')/calendars/$entity",
                "id": "x",
                "name": "test3",
                "color": "auto",
                "hexColor": "",
                "isDefaultCalendar": false,
                "changeKey": "xxxxxx==",
                "canShare": true,
                "canViewPrivateItems": true,
                "canEdit": true,
                "allowedOnlineMeetingProviders": [
                    "teamsForBusiness"
                ],
                "defaultOnlineMeetingProvider": "teamsForBusiness",
                "isTallyingResponses": false,
                "isRemovable": true,
                "owner": {
                    "name": "xxxx",
                    "address": "xxxxxx.onmicrosoft.com"
                }
            }
        },
        {
            "id": "1",
            "status": 201,
            "headers": {
                "Location": "https://outlook.office.com/api/v2.0/Users('xxxx')/Calendars('xxxx')",
                "Cache-Control": "private",
                "OData-Version": "4.0",
                "Content-Type": "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8"
            },
            "body": {
                "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('xxxxx')/calendars/$entity",
                "id": "xxxxxx",
                "name": "test1s",
                "color": "auto",
                "hexColor": "",
                "isDefaultCalendar": false,
                "changeKey": "xxxxxxx",
                "canShare": true,
                "canViewPrivateItems": true,
                "canEdit": true,
                "allowedOnlineMeetingProviders": [
                    "teamsForBusiness"
                ],
                "defaultOnlineMeetingProvider": "teamsForBusiness",
                "isTallyingResponses": false,
                "isRemovable": true,
                "owner": {
                    "name": "xxxx",
                    "address": "xxxxx.onmicrosoft.com"
                }
            }
        }
    ]
}
Karthik
  • 61
  • 1

1 Answers1

0

There is a known issue with Batching as mentioned here: enter image description here

and more in this : enter image description here

For reference, please refer this: https://learn.microsoft.com/en-us/graph/known-issues#json-batching https://learn.microsoft.com/en-us/graph/throttling#throttling-and-batching

Mehtab Siddique
  • 556
  • 1
  • 2
  • 5