Is there feature of retrieve group member history (when created or deleted) in microsoft graph api? - microsoft-graph-api

As the title says, I'm curious.
I know that graph api has a function to look up group members, but it seems impossible to track the addition or deletion of members between those requests.
Plus, the exact dateTime that was added or deleted as additional members.
Thanks for your help.

Check the concept of using delta to tracking changes in groups.
Documentation
delta query overview
get incremental changes for groups
group: delta

Related

O365 Graph notifications iCalUId update rollout

This is with reference to Microsoft Graph calendar events – iCalUId Update, And I would like to have an update on whether it has been rolled out to all 365 accounts or Is it underway? If so, please provide the timeline for the same.
Recently I've got a response from Microsoft on this, https://developer.microsoft.com/en-us/office/blogs/deferred-icaluid-update-on-ms-graph/?_cache_bypass=1586319170.
In addition to details on the link, they also mentioned followings:
MSFT has put iCalUid change on hold and doesn't have any plans to change it in the near future,
they are introducing new fields to identify occurrences in a series of master events. These fields will be supplementary to existing properties while iCalUId continue to exist as it is.
I hope that this will be helpful for someone else who's looking within this regard.

Get Change type in delta Events in Microsoft Graph Api

I am migrating from EWS to Microsoft graph and having problem in replacing flow "ExchangeService.syncFolderItems".
ChangeCollection<ItemChange> changedItems = exchangeService.syncFolderItems(calendarFolder.getId(),
FirstClassProperties, null, 512, NormalItems, syncState);
This gives me all the changes since last sync state with change type.
Now I need to replace this with Microsoft graph.
I saw Get delta api in Microsoft graph and also how to call it recursively using stale token. My query is, Get delta api is not returning the change Item type. Could someone suggest me the best way to implement this in Microsoft graph? Maybe the Apis that I need to use for this?
Note:This flow will be called by my service to get changes after fixed interval of time. Also I saw subscriptions ( https://learn.microsoft.com/en-us/graph/api/resources/subscription?view=graph-rest-1.0 )but not sure that could be used in my case as my service will be making a call to get changes for a meeting room after a fixed scheduled interval of time.
I am stuck here. Please help. Thanks in advance.
Deleted events will have a #removed property and only provide the id of the object as denoted here https://learn.microsoft.com/en-us/graph/delta-query-overview#resource-representation-in-the-delta-query-response
Updated objects will only include the updated properties and added objects should include all the data available. It's up to the 3rd party application (your app) to maintain a state on it's side to be able to differentiate between updated and created objects when using Delta queries.
Combining webhooks with Delta to trigger the sync instead of relying on a timer is a good approach to provide an end user experience that feels more real time

Microsoft Graph User delta expand duplicate result handling

When using the user delta endpoint for the initial read with expand on Manager property the query returns duplicate results. Some of these differ by either having the Manager Id or not but in some cases there are exact copies in the result pages. Some processed data suggests that sometimes even key properties like DisplayName end up missing in one of the duplicates.
Anyone knows what is a reliable strategy to resolve these merge issues to arrive at a consistent state? Or ideally how to avoid having to do this at all?
$expand is not supported for users, groups and other identity entities with delta queries. I authored a pull request to fix the documentation. If you want to track changes for the manager you should use $select=manager instead.

Get modified teams and team channels

I'm trying to sync teams and channels between Microsoft Teams and some internal database.
I noticed that:
Neither groups, nor teams, nor channels have a concept of "last modified time". The documentation suggests to use delta queries instead.
It seems that among these three resources, only groups support delta queries. When I try to use delta queries for teams or channels, I get an error.
Groups are not considered modified if a channel is added to (or removed from) a corresponding team. Also, if a channel is renamed, the teams' group is not considered modified either.
So questions:
Is it really not supported to get modified teams and/or channels? Or am I missing something?
Is it planned to add such a functionality to Microsoft Teams Graph API?
The situation is even worse than it seems on the first look, because even if I enumerate ALL the teams and ALL the channels, I cannot say which ones have been modified since last time I enumerated them, because they don't have anything like "last modified time", "version" etc. For instance, if I rename a channel (or edit its description), I won't be able to figure that out during subsequent sync.
At the moment the only Microsoft Teams entity that supports delta queries are Chat Messages in channels. See the documentation for supported entities across the Graph.
To request additional entities support, please go to uservoice and upvote existing ideas or create new ones.

MS Graph API endpoint /v1.0/me/planner/plans doesn't return all my plans

In the past I was reading a list of plans of current user with this REST call of the beta-API:
https://graph.microsoft.com/beta/me/plans
In July 2017 the planner API was released and there are also some minor changes to the endpoints, so the REST call in the V1.0-API now is:
https://graph.microsoft.com/v1.0/me/planner/plans
Unfortunately I do not receive all my plans with that endpoint. Apparently I only get plans that exist for a long time, but any newly created plans are not visible. I tried a lot of actions on my plans like subscribing to, assigning tasks to me, favorize the plan in planner hub, making a plan public or private, but nothing helps, new plans remain invisible in the API.
Can anybody explain what the new endpoint exactly does? The documentation for List plans is not very helpfull.
Can anybody explain how I can a list of all plans (title and id) that I am owner or member of?
The only work-around I have found so far is:
1) Read all unified groups
https://graph.microsoft.com/v1.0/me/memberOf/$/microsoft.graph.group?$filter=groupTypes/any(a:a eq 'unified')
2) for each group: read the planner plan for that group
https://graph.microsoft.com/v1.0/groups/<id>/planner/plans
But that would require one request per group, makeing performance horrible on tenants with dozens of groups.
This API returns plans that have been shared with the current user. Plans can be shared with a user by adding the user's id to sharedWith property of planDetails (Edit: currently users do not have permissions to add or remove others from this list). This is a separate set of users from group membership and does not allow access to data for shared users. Instead, the users will have access if they are group members, and lose access if they are removed from the group.
More information and a sample for updating plan details can be found here.
Additionally, you can submit feedback about the API (and other Planner functionality) here.

Resources