Не удается разрешить инцидент ServiceNow с помощью REST API - PullRequest
0 голосов
/ 23 октября 2018

Я использую 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.Однако я могу разрешить свой инцидент через веб-интерфейс.

Почему поле состояния не обновляется с использованием REST API?

Ответы [ 3 ]

0 голосов
/ 10 ноября 2018

Возможно, вам не хватает заполнения обязательных полей.Запишите все обязательные поля при разрешении инцидента через WebUI и добавьте эти поля в тело вашего запроса PUT.

Вы также должны предоставить ответы на запрос.Это может помочь выяснить, в чем может быть проблема.

0 голосов
/ 13 ноября 2018

Поле, которое вы пытаетесь обновить, не должно быть доступно только для чтения.

0 голосов
/ 23 октября 2018

Одной из возможных причин такого поведения является то, что для этой таблицы установлены списки контроля доступа (ACL).Вы можете прочитать о них, например, здесь .

В одной из ситуаций, с которыми я столкнулся, был особый «поток» изменения состояний, который запрещал бы изменение состояния заявки,если параметр "automatic_state_flow" не был установлен как ложный.Может ли быть так же в вашей ситуации?Я бы попытался отправить запрос со следующим JSON:

{"automated_state_flow"="False";
"state" = "6"}

, а затем отправил второй веб-запрос:

{"automated_state_flow"="False"}
...