我在应用程序中使用ServiceNow REST API。
我需要解决现有的事件。
为此,我使用PUT
方法,并且可以更新诸如short_description
之类的某些字段。但是,如果我尝试更新state
字段,则API不会更新此字段。
我使用非常简单的C#
代码:
_restClient.BaseUrl = new Uri(string.Format("https://{0}.service-now.com", serverName));
var request = new RestRequest(string.Format("/api/now/table/incident/{0}", incidentId), Method.PUT)
{
RequestFormat = DataFormat.Json
};
request.Credentials = new NetworkCredential(userName, password);
request.AddBody(new { state = "6" });
var response = _restClient.Execute(request);
我尝试将state
更新为值6
,因为此值为Resolve
。
但是该字段未通过REST API更新。但是,我可以通过Web UI解决我的事件。
为什么状态字段未使用REST API更新?
答案 0 :(得分:1)
可能的原因之一是在该表上设置了访问控制列表(ACL)。您可以阅读有关它们的信息,例如here。
在我遇到的一种情况下,除非更改“ automated_state_flow”参数设置为false,否则会有一个特殊的“状态更改流程”来禁止更改票证的状态。您的情况可能会一样吗?我会尝试使用以下JSON发送请求:
{"automated_state_flow"="False";
"state" = "6"}
,然后发送第二个Web请求:
{"automated_state_flow"="False"}
答案 1 :(得分:1)
您可能会缺少填写必填字段的信息。通过WebUI解决事件时,请记录所有必填字段,并将这些字段添加到PUT请求的正文中。
您还应该共享请求的响应。这可以帮助发现问题所在。
答案 2 :(得分:1)
您尝试更新的字段不应为只读。