WebAPI 可编辑的只读字段

WebAPI-editable readonly field

是否可以使用 Azure DevOps/TFS WebAPI 编辑 READONLY workItem 字段?

我试过像往常一样更改该字段,但是就像该字段在 VisualStudio 或 Azure 网页中是只读的一样,您不能使用 UpdateWorkItem webApi 调用进行等效更改。

简化如下:

using (WorkItemTrackingHttpClient wiClient = new WorkItemTrackingHttpClient(new Uri(devOpsServerHost), credentials)) {
    WorkItem wi = wiClient.GetWorkItemAsync(workItemId).Result;

    JsonPatchDocument patchDoc = new JsonPatchOperation[] {
        new JsonPatchOperation()
        {
            Operation = operation, // Add or Replace
            Path = "/fields/Microsoft.VSTS.Scheduling.OriginalEstimate",
            Value = estimated // a float
        }
    });

    return wiClient.UpdateWorkItemAsync(patchDoc, workItemId, bypassRules).Result;
}

我正在尝试让 workItem 字段可通过外部 API 进行编辑,并与进行更改的用户相关联,而同一用户无法直接编辑该字段。 例如,用户在外部应用程序中设置多个任务,联合估计更新到 TFS workItem。

作为奖励,我希望对其进行更改以不阻止保存工作项版本。 readonly 字段给了我希望,尽管我认为这可能是不可能的。

I'm trying to get a workItem field to be editable through an external API and to be associated with a user making the changes, while the same user cannot edit the field directly

但是,目前不支持通过 APIs 更改 READONLY 工作项字段的值。

如果您将字段设置为只读,则无法在页面上或通过 API.

对其进行编辑

另一种可能不太完美的方法是在每次执行 API 时以编程方式使该字段可编辑,然后在编辑后将其设为只读。您可以使用 REST API Fields - Update.

PATCH https://dev.azure.com/{organization}/_apis/work/processes/{processId}/workItemTypes/{witRefName}/fields/{fieldRefName}?api-version=6.0-preview.2

这是一个示例请求正文:

{
  "readOnly": true
}