Call History gap in Microsoft Graph

April 17, 2023

No delegated call history API in Microsoft Graph!?

In Microsoft Teams, a user can make and receive calls. Then in the Teams client there is a nice panel that show the call history

Teams Call History Screenshot

The frustrating part is there is no API for developers to get delegated (i.e. on behalf of a user) call history

But wait, you might be thinking, doesn't Microsoft Graph have a communications/callRecords endpoint? Ah yes, I'm glad you asked.

  1. That endpoint does not support delegated permissions. Only Application level CallRecords.Read.All
  2. Furthermore communications/callRecords requires a developer to setup a subscription which subscribes to Changes to all call records in the whole tenant!

If I am looking to develop an app the displays the signed in users call history, using the application level scope, subscribing to ALL call record changes for the tenant, then storing and parsing that data, is a gross violation of Microsoft Graph's principle of least privilege! Not only that, a Fortune 500 company is never going to grant my application that level of permission! In addition, I now have the whole headache of having to store and secure that PII on my servers/database.

Application level permissions are not a replacement for Delegated permissions. Full stop!

So that leaves us right back to square one. There is no API for developers to get delegated call history

I have created a public feedback item requesting this, so please do me a favor and go upvote that! (and tell all your friends 😉)

Until next time! Peace


Profile picture

Written by Ryan Weaver a software developer in the Microsoft Ecosystem LinkedIn | Github | StackOverflow