ServiceNow
Create and update ITSM incidents, requests, and CMDB records via the ServiceNow Table API.
What It Does
Wraps the ServiceNow Table API (/api/now/table/{tableName}) to let you read and write records across any ServiceNow table — incidents, service requests, CMDB configuration items, and more — without leaving InTouch.
Operations
| Operation | HTTP | Table | Description |
|---|---|---|---|
list-records |
GET | any (default: incident) |
Query records with filters, field selection, and pagination |
get-record |
GET | any | Retrieve a single record by sys_id |
create-incident |
POST | incident |
Open a new incident with urgency, impact, category, and assignment |
update-record |
PATCH | any | Update one or more fields on an existing record by sys_id |
create-request |
POST | sc_request |
Submit a new service catalog request |
Authentication — apiKey
ServiceNow Table API uses HTTP Basic authentication. Supply apiKey as the base64-encoded string username:password.
Generate it once:
python3 -c "import base64; print(base64.b64encode(b'myuser:mypassword').decode())"
# -> bXl1c2VyOm15cGFzc3dvcmQ=
For OAuth, supply Bearer <token> as the apiKey value — the tool detects the Bearer prefix and sends it directly.
Parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
apiKey |
yes | — | base64(user:pass) or Bearer <token> |
instanceUrl |
yes | — | https://yourcompany.service-now.com |
operation |
yes | — | One of the 5 operations above |
table |
no | incident |
Table name for list/get/update |
sysId |
cond. | — | Record sys_id for get-record and update-record |
query |
no | — | Encoded query filter, e.g. active=true^priority=1 |
fields |
no | (all) | Comma-separated field names to return |
limit |
no | 20 |
Max records for list-records (1–1000) |
offset |
no | — | Pagination offset for list-records |
shortDescription |
cond. | — | Required for create-incident and create-request |
description |
no | — | Long description body |
urgency |
no | — | 1=High, 2=Medium, 3=Low |
impact |
no | — | 1=High, 2=Medium, 3=Low |
category |
no | — | e.g. network, hardware, software |
assignedTo |
no | — | sys_id or username of the assignee |
updateFields |
cond. | — | JSON object of fields to set for update-record |
Examples
List open high-priority incidents
operation: list-records
table: incident
query: active=true^priority=1
fields: number,short_description,state,assigned_to
limit: 50
Get a single incident
operation: get-record
table: incident
sysId: 1234abcd1234abcd1234abcd1234abcd
Create an incident
operation: create-incident
shortDescription: VPN gateway unreachable from EU region
description: Users in Frankfurt and Amsterdam cannot connect since 09:15 UTC.
urgency: 1
impact: 1
category: network
Update an incident — close it
operation: update-record
table: incident
sysId: 1234abcd1234abcd1234abcd1234abcd
updateFields: {"state":"7","close_code":"Solved (Permanently)","close_notes":"Root cause was a misconfigured firewall rule. Reverted."}
Create a service request
operation: create-request
shortDescription: Laptop replacement for onboarding — Alice Smith
description: New hire starting 2026-07-01. Needs MacBook Pro 16" M3.
assignedTo: it-hardware-team
Query CMDB configuration items
operation: list-records
table: cmdb_ci_server
query: operational_status=1^os_versionLIKEUbuntu
fields: name,ip_address,os_version,location
limit: 100
Outputs
| Output | Description |
|---|---|
result |
The result payload from the ServiceNow API as a JSON string |
status |
HTTP status code (200, 201, 400, 401, 403, 404, etc.) |
On error the tool also emits an error key with the HTTP status and a truncated response body.