是否存在用于KB文档用户规则诊断、用户KB文章读取权限校验及上下文API搜索列表获取的ServiceNow REST API?
ServiceNow REST API 相关问题解答
嘿,我来帮你梳理下这两个ServiceNow API的问题~
1. 是否存在可直接对KB文档运行用户规则诊断的ServiceNow REST API?
ServiceNow并没有开箱即用的专门REST API来直接诊断KB文档的用户规则,但你可以通过两种方式实现类似需求:
- 利用Table API:查询
kb_knowledge表以及关联的权限相关表(比如sys_user_has_role、sys_user_grmember),获取KB的可见性规则、用户的角色/组信息后,自行编写逻辑判断用户规则是否匹配。 - 自定义
Scripted REST API:如果需要更直接的诊断能力,可以创建一个脚本化REST API端点,在脚本里调用ServiceNow的服务器端API(比如GlideUser的hasRole()、GlideRecord的canRead()方法),专门针对特定KB文档的用户规则做检查,返回诊断结果。
2. 是否存在可基于用户sys-id检查该用户是否拥有KB文章读取权限的ServiceNow REST API?或者是否能够基于用户sys-id(依据用户规则)获取上下文API搜索列表?
检查用户对KB文章的读取权限
同样没有直接的开箱API,但有两种可行方案:
- 自定义
Scripted REST API:创建一个端点,接收用户sys-id和KB文章sys-id作为参数,在脚本中用GlideRecord加载目标KB文章,调用gr.canRead(userSysId)方法判断权限,然后返回布尔结果,这种方式最直接可靠。 - 借助Table API:发起对
kb_knowledge表的GET请求,通过sysparm_query过滤出目标KB,同时结合用户的权限上下文(比如通过角色、组字段过滤),但这种方式需要自行处理权限逻辑,不如脚本API灵活。
获取基于用户sys-id的上下文KB搜索列表
这个是有现成API可以用的:
- 使用Search API(端点:
/api/now/search),在请求参数中指定sysparm_user为目标用户的sys-id,API会自动应用该用户的角色、组权限以及KB的可见性规则,返回该用户有权限查看的KB文章搜索结果。你还可以通过sysparm_query添加额外的过滤条件,缩小搜索范围。
内容的提问来源于stack exchange,提问作者Cleyon Kurian
相关产品推荐
相关产品推荐

