无法使用 REST 解决 ServiceNow 事件 API

Can't resolve ServiceNow incident using REST API

我在我的应用程序中使用 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。但是我可以通过网络解决我的事件 UI.

为什么使用 REST API 不更新状态字段?

该行为的可能原因之一是在该 table 上设置了访问控制列表 (ACL)。您可以阅读它们,例如 here.

在我遇到的一种情况下,有一个特殊的 'flow' 状态更改将禁止更改票证状态,除非 "automated_state_flow" 参数设置为 false。在你的情况下可能是一样的吗?我会尝试使用以下 JSON:

发送请求
{"automated_state_flow"="False";
"state" = "6"}

然后发送第二个网络请求:

{"automated_state_flow"="False"}

您可能没有填写必填字段。在通过 WebUI 解决事件时记下所有必填字段,并将这些字段添加到 PUT 请求的正文中。

您也应该分享请求的回复。这可能有助于发现问题所在。

您尝试更新的字段不应是只读的。