【发布时间】:2023-02-23 03:42:50
【问题描述】:
我正在使用动态 CRM REST API 创建项目,并在线管理 Microsoft Projects 上的一些操作。 我们正在使用可以应用于任务的标签来表示各种事物。
通过 API,我可以读取标签,并且可以读取和写入分配给每个任务 (msdyn_projecttask) 的标签。 我没有成功的一点是创建一个 API 调用,它将标签文本从默认值(粉色、红色、黄色等)更改为更有用的内容。
目前我必须通过项目用户界面手动编辑标签文本(例如,见下文)。
重命名标签后,当我通过 API 获取它们时,我可以看到更改后的文本,但我无法找到通过 API 更改它的方法。
我可以通过获取项目标签
GET https://orgXYZABC.api.crm4.dynamics.com/api/data/v9.1/msdyn_projectlabels?$filter=_msdyn_projectid_value%20eq%20%27{projectId}%27
(其中 {projectId} 是我项目的 msydn_projectid)
返回的数据如下:
{
"@odata.context":"https://orgXYZABC.api.crm4.dynamics.com/api/data/v9.1/$metadata#msdyn_projectlabels",
"value":[
{
"@odata.etag":"W/\"21783358\"",
"_owningbusinessunit_value":".....",
"statecode":0,
"msdyn_colorindex":192350000,
"statuscode":1,
"_createdby_value":"....",
"_ownerid_value":".....",
"_owningteam_value":".....",
"modifiedon":"2022-11-02T13:32:26Z",
"_modifiedby_value":"....",
"versionnumber":21783358,
"_msdyn_projectid_value":".....",
"createdon":"2022-11-02T13:32:26Z",
"msdyn_projectlabelid":"625eb1b2.....",
"_owninguser_value":null,
"overriddencreatedon":null,
"importsequencenumber":null,
"_modifiedonbehalfby_value":null,
"msdyn_projectlabeltext": "Label One",
"utcconversiontimezonecode":null,
"_createdonbehalfby_value":null,
"timezoneruleversionnumber":null
},
....
]
}
我试过了:
PATCH https://orgXYZABC.api.crm4.dynamics.com/api/data/v9.1/msdyn_projectlabels({labelId}})
(其中 {labelId} 是上面返回的 msdyn_projectlabelid 值之一)
headers: [
"If-Match: *",
"OData-MaxVersion: 4.0",
"OData-Version: 4.0",
"Accept: application/json",
"Authorization: ...",
"Content-Type: application/json; charset=utf-8"
]
body: {
"msdyn_projectlabeltext": "Test Label 1"
}
但它失败了并说:
“我们很抱歉。您不能直接对‘msdyn_projectlabel’执行‘更新’操作。请尝试通过 Project 的资源编辑 UI 对其进行编辑。”
我试过:
PATCH https://orgXYZABC.api.crm4.dynamics.com/api/data/v9.1/msdyn_projectlabelsheaders: [ "If-Match: *", "OData-MaxVersion: 4.0", "OData-Version: 4.0", "Accept: application/json", "Authorization: ...", "Content-Type: application/json; charset=utf-8" ] body: { "msdyn_projectlabeltext": "Test Label 1" "msdyn_projectlabelid@odata.bind": "/msdyn_projectlabels({labelId})" }哪个失败了,说:
“请求的资源不支持 http 方法‘PATCH’。”
还尝试过:
PUT https://orgXYZABC.api.crm4.dynamics.com/api/data/v9.1/msdyn_projectlabels({labelId})/msdyn_projectlabeltextheaders: [ "OData-MaxVersion: 4.0", "OData-Version: 4.0", "Accept: application/json", "Authorization: ...", "Content-Type: application/json; charset=utf-8" ] body: { "value": "Test Label 1" }失败并出现与上述相同的错误。
在任何地方似乎都没有这方面的任何文档,如果你用谷歌搜索“msdyn_projectlabel”或“msdyn_projectlabels”(引号),你不会得到一个结果!
那里的任何人都知道这是否可能/如何成功?
【问题讨论】:
标签: api microsoft-dynamics dynamics-crm-webapi