InTouch Hub · Blue Isle Software

ServiceNow

Create and update ITSM incidents, requests, and CMDB records via the ServiceNow Table API.

Provided free and as is, without warranty of any kind — including merchantability, fitness for a particular purpose, and the accuracy or completeness of any result. See the licence. You are responsible for checking what this produces before relying on it.

helpdeskimportincidentincidentsitsmsupport-helpdesk

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.

Publishes

The keys a later task may reference as {{taskName.key}}. Referencing anything not listed here resolves to nothing at run time.

Input Properties

Every property this tool accepts, from its own tool.iml.

Property Type Required Default Description
apiKey string yes — Base64-encoded 'username:password' for Basic auth (e.g. run: python3 -c "import base64; print(base64.b64encode(b'user:pass').decode())"). Alternatively supply a Bearer OAuth token — the tool sends it as-is in the Authorization header, so prefix with 'Bearer ' for OAuth tokens.
instanceUrl string yes — ServiceNow instance base URL (e.g. https://mycompany.service-now.com). No trailing slash.
operation string yes — One of: list-records, get-record, create-incident, update-record, create-request
table string no — Table name for list-records, get-record, and update-record (e.g. incident, sc_request, cmdb_ci). Defaults to 'incident' when not set for list-records.
sysId string no — sys_id of the record. Required for get-record and update-record.
query string no — Encoded query string (sysparm_query) to filter list-records results, e.g. 'active=true^priority=1'. Supports ServiceNow's encoded query syntax.
fields string no — Comma-separated list of fields to return (sysparm_fields), e.g. 'number,short_description,state,priority'. Empty returns all fields.
limit string no 20 Maximum number of records to return for list-records (sysparm_limit, 1-1000). Defaults to 20.
offset string no — Pagination offset (sysparm_offset) for list-records.
shortDescription string no — Short description / title. Required for create-incident and create-request.
description string no — Detailed description / long text body for create-incident and create-request.
urgency string no — Urgency level for create-incident: 1 (High), 2 (Medium), 3 (Low).
impact string no — Impact level for create-incident: 1 (High), 2 (Medium), 3 (Low).
category string no — Category for create-incident (e.g. network, hardware, software).
assignedTo string no — sys_id or username of the user to assign the incident/request to.
updateFields string no — JSON object string of fields to update for update-record (e.g. '{"state":"2","close_notes":"Resolved"}').