← all adapters

servicenow-style

simulates ServiceNow Table API 2

restadapter v0.1.044 routes

verification

VMVM tier — no SDK suite yet· surface 44 · not implemented 5 · differs 1

use it

# add to stunt.yaml
services:
  servicenow:
    adapter: embedded:servicenow-style

# then
$ stunt up

The embedded: source extracts this adapter from the binary — no git clone, fully offline.

how to mock the ServiceNow Table API locally

Install stunt, paste the service block above into stunt.yaml, run stunt up — then point your client at localhost instead of ServiceNow Table API. It works offline, keeps state across requests and restarts, and every response is synthetic: the route shapes, status codes, pagination, and webhook delivery follow the real ServiceNow Table API 2 surface — the data is fake, the behavior is real.

backing stores

incidentstaskschange_requestscmdb_cissys_userssys_user_groupssc_req_items

api surface (44)

generated from the adapter manifest — exactly what boots, nothing more

44 routes
GET/api/now/table/incident
POST/api/now/table/incident
GET/api/now/table/incident/{sys_id}
PUT/api/now/table/incident/{sys_id}
PATCH/api/now/table/incident/{sys_id}
DELETE/api/now/table/incident/{sys_id}
GET/api/now/table/task
POST/api/now/table/task
GET/api/now/table/task/{sys_id}
PUT/api/now/table/task/{sys_id}
PATCH/api/now/table/task/{sys_id}
DELETE/api/now/table/task/{sys_id}
GET/api/now/table/change_request
POST/api/now/table/change_request
GET/api/now/table/change_request/{sys_id}
PUT/api/now/table/change_request/{sys_id}
PATCH/api/now/table/change_request/{sys_id}
DELETE/api/now/table/change_request/{sys_id}
GET/api/now/table/cmdb_ci
POST/api/now/table/cmdb_ci
GET/api/now/table/cmdb_ci/{sys_id}
PUT/api/now/table/cmdb_ci/{sys_id}
PATCH/api/now/table/cmdb_ci/{sys_id}
DELETE/api/now/table/cmdb_ci/{sys_id}
GET/api/now/table/sys_user
POST/api/now/table/sys_user
GET/api/now/table/sys_user/{sys_id}
PUT/api/now/table/sys_user/{sys_id}
PATCH/api/now/table/sys_user/{sys_id}
DELETE/api/now/table/sys_user/{sys_id}
GET/api/now/table/sys_user_group
POST/api/now/table/sys_user_group
GET/api/now/table/sys_user_group/{sys_id}
PUT/api/now/table/sys_user_group/{sys_id}
PATCH/api/now/table/sys_user_group/{sys_id}
DELETE/api/now/table/sys_user_group/{sys_id}
GET/api/now/table/sc_req_item
POST/api/now/table/sc_req_item
GET/api/now/table/sc_req_item/{sys_id}
PUT/api/now/table/sc_req_item/{sys_id}
PATCH/api/now/table/sc_req_item/{sys_id}
DELETE/api/now/table/sc_req_item/{sys_id}
GET/api/now/table/sys_metadata
POST/api/now/import/u_my_table

VM-verified behaviors (9)

  • unknown credentials are 401 at the gate
  • create assigns a sys_id and INC number
  • get round-trips the fields
  • update persists the new state
  • sysparm_query narrows the list with a total count
  • offset/limit pagination pages via the Link header without repeats
  • tables are isolated from each other
  • unknown sys_id and unknown table are 404
  • delete removes the record for good

Not implemented (5)

  • Only a fixed table set (incident, task, change_request, cmdb_ci, ...) — no custom tables
  • No attachment API (/api/now/attachment)
  • No aggregate statistics API (/api/now/stats/{table})
  • No service catalog API (/api/sn_sc/servicecatalog)
  • No batch API (/api/now/v1/batch)

Differs from the real API (1)

  • sysparm_query supports an operator subset; NOT LIKE and similar 400-rejected
want more of the ServiceNow Table API surface? adapters are YAML + Starlark — the authoring guide covers adding routes, fixtures, and state machines. Open an issue for anything big first, or just file a PR — merged routes ship in the next release.