Skip to content

Latest commit

 

History

History
158 lines (103 loc) · 5.34 KB

README.md

File metadata and controls

158 lines (103 loc) · 5.34 KB

CI Coverage Status

ServiceMeow

A Node.js client for the ServiceNOW REST API.

Installation

Run npm install servicemeow to install the package.

Basic Usage

const ServiceMeow = require('servicemeow');

const sm = new ServiceMeow('https://<INSTANCE>.service-now.com','<USERNAME>','<PASSWORD>');

const record = await sm.getSingleRecord('<TABLE_NAME>', <SYS_ID>);

Supported Actions

// returns JSON of record
getSingleRecord('<TABLE_NAME>', '<SYS_ID>');

// returns sys_id of created record
createRecord('<TABLE_NAME>', { /* <JSON_RECORD_BODY> */ });

// returns true if success, false otherwise
deleteSingleRecord('<TABLE_NAME>', '<SYS_ID_OF_RECORD_TO_BE_DELETED>');

// returns sys_id of updated record
updateSingleRecord('<TABLE_NAME>', { /* <JSON_RECORD_BODY> */ }, '<SYS_ID_OF_RECORD_TO_BE_DELETED>');

// Returns JSON of list of record(s). Use query builder for building advanced serviceNOW  encoded query
getRecords('<TABLE_NAME>', '<ENCODED_QUERY>');

// returns count of records matching given query
getRecordCount('<TABLE_NAME>', '<ENCODED_QUERY>');

Example Usage of Above Actions

const record = await sm.getSingleRecord('<TABLE_NAME>', '<SYS_ID>');

const id = await sm.createRecord('<TABLE_NAME>', {'endpoint': 'published'});

const deleted = await sm.deleteSingleRecord('<TABLE_NAME>', '<SYS_ID>');

const id = await servicenowClient.updateSingleRecord('<TABLE_NAME>', { /* <JSON_RECORD_BODY> */ }, '<SYS_ID>');

// Consider using QueryBuilder to create encoded queries
const records = await servicenowClient.getRecords('<TABLE_NAME>', '<ENCODED_QUERY>');

const count = await sm.getRecordCount('<TABLE_NAME>', '<ENCODED_QUERY>');

Query Builder Example Usage

const { QueryBuilder } = require('servicemeow');
const queryBuilder = new QueryBuilder();

// Less than '<'
const query = queryBuilder.field('sys_created_on').lessThan('2019-02-15 14:30:18');

// Less than using Date object
const query = queryBuilder.field('sys_created_on').lessThan(new Date());

// Greater than using Date object
const query = queryBuilder.field('sys_created_on').lessThan(new Date());

// compound query using and, lessThan, greaterThan
const query = queryBuilder.field('number').greaterThan('S').and().field('sys_created_on').lessThan(new Date());

// Between two dates, numbers, Strings 
const query = queryBuilder.field('sys_created_on').between('2015-02-15 14:30:18', '2019-02-18 14:30:18');
const query = queryBuilder.field('risk_score').between(47, 52);
const query = queryBuilder.field('number').between('A', 'Z');

// Empty String query
const query = queryBuilder.field('description').isEmptyString();

// Example of 'IN' operator
const query = queryBuilder.field('number').isOneOf(['INC0010122','INC0010120']);

// Example of 'NOT IN' operator
const query = queryBuilder.field('foo').isNoneOf(['bar', 'baz']);

// Is anything operator
const query = queryBuilder.field('number').isAnything();

// Contains operator
const query = queryBuilder.field('number').contains('<YOUR_STRING>');

// Order ascending/descending
const query = queryBuilder.field('number').contains('<YOUR_STRING>').or().contains('<OTHER_STRING>').orderAscending();

// Multiple conditions on a single field
const query = queryBuilder.field('number').contains('<YOUR_STRING>').and().contains('<OTHER_STRING>').orderDescending();

// Ends with operator
const query = queryBuilder.field('number').endsWith('<YOUR_STRING>');

// Does not contain
const query = queryBuilder.field('number').doesNotContain('<YOUR_STRING>');

// equals
const query = queryBuilder.field('number').equals('<YOUR_STRING>/<ARRAY>');

// isEmpty
const query = queryBuilder.field('number').isEmpty();

// isNotEmpty
const query = queryBuilder.field('number').isNotEmpty();

// Example of 'SAMEAS' operator
const query = queryBuilder.field('left').isSameAs('middle');

// Example of 'NSAMEAS' operator
const query = queryBuilder.field('left').isNotSameAs('right');

// Example of 'GT_FIELD' operator
const query = queryBuilder.field('foo').greaterThanField('bar');

// Example of 'GT_OR_EQUALS_FIELD' operator
const query = queryBuilder.field('foo').greaterThanOrEqualsField('bar');

// Example of 'LT_FIELD' operator
const query = queryBuilder.field('foo').lessThanField('bar');

// Example of 'LT_OR_EQUALS_FIELD' operator
const query = queryBuilder.field('foo').lessThanOrEqualsField('bar');

// Example of 'RELATIVEGT' operator
const query = queryBuilder.field('sys_updated_on').since(1, 'hour');

// Example of 'RELATIVELT' operator
const query = queryBuilder.field('sys_updated_on').notSince(10, 'minute');

// Example of 'MORETHAN' operator
const query = queryBuilder.field('sys_created_on').isMoreThan(1, 'year').before('sys_updated_on');

// Example of 'LESSTHAN' operator
const query = queryBuilder.field('sys_created_on').isLessThan(12, 'hour').before('sys_updated_on');

Typings

Typings are automatically generated from the JSDoc comments prior to npm publish. As such, declaration files are included in the npm package distribution but not committed to git.

Acknowledgements

ServiceMeow was forked from ServiceNOW-Client by Kaushal Shah.