How can I create a planner task with a description?


I'm using the Microsoft Graph API with the .Net SDK.

I'm trying to create a new PlannerTask, and provide a description with it when doing that.

The description for a PlannerTask is on a related object, PlannerTaskDetails, and so that object is "read-only".

This seems to imply that to create a PlannerTask with a Description I have to make at least two calls. The first call creates the PlannerTask, and the second call updates the PlannerTaskDetails.

To update the PlannerTaskDetails, an e-tag is needed. So I used Expand to request that the Details property is populated when returning the created PlannerTask. But it is returned unpopulated (i.e. null).

var task = await graphServiceClient .Planner .Tasks .Request() .Expand("Details") .AddAsync(plannerTask); var taskPlannerDetailsETag = task.Details.GetEtag(); var taskDetails = await graphServiceClient .Planner .Tasks[task.Id] .Details .Request() .Header("If-Match", taskPlannerDetailsETag) .UpdateAsync(new PlannerTaskDetails() { Description = officeTask.Body });

So the next thing to try would be creating the PlannerTask, then making a second call to retrieve the PlannerTaskDetails, and then a third call to update the PlannerTaskDetails. But I think I must be approaching this wrong, 3 network round trips to create a single task with a description seems, well, absurd.

What am I doing wrong?


Creating a task, reading the details, then updating the details is currently the correct way of accomplishing this scenario. Note that reading the details immediately after creating the task may fail, as the processing is asynchronous, so you should add some retry logic to have stable behavior. We're working on improvements on this scenario to simplify the process.


  • Configuring WSO2 STATS_DB
  • add new field to form with rvest
  • Change Divider Color Android DatePicker Dialog
  • SSRS 2008 - Sorting within a group
  • Google Bigquery Command Line Return Limit
  • Web service not returning integer data in an object [duplicate]
  • Creating UDF with VSTO in Excel
  • Mvc 3 posting content type application/json, action method arguments loose mapping?
  • How do I Dispose a HttpResponseMessage in my Web Api Method?
  • Where these are stored?
  • Reading a file into a multidimensional array
  • Object and struct member access and address offset calculation
  • Not able to aggregate on nested fields in elasticsearch
  • How can the INSERT … ON CONFLICT (id) DO UPDATE… syntax be used with a sequence ID?
  • Caching attributes in superclass
  • WPF - CanExecute dosn't fire when raising Commands from a UserControl
  • Hardware Accelerated Image Scaling in windows using C++
  • Magento Fatal error: Maximum execution error solution, on WAMP
  • Is it possible to access block's scope in method?
  • Database structure design with variable amounts of fields
  • SignalR .NET Client Invoke throws an exception
  • Get one-time binding to work for ng-if
  • Master page gives error
  • How do I fake an specific browser client when using Java's Net library?
  • Volley JsonObjectRequest send headers in GET Request
  • Can Jackson SerializationFeature be overridden per field or class?
  • How to get a value (ex: baseURL) in every Karate feature?
  • How to redirect a user to a different server and include HTTP basic authentication credentials?
  • Incrementing object id automatically JS constructor (static method and variable)
  • Symfony2: How to get request parameter
  • Importing jscolor library in angular 2
  • Matrix multiplication with MKL
  • WPF Applying a trigger on binding failure
  • log4net write single file for each call to log.info
  • Free memory of cv::Mat loaded using FileStorage API
  • C# - Getting references of reference
  • Getting error when using KSoap library to consume .NET web services
  • unknown Exception android
  • Checking variable from a different class in C#
  • Easiest way to encapsulate a HTML5 webpage into an android app?