用途:通过 ServiceNow 的 REST API 管理 ITSM 记录,包括事件(incident)、变更请求(change_request)、问题、CMDB 配置项(cmdb_ci)和用户(sys_user)等,几乎所有记录类型都可通过 Table API(/api/now/table/<表名>)访问。
必要准备:需设置 SERVICENOW_USERNAME、SERVICENOW_PASSWORD 和 SERVICENOW_INSTANCE(.service-now.com 前的子域)。基础 URL 为 https://$SERVICENOW_INSTANCE.service-now.com/api/now/,使用 HTTP Basic 认证,每次请求通过 -u "$SERVICENOW_USERNAME:$SERVICENOW_PASSWORD" 传递凭据。可用 zero doctor check-connector 排查连接问题;返回 401 表示凭据错误,403 通常表示用户缺少相应角色(如 incident 需要 itil 角色)。
主要能力:一是查询,使用 sysparm_query 编码查询串(如 active=true^priority=1)过滤,支持 =、!=、>、<、LIKE、STARTSWITH、IN、^OR、^EQ、ORDERBY 等运算符,并用 sysparm_fields 指定返回字段、sysparm_limit 与 sysparm_offset 分页;sysparm_display_value=true 返回可读标签,写入时须传内部值。字段支持点走(如 assigned_to.name)。二是创建与更新,POST 创建记录,PATCH 做局部更新,PUT 会整体替换记录;事件 priority 由 impact 与 urgency 自动计算,state 值如 1 New、2 In Progress、3 On Hold、6 Resolved、7 Closed、8 Canceled。三是删除,DELETE 需管理员权限,一般流程以解决或取消代替删除。四是附件,通过 sys_attachment 表查询,用 --data-binary 上传。五是聚合统计,/api/now/stats/<表> 可做分组计数,避免拉取大量数据。
常见工作流:按邮箱查用户 sys_id 后自动建事件;批量关闭超过 60 天仍处于 On Hold 的事件。
限制:每条记录有 32 位十六进制 sys_id 作为不可变主键;编码查询串是唯一过滤语言;用户需在各表拥有相应角色(incident/problem/change 需 itil,CMDB 需 cmdb_read 等);默认速率限制约每用户每分钟 600 次请求,超限返回 429 与 Retry-After;sysparm_limit 默认 10000,实际约 1000 有效。API 参考见 Table API、Aggregate API、Attachment API 及编码查询字符串文档链接。