Pratik Patil
Pratik Patil

Reputation: 99

Office 365 REST API /$count filter giving wrong data

I'm trying to get count of records for different objects. The response of /$count filtered APIs is inconsistently giving wrong response. I am referring this documentation link for usage instructions.

Request URL: GET https://outlook.office.com/api/v2.0/me/Events/$count

Response: -1

To verify if the above mentioned response is legitimate, I tried to get all events with a skip filter to identify the actual number of records present. After a certain attempts following request URL gave me final count:

Request URL: GET https://outlook.office.com/api/v2.0/me/events/?$skip=159

Response:
{ 
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Events",
"value": [
    {
        "Id": "AAMkADMzYzIxNTBjLWUyMWUtNDgzYi04NTEwLTc5YTkzMWI5MmE4MgBGAAAAAABjOnbtK9ZkTIjwInd5bfYcBwDe_ScfFfAUQaKHRwnzV1lBAAAAAAENAADe_ScfFfAUQaKHRwnzV1lBAACs2ojfAAA=",
        "CreatedDateTime": "2016-11-28T11:09:03.8359488Z",
        "LastModifiedDateTime": "2017-02-21T08:04:48.8262751Z"
    }
]

}

This implies that after skipping 159 records, I've 160th record present in the authenticated account but $count filtered API doesn't give me a valid response.

I tried testing this scenario with two different accounts where I noticed this anomaly for /message API as well. The HTTP GET call to messages/$count gives me 1563 whereas after trying with skip filter I found the total count to be 1396

I want to know if $count returns a legitimate response? If yes then explain this anomaly If no then is there any pattern where we should expect response to inconsistent?

Upvotes: 1

Views: 393

Answers (1)

AidaNow
AidaNow

Reputation: 598

To get a count of the number of events, you need to specify start time and end time. Here is what I use:

https://outlook.office.com/api/v2.0/me/calendarview/$count?startDateTime=2017-05-01T00:00:00Z&endDateTime=2017-05-31T23:59:59Z

If you don't specify the dates, you will get 400 with the following error message:

{"error":{"code":"ErrorInvalidParameter","message":"This request requires a time window specified by the query string parameters StartDateTime and EndDateTime."}}

Upvotes: 1

Related Questions