ServiceNow REST API:获取列名列表

时间:2019-07-11 17:11:06

标签: rest servicenow servicenow-rest-api

在管理界面中,有一个“表和列”浏览器,该浏览器会忠实地显示表的所有可用列,例如事件表:

Table column browser

我的最终目标是能够查询可插入数据的给定表的所有字段(主要围绕事件和问题表),将其与我拥有的数据进行匹配,然后使用PUT插入记录到桌子上。我遇到的直接问题是,当我按照各种论坛的建议查询sys_dictionary时,只返回了UI显示的列的子集。

邮递员查询:

https://{{SNOW_INSTANCE}}.service-now.com/api/now/table/sys_dictionary?sysparm_fields=internal_type,sys_name,name,read_only,max_length,active,mandatory,comments,sys_created_by,element&name={{TableName}}&sysparm_display_value=all

我了解精简结果集与它们是表中的实列以及与其他表的链接有关,但我找不到任何文档描述如何使用REST api获取UI具有的结果集。

接下来的问题是,我找不到带有示例有效负载的示例,该示例的有效载荷的所有标准字段都已填充到事件表中,因此我可以填充具有其数据的任意多个字段。

2 个答案:

答案 0 :(得分:0)

我认为您可以通过创建自己的scripted rest api并迭代/检查字段来做到这一点:

galleries

这应该省去了确定字段继承的麻烦。这是示例输出:

images

答案 1 :(得分:0)

之所以没有收回所有列,是因为您要查询的表是从另一个表继承的。您需要首先处理所有继承关系,找到所有父表,然后在sys_dictionary中查询所有这些表。

对于事件表,您需要查询sys_db_object表(所有表的表)以找到parent,即任务表。然后再次查询sys_db_object表以查找其parent,该表为空,因此我们具有所有相关表:incidenttask。显然,您希望将此代码编写为循环,通过查询列表末尾的表来构建表列表。

拥有此列表后,可以使用查询sys_dictionary查询sysparm_query=name=incident^ORname=task,该查询应返回完整的列列表。