February 28th, 2023

New Microsoft Graph Planner API capabilities now available

We are pleased to announce new capabilities for Microsoft Graph Planner API, in response to some of our top customer requests. The updates are spread across two major areas: 

  • First, a new set of business scenarios capabilities, which allow integration of external signals and data into the Planner ecosystem. These capabilities will support both Application permissions and Delegated permissions. 
  • Second, providing application permissions for existing Planner API capabilities, in addition to the support for Delegated permissions already available today. 

Below are a few examples of how your organization can use these new capabilities. 

Example uses 

External signals integration. You can now use business scenario capabilities to create, read, update, or delete tasks in response to external signals. 

  • Syncing action items from an external system: Let’s say your organization uses a ticketing system and you’d like all tickets to be represented in Planner, too, so users can easily view the tickets from the Tasks app in Teams or any of the other experiences that show Planner tasks. Whenever a new ticket is created, your application can use a business scenario to create a corresponding Planner task. When using a business scenario to create a task, you can set the externalID of the Planner task. In this case you might set it to the ticketID, allowing you to query for the task based on the ticketID.  
  • Tasks resulting from events in other systems: Now let’s imagine a manufacturing organization with a number of production line assets. When one of them fires off an event signaling a machine failure, an urgent task can be created to track the follow-up action to inspect the machine. When creating the task via a business scenario, you can set the externalID to the failureID for the failure to easily query the task. 

There are a few other benefits of using a business scenario to create and manage these tasks. Your organization can configure business scenario permissions to prevent users from taking undesirable actions, like deleting the tasks created via the business scenario. Furthermore, using business scenario capabilities provides an application access only to the tasks created via that business scenario – preventing unnecessary access to all remaining tasks across your organization.  

Export or backup. Until now, backing up tasks across Teams and Groups required you to pick a user and make that user part of all the relevant Teams or Groups with Planner plans and tasks to be backed up. It was possible to use the Planner API with Delegated permissions – in the scope of that user – getting all of the tasks that user had access to. However, if that user was ever removed from one of the relevant Teams or Groups, the backup would be missing those tasks because the user would no longer have access. With the addition of application permissions to the existing Planner APIs, it’s now possible to query each of the plans you’d like to include in your backup from across many Teams and Groups, without needing to manage a user’s membership in them. 

Read more about these new capabilities in our previous blog post or review the documentation for business scenario capabilities and for the existing Planner API capabilities. The Get plannerTask documentation is one example of a capability that now shows support for Application permissions. 

Happy coding! 

Author

Andrew Friedman
Principal Product Manager
Brijesh Bharadwaj
Principal Software Eng Manager
Tarkan Sevilmis
Principal Software Engineer

2 comments

Discussion is closed. Login to edit/delete existing comments.

  • Piotr Kolodziej · Edited

    https://graph.microsoft.com/beta/users/{userId}/teamwork/installedApps/{appId}/chat stopped working. We are able to still get the app id and expand on teamsApp and app definitions, but /chat is impossible even in the REST graph explorer:

    {
    “error”: {
    “code”: “BadRequest”,
    “message”: “BadRequest”,
    “innerError”: {
    “message”: “”,
    “code”: “BadRequest”,
    “innerError”: {},
    “date”: “2023-03-08T11:15:39”,
    “request-id”: “657b2785-8866-4b5e-a1bd-837ffc28c3d9”,
    “client-request-id”: “7cb11cd3-d939-c77e-e49f-fb113564c4c1”
    }
    }
    }

  • Digant Prajapati