{"version":3,"sources":["jsdelivr-header.js","/npm/@itentialopensource/adapter-pagerduty@1.0.6/adapter.js"],"names":[],"mappings":"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","file":"/npm/@itentialopensource/adapter-pagerduty@1.0.6/adapter.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /npm/@itentialopensource/adapter-pagerduty@1.0.6/adapter.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/* @copyright Itential, LLC 2019 (pre-modifications) */\n\n/* eslint import/no-dynamic-require: warn */\n/* eslint object-curly-newline: warn */\n/* eslint default-param-last: warn */\n\n// Set globals\n/* global log */\n\n/* Required libraries.  */\nconst path = require('path');\n\n/* Fetch in the other needed components for the this Adaptor */\nconst AdapterBaseCl = require(path.join(__dirname, 'adapterBase.js'));\n\n/**\n * This is the adapter/interface into Pagerduty\n */\n\n/* GENERAL ADAPTER FUNCTIONS */\nclass Pagerduty extends AdapterBaseCl {\n  /**\n   * Pagerduty Adapter\n   * @constructor\n   */\n  /* Working on changing the way we do Emit methods due to size and time constrainsts\n  constructor(prongid, properties) {\n    // Instantiate the AdapterBase super class\n    super(prongid, properties);\n\n    const restFunctionNames = this.getWorkflowFunctions();\n\n    // Dynamically bind emit functions\n    for (let i = 0; i < restFunctionNames.length; i += 1) {\n      // Bind function to have name fnNameEmit for fnName\n      const version = restFunctionNames[i].match(/__v[0-9]+/);\n      const baseFnName = restFunctionNames[i].replace(/__v[0-9]+/, '');\n      const fnNameEmit = version ? `${baseFnName}Emit${version}` : `${baseFnName}Emit`;\n      this[fnNameEmit] = function (...args) {\n        // extract the callback\n        const callback = args[args.length - 1];\n        // slice the callback from args so we can insert our own\n        const functionArgs = args.slice(0, args.length - 1);\n        // create a random name for the listener\n        const eventName = `${restFunctionNames[i]}:${Math.random().toString(36)}`;\n        // tell the calling class to start listening\n        callback({ event: eventName, status: 'received' });\n        // store parent for use of this context later\n        const parent = this;\n        // store emission function\n        const func = function (val, err) {\n          parent.removeListener(eventName, func);\n          parent.emit(eventName, val, err);\n        };\n        // Use apply to call the function in a specific context\n        this[restFunctionNames[i]].apply(this, functionArgs.concat([func])); // eslint-disable-line prefer-spread\n      };\n    }\n\n    // Uncomment if you have things to add to the constructor like using your own properties.\n    // Otherwise the constructor in the adapterBase will be used.\n    // Capture my own properties - they need to be defined in propertiesSchema.json\n    // if (this.allProps && this.allProps.myownproperty) {\n    //   mypropvariable = this.allProps.myownproperty;\n    // }\n  }\n  */\n\n  /**\n   * @callback healthCallback\n   * @param {Object} reqObj - the request to send into the healthcheck\n   * @param {Callback} callback - The results of the call\n   */\n  healthCheck(reqObj, callback) {\n    // you can modify what is passed into the healthcheck by changing things in the newReq\n    let newReq = null;\n    if (reqObj) {\n      newReq = Object.assign(...reqObj);\n    }\n    super.healthCheck(newReq, callback);\n  }\n\n  /**\n   * @iapGetAdapterWorkflowFunctions\n   */\n  iapGetAdapterWorkflowFunctions(inIgnore) {\n    let myIgnore = [\n      'healthCheck',\n      'iapGetAdapterWorkflowFunctions',\n      'hasEntities',\n      'getAuthorization'\n    ];\n    if (!inIgnore && Array.isArray(inIgnore)) {\n      myIgnore = inIgnore;\n    } else if (!inIgnore && typeof inIgnore === 'string') {\n      myIgnore = [inIgnore];\n    }\n\n    // The generic adapter functions should already be ignored (e.g. healthCheck)\n    // you can add specific methods that you do not want to be workflow functions to ignore like below\n    // myIgnore.push('myMethodNotInWorkflow');\n\n    return super.iapGetAdapterWorkflowFunctions(myIgnore);\n  }\n\n  /**\n   * iapUpdateAdapterConfiguration is used to update any of the adapter configuration files. This\n   * allows customers to make changes to adapter configuration without having to be on the\n   * file system.\n   *\n   * @function iapUpdateAdapterConfiguration\n   * @param {string} configFile - the name of the file being updated (required)\n   * @param {Object} changes - an object containing all of the changes = formatted like the configuration file (required)\n   * @param {string} entity - the entity to be changed, if an action, schema or mock data file (optional)\n   * @param {string} type - the type of entity file to change, (action, schema, mock) (optional)\n   * @param {string} action - the action to be changed, if an action, schema or mock data file (optional)\n   * @param {boolean} replace - true to replace entire mock data, false to merge/append\n   * @param {Callback} callback - The results of the call\n   */\n  iapUpdateAdapterConfiguration(configFile, changes, entity, type, action, replace, callback) {\n    const meth = 'adapter-iapUpdateAdapterConfiguration';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    super.iapUpdateAdapterConfiguration(configFile, changes, entity, type, action, replace, callback);\n  }\n\n  /**\n    * @summary Suspends adapter\n    *\n    * @function iapSuspendAdapter\n    * @param {Callback} callback - callback function\n    */\n  iapSuspendAdapter(mode, callback) {\n    const meth = 'adapter-iapSuspendAdapter';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapSuspendAdapter(mode, callback);\n    } catch (error) {\n      log.error(`${origin}: ${error}`);\n      return callback(null, error);\n    }\n  }\n\n  /**\n    * @summary Unsuspends adapter\n    *\n    * @function iapUnsuspendAdapter\n    * @param {Callback} callback - callback function\n    */\n  iapUnsuspendAdapter(callback) {\n    const meth = 'adapter-iapUnsuspendAdapter';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapUnsuspendAdapter(callback);\n    } catch (error) {\n      log.error(`${origin}: ${error}`);\n      return callback(null, error);\n    }\n  }\n\n  /**\n    * @summary Get the Adapter Queue\n    *\n    * @function iapGetAdapterQueue\n    * @param {Callback} callback - callback function\n    */\n  iapGetAdapterQueue(callback) {\n    const meth = 'adapter-iapGetAdapterQueue';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    return super.iapGetAdapterQueue(callback);\n  }\n\n  /* SCRIPT CALLS */\n  /**\n   * See if the API path provided is found in this adapter\n   *\n   * @function iapFindAdapterPath\n   * @param {string} apiPath - the api path to check on\n   * @param {Callback} callback - The results of the call\n   */\n  iapFindAdapterPath(apiPath, callback) {\n    const meth = 'adapter-iapFindAdapterPath';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    super.iapFindAdapterPath(apiPath, callback);\n  }\n\n  /**\n  * @summary Runs troubleshoot scripts for adapter\n  *\n  * @function iapTroubleshootAdapter\n  * @param {Object} props - the connection, healthcheck and authentication properties\n  *\n  * @param {Callback} callback - The results of the call\n  */\n  iapTroubleshootAdapter(props, callback) {\n    const meth = 'adapter-iapTroubleshootAdapter';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapTroubleshootAdapter(props, this, callback);\n    } catch (error) {\n      log.error(`${origin}: ${error}`);\n      return callback(null, error);\n    }\n  }\n\n  /**\n    * @summary runs healthcheck script for adapter\n    *\n    * @function iapRunAdapterHealthcheck\n    * @param {Adapter} adapter - adapter instance to troubleshoot\n    * @param {Callback} callback - callback function\n    */\n  iapRunAdapterHealthcheck(callback) {\n    const meth = 'adapter-iapRunAdapterHealthcheck';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapRunAdapterHealthcheck(this, callback);\n    } catch (error) {\n      log.error(`${origin}: ${error}`);\n      return callback(null, error);\n    }\n  }\n\n  /**\n    * @summary runs connectivity check script for adapter\n    *\n    * @function iapRunAdapterConnectivity\n    * @param {Callback} callback - callback function\n    */\n  iapRunAdapterConnectivity(callback) {\n    const meth = 'adapter-iapRunAdapterConnectivity';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapRunAdapterConnectivity(callback);\n    } catch (error) {\n      log.error(`${origin}: ${error}`);\n      return callback(null, error);\n    }\n  }\n\n  /**\n    * @summary runs basicGet script for adapter\n    *\n    * @function iapRunAdapterBasicGet\n    * @param {number} maxCalls - how many GET endpoints to test (optional)\n    * @param {Callback} callback - callback function\n    */\n  iapRunAdapterBasicGet(maxCalls, callback) {\n    const meth = 'adapter-iapRunAdapterBasicGet';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapRunAdapterBasicGet(maxCalls, callback);\n    } catch (error) {\n      log.error(`${origin}: ${error}`);\n      return callback(null, error);\n    }\n  }\n\n  /**\n   * @summary moves entites into Mongo DB\n   *\n   * @function iapMoveAdapterEntitiesToDB\n   * @param {getCallback} callback - a callback function to return the result (Generics)\n   *                                  or the error\n   */\n  iapMoveAdapterEntitiesToDB(callback) {\n    const meth = 'adapter-iapMoveAdapterEntitiesToDB';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapMoveAdapterEntitiesToDB(callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /**\n   * @summary Deactivate adapter tasks\n   *\n   * @function iapDeactivateTasks\n   *\n   * @param {Array} tasks - List of tasks to deactivate\n   * @param {Callback} callback\n   */\n  iapDeactivateTasks(tasks, callback) {\n    const meth = 'adapter-iapDeactivateTasks';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapDeactivateTasks(tasks, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /**\n   * @summary Activate adapter tasks that have previously been deactivated\n   *\n   * @function iapActivateTasks\n   *\n   * @param {Array} tasks - List of tasks to activate\n   * @param {Callback} callback\n   */\n  iapActivateTasks(tasks, callback) {\n    const meth = 'adapter-iapActivateTasks';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapActivateTasks(tasks, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /* CACHE CALLS */\n  /**\n   * @summary Populate the cache for the given entities\n   *\n   * @function iapPopulateEntityCache\n   * @param {String/Array of Strings} entityType - the entity type(s) to populate\n   * @param {Callback} callback - whether the cache was updated or not for each entity type\n   *\n   * @returns status of the populate\n   */\n  iapPopulateEntityCache(entityTypes, callback) {\n    const meth = 'adapter-iapPopulateEntityCache';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapPopulateEntityCache(entityTypes, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /**\n   * @summary Retrieves data from cache for specified entity type\n   *\n   * @function iapRetrieveEntitiesCache\n   * @param {String} entityType - entity of which to retrieve\n   * @param {Object} options - settings of which data to return and how to return it\n   * @param {Callback} callback - the data if it was retrieved\n   */\n  iapRetrieveEntitiesCache(entityType, options, callback) {\n    const meth = 'adapter-iapCheckEiapRetrieveEntitiesCachentityCached';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapRetrieveEntitiesCache(entityType, options, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /* BROKER CALLS */\n  /**\n   * @summary Determines if this adapter supports any in a list of entities\n   *\n   * @function hasEntities\n   * @param {String} entityType - the entity type to check for\n   * @param {Array} entityList - the list of entities we are looking for\n   *\n   * @param {Callback} callback - A map where the entity is the key and the\n   *                              value is true or false\n   */\n  hasEntities(entityType, entityList, callback) {\n    const meth = 'adapter-hasEntities';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.hasEntities(entityType, entityList, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /**\n   * @summary Get Appliance that match the deviceName\n   *\n   * @function getDevice\n   * @param {String} deviceName - the deviceName to find (required)\n   *\n   * @param {getCallback} callback - a callback function to return the result\n   *                                 (appliance) or the error\n   */\n  getDevice(deviceName, callback) {\n    const meth = 'adapter-getDevice';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.getDevice(deviceName, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /**\n   * @summary Get Appliances that match the filter\n   *\n   * @function getDevicesFiltered\n   * @param {Object} options - the data to use to filter the appliances (optional)\n   *\n   * @param {getCallback} callback - a callback function to return the result\n   *                                 (appliances) or the error\n   */\n  getDevicesFiltered(options, callback) {\n    const meth = 'adapter-getDevicesFiltered';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.getDevicesFiltered(options, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /**\n   * @summary Gets the status for the provided appliance\n   *\n   * @function isAlive\n   * @param {String} deviceName - the deviceName of the appliance. (required)\n   *\n   * @param {configCallback} callback - callback function to return the result\n   *                                    (appliance isAlive) or the error\n   */\n  isAlive(deviceName, callback) {\n    const meth = 'adapter-isAlive';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.isAlive(deviceName, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /**\n   * @summary Gets a config for the provided Appliance\n   *\n   * @function getConfig\n   * @param {String} deviceName - the deviceName of the appliance. (required)\n   * @param {String} format - the desired format of the config. (optional)\n   *\n   * @param {configCallback} callback - callback function to return the result\n   *                                    (appliance config) or the error\n   */\n  getConfig(deviceName, format, callback) {\n    const meth = 'adapter-getConfig';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.getConfig(deviceName, format, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /**\n   * @summary Gets the device count from the system\n   *\n   * @function iapGetDeviceCount\n   *\n   * @param {getCallback} callback - callback function to return the result\n   *                                    (count) or the error\n   */\n  iapGetDeviceCount(callback) {\n    const meth = 'adapter-iapGetDeviceCount';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapGetDeviceCount(callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /* GENERIC ADAPTER REQUEST - allows extension of adapter without new calls being added */\n  /**\n   * Makes the requested generic call\n   *\n   * @function iapExpandedGenericAdapterRequest\n   * @param {Object} metadata - metadata for the call (optional).\n   *                 Can be a stringified Object.\n   * @param {String} uriPath - the path of the api call - do not include the host, port, base path or version (optional)\n   * @param {String} restMethod - the rest method (GET, POST, PUT, PATCH, DELETE) (optional)\n   * @param {Object} pathVars - the parameters to be put within the url path (optional).\n   *                 Can be a stringified Object.\n   * @param {Object} queryData - the parameters to be put on the url (optional).\n   *                 Can be a stringified Object.\n   * @param {Object} requestBody - the body to add to the request (optional).\n   *                 Can be a stringified Object.\n   * @param {Object} addlHeaders - additional headers to be put on the call (optional).\n   *                 Can be a stringified Object.\n   * @param {getCallback} callback - a callback function to return the result (Generics)\n   *                 or the error\n   */\n  iapExpandedGenericAdapterRequest(metadata, uriPath, restMethod, pathVars, queryData, requestBody, addlHeaders, callback) {\n    const meth = 'adapter-iapExpandedGenericAdapterRequest';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.iapExpandedGenericAdapterRequest(metadata, uriPath, restMethod, pathVars, queryData, requestBody, addlHeaders, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /**\n   * Makes the requested generic call\n   *\n   * @function genericAdapterRequest\n   * @param {String} uriPath - the path of the api call - do not include the host, port, base path or version (required)\n   * @param {String} restMethod - the rest method (GET, POST, PUT, PATCH, DELETE) (required)\n   * @param {Object} queryData - the parameters to be put on the url (optional).\n   *                 Can be a stringified Object.\n   * @param {Object} requestBody - the body to add to the request (optional).\n   *                 Can be a stringified Object.\n   * @param {Object} addlHeaders - additional headers to be put on the call (optional).\n   *                 Can be a stringified Object.\n   * @param {getCallback} callback - a callback function to return the result (Generics)\n   *                 or the error\n   */\n  genericAdapterRequest(uriPath, restMethod, queryData, requestBody, addlHeaders, callback) {\n    const meth = 'adapter-genericAdapterRequest';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.genericAdapterRequest(uriPath, restMethod, queryData, requestBody, addlHeaders, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /**\n   * Makes the requested generic call with no base path or version\n   *\n   * @function genericAdapterRequestNoBasePath\n   * @param {String} uriPath - the path of the api call - do not include the host, port, base path or version (required)\n   * @param {String} restMethod - the rest method (GET, POST, PUT, PATCH, DELETE) (required)\n   * @param {Object} queryData - the parameters to be put on the url (optional).\n   *                 Can be a stringified Object.\n   * @param {Object} requestBody - the body to add to the request (optional).\n   *                 Can be a stringified Object.\n   * @param {Object} addlHeaders - additional headers to be put on the call (optional).\n   *                 Can be a stringified Object.\n   * @param {getCallback} callback - a callback function to return the result (Generics)\n   *                 or the error\n   */\n  genericAdapterRequestNoBasePath(uriPath, restMethod, queryData, requestBody, addlHeaders, callback) {\n    const meth = 'adapter-genericAdapterRequestNoBasePath';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    try {\n      return super.genericAdapterRequestNoBasePath(uriPath, restMethod, queryData, requestBody, addlHeaders, callback);\n    } catch (err) {\n      log.error(`${origin}: ${err}`);\n      return callback(null, err);\n    }\n  }\n\n  /* INVENTORY CALLS */\n  /**\n   * @summary run the adapter lint script to return the results.\n   *\n   * @function iapRunAdapterLint\n   * @param {Callback} callback - callback function\n   */\n  iapRunAdapterLint(callback) {\n    const meth = 'adapter-iapRunAdapterLint';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    return super.iapRunAdapterLint(callback);\n  }\n\n  /**\n   * @summary run the adapter test scripts (baseunit and unit) to return the results.\n   *    can not run integration as there can be implications with that.\n   *\n   * @function iapRunAdapterTests\n   * @param {Callback} callback - callback function\n   */\n  iapRunAdapterTests(callback) {\n    const meth = 'adapter-iapRunAdapterTests';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    return super.iapRunAdapterTests(callback);\n  }\n\n  /**\n   * @summary provide inventory information abbout the adapter\n   *\n   * @function iapGetAdapterInventory\n   * @param {Callback} callback - callback function\n   */\n  iapGetAdapterInventory(callback) {\n    const meth = 'adapter-iapGetAdapterInventory';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    return super.iapGetAdapterInventory(callback);\n  }\n\n  /**\n   * @callback healthCallback\n   * @param {Object} result - the result of the get request (contains an id and a status)\n   */\n  /**\n   * @callback getCallback\n   * @param {Object} result - the result of the get request (entity/ies)\n   * @param {String} error - any error that occurred\n   */\n  /**\n   * @callback createCallback\n   * @param {Object} item - the newly created entity\n   * @param {String} error - any error that occurred\n   */\n  /**\n   * @callback updateCallback\n   * @param {String} status - the status of the update action\n   * @param {String} error - any error that occurred\n   */\n  /**\n   * @callback deleteCallback\n   * @param {String} status - the status of the delete action\n   * @param {String} error - any error that occurred\n   */\n\n  /**\n   * @summary REST API Reference\n   *\n   * @function getApiReference\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getApiReference(callback) {\n    const meth = 'adapter-getApiReference';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const reqObj = null;\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('APIReference', 'getApiReference', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getApiReference'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List abilities\n   *\n   * @function getAbilities\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getAbilities(callback) {\n    const meth = 'adapter-getAbilities';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const reqObj = null;\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Abilities', 'getAbilities', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getAbilities'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Test an ability\n   *\n   * @function getAbilitiesId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getAbilitiesId(id, callback) {\n    const meth = 'adapter-getAbilitiesId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Abilities', 'getAbilitiesId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getAbilitiesId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List installed add-ons\n   *\n   * @function getAddons\n   * @param {array} include - Array of additional details to include.\n   * @param {array} serviceIds - Filters the results, showing only add-ons for the given services\n   * @param {string} filter - Filters the results, showing only add-ons of the given type\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getAddons(include = 'services', serviceIds, filter = 'full_page_addon', callback) {\n    const meth = 'adapter-getAddons';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include, serviceIds, filter };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('AddOns', 'getAddons', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getAddons'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Install an add-on\n   *\n   * @function postAddons\n   * @param {object} addon - The add-on to be installed.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postAddons(addon, callback) {\n    const meth = 'adapter-postAddons';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = addon;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('AddOns', 'postAddons', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postAddons'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get an add-on\n   *\n   * @function getAddonsId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getAddonsId(id, callback) {\n    const meth = 'adapter-getAddonsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('AddOns', 'getAddonsId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getAddonsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete an add-on\n   *\n   * @function deleteAddonsId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteAddonsId(id, callback) {\n    const meth = 'adapter-deleteAddonsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('AddOns', 'deleteAddonsId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteAddonsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update an add-on\n   *\n   * @function putAddonsId\n   * @param {object} addon - The add-on to be updated.\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putAddonsId(addon, id, callback) {\n    const meth = 'adapter-putAddonsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = addon;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('AddOns', 'putAddonsId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putAddonsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List tags\n   *\n   * @function getTags\n   * @param {string} query - Filters the result, showing only the tags whose labels match the query.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getTags(query, callback) {\n    const meth = 'adapter-getTags';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { query };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('ContextualSearch', 'getTags', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getTags'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a tag\n   *\n   * @function postTags\n   * @param {object} tag - The tag to be created.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postTags(tag, callback) {\n    const meth = 'adapter-postTags';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = tag;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('ContextualSearch', 'postTags', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postTags'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get a tag\n   *\n   * @function getTagsId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getTagsId(id, callback) {\n    const meth = 'adapter-getTagsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('ContextualSearch', 'getTagsId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getTagsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete a tag\n   *\n   * @function deleteTagsId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteTagsId(id, callback) {\n    const meth = 'adapter-deleteTagsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('ContextualSearch', 'deleteTagsId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteTagsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get connected entities\n   *\n   * @function getTagsIdEntityType\n   * @param {string} id - id param\n   * @param {string} entityType - Type of entity related with the tag\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getTagsIdEntityType(id, entityType = 'users', callback) {\n    const meth = 'adapter-getTagsIdEntityType';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (entityType === undefined || entityType === null || entityType === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['entityType'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, entityType];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('ContextualSearch', 'getTagsIdEntityType', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getTagsIdEntityType'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get tags for entities\n   *\n   * @function getEntityTypeIdTags\n   * @param {string} entityType - Type of entity related with the tag\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getEntityTypeIdTags(entityType = 'users', id, callback) {\n    const meth = 'adapter-getEntityTypeIdTags';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (entityType === undefined || entityType === null || entityType === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['entityType'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [entityType, id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('ContextualSearch', 'getEntityTypeIdTags', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getEntityTypeIdTags'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Assign tags\n   *\n   * @function postEntityTypeIdChangeTags\n   * @param {string} entityType - Type of entity related with the tag\n   * @param {string} id - id param\n   * @param {object} addRemove - Tags to add to or remove from the entity.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postEntityTypeIdChangeTags(entityType = 'users', id, addRemove, callback) {\n    const meth = 'adapter-postEntityTypeIdChangeTags';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (entityType === undefined || entityType === null || entityType === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['entityType'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [entityType, id];\n    const bodyVars = addRemove;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('ContextualSearch', 'postEntityTypeIdChangeTags', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postEntityTypeIdChangeTags'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List escalation policies\n   *\n   * @function getEscalationPolicies\n   * @param {string} query - Filters the results, showing only the escalation policies whose names contain the query.\n   * @param {array} userIds - Filters the results, showing only escalation policies on which any of the users is a target.\n   * @param {array} teamIds - An array of team IDs. Only results related to these teams will be returned. Account must have the `teams` ability to use this parameter.\n   * @param {array} include - Array of additional details to include.\n   * @param {string} sortBy - Used to specify the field you wish to sort the results on.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getEscalationPolicies(query, userIds, teamIds, include = 'services', sortBy = 'name', callback) {\n    const meth = 'adapter-getEscalationPolicies';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { query, userIds, teamIds, include, sortBy };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('EscalationPolicies', 'getEscalationPolicies', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getEscalationPolicies'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create an escalation policy\n   *\n   * @function postEscalationPolicies\n   * @param {object} escalationPolicy - The escalation policy to be created.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postEscalationPolicies(escalationPolicy, callback) {\n    const meth = 'adapter-postEscalationPolicies';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = escalationPolicy;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('EscalationPolicies', 'postEscalationPolicies', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postEscalationPolicies'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get an escalation policy\n   *\n   * @function getEscalationPoliciesId\n   * @param {string} id - id param\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getEscalationPoliciesId(id, include = 'services', callback) {\n    const meth = 'adapter-getEscalationPoliciesId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('EscalationPolicies', 'getEscalationPoliciesId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getEscalationPoliciesId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete an escalation policy\n   *\n   * @function deleteEscalationPoliciesId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteEscalationPoliciesId(id, callback) {\n    const meth = 'adapter-deleteEscalationPoliciesId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('EscalationPolicies', 'deleteEscalationPoliciesId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteEscalationPoliciesId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update an escalation policy\n   *\n   * @function putEscalationPoliciesId\n   * @param {object} escalationPolicy - The escalation policy to be updated.\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putEscalationPoliciesId(escalationPolicy, id, callback) {\n    const meth = 'adapter-putEscalationPoliciesId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = escalationPolicy;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('EscalationPolicies', 'putEscalationPoliciesId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putEscalationPoliciesId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List extension schemas\n   *\n   * @function getExtensionSchemas\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getExtensionSchemas(callback) {\n    const meth = 'adapter-getExtensionSchemas';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const reqObj = null;\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('ExtensionSchemas', 'getExtensionSchemas', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getExtensionSchemas'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get an extension vendor\n   *\n   * @function getExtensionSchemasId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getExtensionSchemasId(id, callback) {\n    const meth = 'adapter-getExtensionSchemasId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('ExtensionSchemas', 'getExtensionSchemasId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getExtensionSchemasId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List extensions\n   *\n   * @function getExtensions\n   * @param {string} extensionObjectId - The id of the extension object you want to filter by.\n   * @param {string} query - Filters the result, showing only the extensions whose name matches the query.\n   * @param {string} extensionSchemaId - Filter the extensions by extension vendor id.\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getExtensions(extensionObjectId, query, extensionSchemaId, include = 'extension_objects', callback) {\n    const meth = 'adapter-getExtensions';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { extensionObjectId, query, extensionSchemaId, include };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Extensions', 'getExtensions', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getExtensions'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create an extension\n   *\n   * @function postExtensions\n   * @param {object} extension - The extension to be created\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postExtensions(extension, callback) {\n    const meth = 'adapter-postExtensions';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = extension;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Extensions', 'postExtensions', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postExtensions'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get an extension\n   *\n   * @function getExtensionsId\n   * @param {string} id - id param\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getExtensionsId(id, include = 'extension_schemas', callback) {\n    const meth = 'adapter-getExtensionsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Extensions', 'getExtensionsId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getExtensionsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete an extension\n   *\n   * @function deleteExtensionsId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteExtensionsId(id, callback) {\n    const meth = 'adapter-deleteExtensionsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Extensions', 'deleteExtensionsId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteExtensionsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update an extension\n   *\n   * @function putExtensionsId\n   * @param {object} extension - The extension to be updated.\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putExtensionsId(extension, id, callback) {\n    const meth = 'adapter-putExtensionsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = extension;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Extensions', 'putExtensionsId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putExtensionsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List incidents\n   *\n   * @function getIncidents\n   * @param {string} since - The start of the date range over which you want to search.\n   * @param {string} until - The end of the date range over which you want to search.\n   * @param {string} dateRange - When set to all, the since and until parameters and defaults are ignored.\n   * @param {array} statuses - Return only incidents with the given statuses. (More status codes may be introduced in the future.)\n   * @param {string} incidentKey - Incident de-duplication key. Incidents with child alerts do not have an incident key; querying by incident key will return incidents whose alerts have alert_key matching ...(description truncated)\n   * @param {array} serviceIds - Returns only the incidents associated with the passed service(s). This expects one or more service IDs.\n   * @param {array} teamIds - An array of team IDs. Only results related to these teams will be returned. Account must have the `teams` ability to use this parameter.\n   * @param {array} userIds - Returns only the incidents currently assigned to the passed user(s). This expects one or more user IDs. Note: When using the assigned_to_user filter, you will only receiv...(description truncated)\n   * @param {array} urgencies - Array of the urgencies of the incidents to be returned. Defaults to all urgencies. Account must have the `urgencies` ability to do this.\n   * @param {string} timeZone - Time zone in which dates in the result will be rendered.\n   * @param {array} sortBy - Used to specify both the field you wish to sort the results on (incident_number/created_at/resolved_at/urgency), as well as the direction (asc/desc) of the results. The s...(description truncated)\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getIncidents(since, until, dateRange = 'all', statuses = 'triggered', incidentKey, serviceIds, teamIds, userIds, urgencies = 'high', timeZone, sortBy, include = 'users', callback) {\n    const meth = 'adapter-getIncidents';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { since, until, dateRange, statuses, incidentKey, serviceIds, teamIds, userIds, urgencies, timeZone, sortBy, include };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'getIncidents', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getIncidents'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Manage incidents\n   *\n   * @function putIncidents\n   * @param {object} payload - payload param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putIncidents(payload, callback) {\n    const meth = 'adapter-putIncidents';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = payload;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'putIncidents', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putIncidents'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create an Incident\n   *\n   * @function postIncidents\n   * @param {object} incident - incident param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postIncidents(incident, callback) {\n    const meth = 'adapter-postIncidents';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = incident;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'postIncidents', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postIncidents'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Merge incidents\n   *\n   * @function putIncidentsIdMerge\n   * @param {string} id - id param\n   * @param {object} payload - payload param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putIncidentsIdMerge(id, payload, callback) {\n    const meth = 'adapter-putIncidentsIdMerge';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = payload;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'putIncidentsIdMerge', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putIncidentsIdMerge'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get an incident\n   *\n   * @function getIncidentsId\n   * @param {string} id - Either the id or number of the incident to retrieve.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getIncidentsId(id, callback) {\n    const meth = 'adapter-getIncidentsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'getIncidentsId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getIncidentsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update an incident\n   *\n   * @function putIncidentsId\n   * @param {string} id - The id of the incident to update.\n   * @param {object} payload - payload param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putIncidentsId(id, payload, callback) {\n    const meth = 'adapter-putIncidentsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = payload;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'putIncidentsId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putIncidentsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List alerts for an incident\n   *\n   * @function getIncidentsIdAlerts\n   * @param {string} id - id param\n   * @param {array} statuses - Return only alerts with the given statuses. (More status codes may be introduced in the future.)\n   * @param {string} alertKey - Alert de-duplication key.\n   * @param {array} sortBy - Used to specify both the field you wish to sort the results on (created_at/resolved_at), as well as the direction (asc/desc) of the results. The sort_by field and directi...(description truncated)\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getIncidentsIdAlerts(id, statuses = 'triggered', alertKey, sortBy, include, callback) {\n    const meth = 'adapter-getIncidentsIdAlerts';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { statuses, alertKey, sortBy, include };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'getIncidentsIdAlerts', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getIncidentsIdAlerts'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Manage alerts\n   *\n   * @function putIncidentsIdAlerts\n   * @param {string} id - id param\n   * @param {object} alerts - alerts param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putIncidentsIdAlerts(id, alerts, callback) {\n    const meth = 'adapter-putIncidentsIdAlerts';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = alerts;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'putIncidentsIdAlerts', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putIncidentsIdAlerts'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get an alert\n   *\n   * @function getIncidentsIdAlertsAlertId\n   * @param {string} id - id param\n   * @param {string} alertId - The id of the alert to retrieve.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getIncidentsIdAlertsAlertId(id, alertId, callback) {\n    const meth = 'adapter-getIncidentsIdAlertsAlertId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (alertId === undefined || alertId === null || alertId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['alertId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, alertId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'getIncidentsIdAlertsAlertId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getIncidentsIdAlertsAlertId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update an alert\n   *\n   * @function putIncidentsIdAlertsAlertId\n   * @param {string} id - id param\n   * @param {string} alertId - The id of the alert to update.\n   * @param {object} alert - The parameters of the alert to update.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putIncidentsIdAlertsAlertId(id, alertId, alert, callback) {\n    const meth = 'adapter-putIncidentsIdAlertsAlertId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (alertId === undefined || alertId === null || alertId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['alertId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, alertId];\n    const bodyVars = alert;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'putIncidentsIdAlertsAlertId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putIncidentsIdAlertsAlertId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List log entries for an incident\n   *\n   * @function getIncidentsIdLogEntries\n   * @param {string} id - id param\n   * @param {string} timeZone - Time zone in which dates in the result will be rendered.\n   * @param {boolean} isOverview - If `true`, will return a subset of log entries that show only the most important changes to the incident.\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getIncidentsIdLogEntries(id, timeZone, isOverview, include = 'incidents', callback) {\n    const meth = 'adapter-getIncidentsIdLogEntries';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { timeZone, isOverview, include };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'getIncidentsIdLogEntries', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getIncidentsIdLogEntries'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List notes for an incident\n   *\n   * @function getIncidentsIdNotes\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getIncidentsIdNotes(id, callback) {\n    const meth = 'adapter-getIncidentsIdNotes';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'getIncidentsIdNotes', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getIncidentsIdNotes'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a note on an incident\n   *\n   * @function postIncidentsIdNotes\n   * @param {string} id - id param\n   * @param {object} payload - payload param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postIncidentsIdNotes(id, payload, callback) {\n    const meth = 'adapter-postIncidentsIdNotes';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = payload;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'postIncidentsIdNotes', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postIncidentsIdNotes'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a status update on an incident\n   *\n   * @function postIncidentsIdStatusUpdates\n   * @param {string} id - id param\n   * @param {object} payload - payload param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postIncidentsIdStatusUpdates(id, payload, callback) {\n    const meth = 'adapter-postIncidentsIdStatusUpdates';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = payload;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'postIncidentsIdStatusUpdates', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postIncidentsIdStatusUpdates'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a responder request for an incident\n   *\n   * @function postIncidentsIdResponderRequests\n   * @param {string} id - id param\n   * @param {object} payload - payload param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postIncidentsIdResponderRequests(id, payload, callback) {\n    const meth = 'adapter-postIncidentsIdResponderRequests';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = payload;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'postIncidentsIdResponderRequests', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postIncidentsIdResponderRequests'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Snooze an incident\n   *\n   * @function postIncidentsIdSnooze\n   * @param {string} id - id param\n   * @param {object} payload - payload param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postIncidentsIdSnooze(id, payload, callback) {\n    const meth = 'adapter-postIncidentsIdSnooze';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = payload;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Incidents', 'postIncidentsIdSnooze', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postIncidentsIdSnooze'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List priorities\n   *\n   * @function getPriorities\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getPriorities(callback) {\n    const meth = 'adapter-getPriorities';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const reqObj = null;\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Priorities', 'getPriorities', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getPriorities'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Run a response play\n   *\n   * @function postResponsePlaysResponsePlayIdRun\n   * @param {string} responsePlayId - The response play ID of the response play associated with the request.\n   * @param {object} payload - payload param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postResponsePlaysResponsePlayIdRun(responsePlayId, payload, callback) {\n    const meth = 'adapter-postResponsePlaysResponsePlayIdRun';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (responsePlayId === undefined || responsePlayId === null || responsePlayId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['responsePlayId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [responsePlayId];\n    const bodyVars = payload;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('ResponsePlays', 'postResponsePlaysResponsePlayIdRun', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postResponsePlaysResponsePlayIdRun'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List log entries\n   *\n   * @function getLogEntries\n   * @param {string} timeZone - Time zone in which dates in the result will be rendered.\n   * @param {string} since - The start of the date range over which you want to search.\n   * @param {string} until - The end of the date range over which you want to search.\n   * @param {boolean} isOverview - If `true`, will return a subset of log entries that show only the most important changes to the incident.\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getLogEntries(timeZone, since, until, isOverview, include = 'incidents', callback) {\n    const meth = 'adapter-getLogEntries';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { timeZone, since, until, isOverview, include };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('LogEntries', 'getLogEntries', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getLogEntries'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get a log entry\n   *\n   * @function getLogEntriesId\n   * @param {string} timeZone - Time zone in which dates in the result will be rendered.\n   * @param {string} id - id param\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getLogEntriesId(timeZone, id, include = 'incidents', callback) {\n    const meth = 'adapter-getLogEntriesId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { timeZone, include };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('LogEntries', 'getLogEntriesId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getLogEntriesId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List maintenance windows\n   *\n   * @function getMaintenanceWindows\n   * @param {array} teamIds - An array of team IDs. Only results related to these teams will be returned. Account must have the `teams` ability to use this parameter.\n   * @param {array} serviceIds - An array of service IDs. Only results related to these services will be returned.\n   * @param {array} include - Array of additional details to include.\n   * @param {string} filter - Only return maintenance windows in a given state.\n   * @param {string} query - Filters the results, showing only the maintenance windows whose descriptions contain the query.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getMaintenanceWindows(teamIds, serviceIds, include = 'teams', filter = 'past', query, callback) {\n    const meth = 'adapter-getMaintenanceWindows';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { teamIds, serviceIds, include, filter, query };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('MaintenanceWindows', 'getMaintenanceWindows', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getMaintenanceWindows'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a maintenance window\n   *\n   * @function postMaintenanceWindows\n   * @param {object} maintenanceWindow - The maintenance window object.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postMaintenanceWindows(maintenanceWindow, callback) {\n    const meth = 'adapter-postMaintenanceWindows';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = maintenanceWindow;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('MaintenanceWindows', 'postMaintenanceWindows', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postMaintenanceWindows'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get a maintenance window\n   *\n   * @function getMaintenanceWindowsId\n   * @param {string} id - id param\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getMaintenanceWindowsId(id, include = 'teams', callback) {\n    const meth = 'adapter-getMaintenanceWindowsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('MaintenanceWindows', 'getMaintenanceWindowsId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getMaintenanceWindowsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete or end a maintenance window\n   *\n   * @function deleteMaintenanceWindowsId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteMaintenanceWindowsId(id, callback) {\n    const meth = 'adapter-deleteMaintenanceWindowsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('MaintenanceWindows', 'deleteMaintenanceWindowsId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteMaintenanceWindowsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update a maintenance window\n   *\n   * @function putMaintenanceWindowsId\n   * @param {object} maintenanceWindow - The maintenance window to be updated.\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putMaintenanceWindowsId(maintenanceWindow, id, callback) {\n    const meth = 'adapter-putMaintenanceWindowsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = maintenanceWindow;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('MaintenanceWindows', 'putMaintenanceWindowsId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putMaintenanceWindowsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List notifications\n   *\n   * @function getNotifications\n   * @param {string} timeZone - Time zone in which dates in the result will be rendered.\n   * @param {string} since - The start of the date range over which you want to search. The time element is optional.\n   * @param {string} until - The end of the date range over which you want to search. This should be in the same format as since. The size of the date range must be less than 3 months.\n   * @param {string} filter - Return notification of this type only.\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getNotifications(timeZone, since, until, filter = 'sms_notification', include = 'users', callback) {\n    const meth = 'adapter-getNotifications';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (since === undefined || since === null || since === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['since'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (until === undefined || until === null || until === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['until'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { timeZone, since, until, filter, include };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Notifications', 'getNotifications', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getNotifications'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List all of the on-calls\n   *\n   * @function getOncalls\n   * @param {string} timeZone - Time zone in which dates in the result will be rendered.\n   * @param {array} include - Array of additional details to include.\n   * @param {array} userIds - Filters the results, showing only on-calls for the specified user IDs.\n   * @param {array} escalationPolicyIds - Filters the results, showing only on-calls for the specified escalation policy IDs.\n   * @param {array} scheduleIds - Filters the results, showing only on-calls for the specified schedule IDs. If `null` is provided in the array, it includes permanent on-calls due to direct user escalatio...(description truncated)\n   * @param {string} since - The start of the time range over which you want to search. If an on-call period overlaps with the range, it will be included in the result. Defaults to current time. The ...(description truncated)\n   * @param {string} until - The end of the time range over which you want to search. If an on-call period overlaps with the range, it will be included in the result. Defaults to current time. The se...(description truncated)\n   * @param {boolean} earliest - This will filter on-calls such that only the earliest on-call for each combination of escalation policy, escalation level, and user is returned. This is useful for determ...(description truncated)\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getOncalls(timeZone, include = 'escalation_policies', userIds, escalationPolicyIds, scheduleIds, since, until, earliest, callback) {\n    const meth = 'adapter-getOncalls';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { timeZone, include, userIds, escalationPolicyIds, scheduleIds, since, until, earliest };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('OnCalls', 'getOncalls', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getOncalls'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List schedules\n   *\n   * @function getSchedules\n   * @param {string} query - Filters the result, showing only the schedules whose name matches the query.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSchedules(query, callback) {\n    const meth = 'adapter-getSchedules';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { query };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Schedules', 'getSchedules', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getSchedules'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a schedule\n   *\n   * @function postSchedules\n   * @param {boolean} overflow - Any on-call schedule entries that pass the date range bounds will be truncated at the bounds, unless the parameter `overflow=true` is passed. This parameter defaults to f...(description truncated)\n   * @param {object} schedule - The schedule to be created.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postSchedules(overflow, schedule, callback) {\n    const meth = 'adapter-postSchedules';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { overflow };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = schedule;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Schedules', 'postSchedules', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postSchedules'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Preview a schedule\n   *\n   * @function postSchedulesPreview\n   * @param {string} since - The start of the date range over which you want to search.\n   * @param {string} until - The end of the date range over which you want to search.\n   * @param {boolean} overflow - Any on-call schedule entries that pass the date range bounds will be truncated at the bounds, unless the parameter `overflow=true` is passed. This parameter defaults to f...(description truncated)\n   * @param {object} schedule - The schedule to be previewed.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postSchedulesPreview(since, until, overflow, schedule, callback) {\n    const meth = 'adapter-postSchedulesPreview';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { since, until, overflow };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = schedule;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Schedules', 'postSchedulesPreview', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postSchedulesPreview'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get a schedule\n   *\n   * @function getSchedulesId\n   * @param {string} timeZone - Time zone in which dates in the result will be rendered.\n   * @param {string} since - The start of the date range over which you want to search.\n   * @param {string} until - The end of the date range over which you want to search.\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSchedulesId(timeZone, since, until, id, callback) {\n    const meth = 'adapter-getSchedulesId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { timeZone, since, until };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Schedules', 'getSchedulesId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getSchedulesId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete a schedule\n   *\n   * @function deleteSchedulesId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteSchedulesId(id, callback) {\n    const meth = 'adapter-deleteSchedulesId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Schedules', 'deleteSchedulesId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteSchedulesId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update a schedule\n   *\n   * @function putSchedulesId\n   * @param {string} id - id param\n   * @param {boolean} overflow - Any on-call schedule entries that pass the date range bounds will be truncated at the bounds, unless the parameter `overflow=true` is passed. This parameter defaults to f...(description truncated)\n   * @param {object} schedule - The schedule to be updated.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putSchedulesId(id, overflow, schedule, callback) {\n    const meth = 'adapter-putSchedulesId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { overflow };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = schedule;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Schedules', 'putSchedulesId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putSchedulesId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List overrides\n   *\n   * @function getSchedulesIdOverrides\n   * @param {string} id - id param\n   * @param {string} since - The start of the date range over which you want to search.\n   * @param {string} until - The end of the date range over which you want to search.\n   * @param {boolean} editable - When this parameter is present, only editable overrides will be returned. The result will only include the id of the override if this parameter is present. Only future ov...(description truncated)\n   * @param {boolean} overflow - Any on-call schedule entries that pass the date range bounds will be truncated at the bounds, unless the parameter overflow=true is passed. This parameter defaults to fal...(description truncated)\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSchedulesIdOverrides(id, since, until, editable, overflow, callback) {\n    const meth = 'adapter-getSchedulesIdOverrides';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (since === undefined || since === null || since === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['since'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (until === undefined || until === null || until === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['until'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { since, until, editable, overflow };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Schedules', 'getSchedulesIdOverrides', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getSchedulesIdOverrides'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create an override\n   *\n   * @function postSchedulesIdOverrides\n   * @param {string} id - id param\n   * @param {object} override - The override to be created\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postSchedulesIdOverrides(id, override, callback) {\n    const meth = 'adapter-postSchedulesIdOverrides';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (override === undefined || override === null || override === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['override'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = override;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Schedules', 'postSchedulesIdOverrides', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postSchedulesIdOverrides'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete an override\n   *\n   * @function deleteSchedulesIdOverridesOverrideId\n   * @param {string} id - id param\n   * @param {string} overrideId - The override ID on the schedule.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteSchedulesIdOverridesOverrideId(id, overrideId, callback) {\n    const meth = 'adapter-deleteSchedulesIdOverridesOverrideId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (overrideId === undefined || overrideId === null || overrideId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['overrideId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, overrideId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Schedules', 'deleteSchedulesIdOverridesOverrideId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteSchedulesIdOverridesOverrideId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List users on call\n   *\n   * @function getSchedulesIdUsers\n   * @param {string} id - id param\n   * @param {string} since - The start of the date range over which you want to search.\n   * @param {string} until - The end of the date range over which you want to search.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSchedulesIdUsers(id, since, until, callback) {\n    const meth = 'adapter-getSchedulesIdUsers';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { since, until };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Schedules', 'getSchedulesIdUsers', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getSchedulesIdUsers'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List services\n   *\n   * @function getServices\n   * @param {array} teamIds - An array of team IDs. Only results related to these teams will be returned. Account must have the `teams` ability to use this parameter.\n   * @param {string} timeZone - Time zone in which dates in the result will be rendered.\n   * @param {string} sortBy - Used to specify the field you wish to sort the results on.\n   * @param {string} query - Filters the result, showing only the services whose name or service_key matches the query.\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getServices(teamIds, timeZone, sortBy = 'name', query, include = 'escalation_policies', callback) {\n    const meth = 'adapter-getServices';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { teamIds, timeZone, sortBy, query, include };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Services', 'getServices', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getServices'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a service\n   *\n   * @function postServices\n   * @param {object} service - The service to be created\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postServices(service, callback) {\n    const meth = 'adapter-postServices';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = service;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Services', 'postServices', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postServices'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get a service\n   *\n   * @function getServicesId\n   * @param {string} id - id param\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getServicesId(id, include = 'escalation_policies', callback) {\n    const meth = 'adapter-getServicesId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Services', 'getServicesId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getServicesId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete a service\n   *\n   * @function deleteServicesId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteServicesId(id, callback) {\n    const meth = 'adapter-deleteServicesId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Services', 'deleteServicesId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteServicesId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update a service\n   *\n   * @function putServicesId\n   * @param {object} service - The service to be updated.\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putServicesId(service, id, callback) {\n    const meth = 'adapter-putServicesId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = service;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Services', 'putServicesId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putServicesId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a new integration\n   *\n   * @function postServicesIdIntegrations\n   * @param {object} integration - The integration to be created\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postServicesIdIntegrations(integration, id, callback) {\n    const meth = 'adapter-postServicesIdIntegrations';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = integration;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Services', 'postServicesIdIntegrations', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postServicesIdIntegrations'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update an existing integration\n   *\n   * @function putServicesIdIntegrationsIntegrationId\n   * @param {object} integration - The integration to be updated\n   * @param {string} id - id param\n   * @param {string} integrationId - The integration ID on the service.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putServicesIdIntegrationsIntegrationId(integration, id, integrationId, callback) {\n    const meth = 'adapter-putServicesIdIntegrationsIntegrationId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (integrationId === undefined || integrationId === null || integrationId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['integrationId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, integrationId];\n    const bodyVars = integration;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Services', 'putServicesIdIntegrationsIntegrationId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putServicesIdIntegrationsIntegrationId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary View an integration\n   *\n   * @function getServicesIdIntegrationsIntegrationId\n   * @param {string} id - id param\n   * @param {string} integrationId - The integration ID on the service.\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getServicesIdIntegrationsIntegrationId(id, integrationId, include = 'services', callback) {\n    const meth = 'adapter-getServicesIdIntegrationsIntegrationId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (integrationId === undefined || integrationId === null || integrationId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['integrationId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include };\n    const queryParams = {};\n    const pathVars = [id, integrationId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Services', 'getServicesIdIntegrationsIntegrationId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getServicesIdIntegrationsIntegrationId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a team\n   *\n   * @function postTeams\n   * @param {object} team - The team to be created.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postTeams(team, callback) {\n    const meth = 'adapter-postTeams';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = team;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Teams', 'postTeams', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postTeams'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List teams\n   *\n   * @function getTeams\n   * @param {string} query - Filters the result, showing only the teams whose names or email addresses match the query.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getTeams(query, callback) {\n    const meth = 'adapter-getTeams';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { query };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Teams', 'getTeams', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getTeams'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get a team\n   *\n   * @function getTeamsId\n   * @param {string} id - id param\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getTeamsId(id, include = 'privileges', callback) {\n    const meth = 'adapter-getTeamsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Teams', 'getTeamsId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getTeamsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete a team\n   *\n   * @function deleteTeamsId\n   * @param {string} reassignmentTeam - All open incidents on the team being deleted will be reassigned to the reassignment team. If an open incident exists on both the reassignment team and the team being dele...(description truncated)\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteTeamsId(reassignmentTeam, id, callback) {\n    const meth = 'adapter-deleteTeamsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { reassignmentTeam };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Teams', 'deleteTeamsId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteTeamsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update a team\n   *\n   * @function putTeamsId\n   * @param {object} team - The team to be updated.\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putTeamsId(team, id, callback) {\n    const meth = 'adapter-putTeamsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = team;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Teams', 'putTeamsId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putTeamsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get information about members on a team\n   *\n   * @function getTeamsIdMembers\n   * @param {string} id - id param\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getTeamsIdMembers(id, include = 'users', callback) {\n    const meth = 'adapter-getTeamsIdMembers';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Teams', 'getTeamsIdMembers', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getTeamsIdMembers'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Remove an escalation policy from a team\n   *\n   * @function deleteTeamsIdEscalationPoliciesEscalationPolicyId\n   * @param {string} id - id param\n   * @param {string} escalationPolicyId - The escalation policy ID on the team.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteTeamsIdEscalationPoliciesEscalationPolicyId(id, escalationPolicyId, callback) {\n    const meth = 'adapter-deleteTeamsIdEscalationPoliciesEscalationPolicyId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (escalationPolicyId === undefined || escalationPolicyId === null || escalationPolicyId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['escalationPolicyId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, escalationPolicyId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Teams', 'deleteTeamsIdEscalationPoliciesEscalationPolicyId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteTeamsIdEscalationPoliciesEscalationPolicyId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Add an escalation policy to a team\n   *\n   * @function putTeamsIdEscalationPoliciesEscalationPolicyId\n   * @param {string} id - id param\n   * @param {string} escalationPolicyId - The escalation policy ID on the team.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putTeamsIdEscalationPoliciesEscalationPolicyId(id, escalationPolicyId, callback) {\n    const meth = 'adapter-putTeamsIdEscalationPoliciesEscalationPolicyId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (escalationPolicyId === undefined || escalationPolicyId === null || escalationPolicyId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['escalationPolicyId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, escalationPolicyId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Teams', 'putTeamsIdEscalationPoliciesEscalationPolicyId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putTeamsIdEscalationPoliciesEscalationPolicyId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Remove a user from a team\n   *\n   * @function deleteTeamsIdUsersUserId\n   * @param {string} id - id param\n   * @param {string} userId - The user ID on the team.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteTeamsIdUsersUserId(id, userId, callback) {\n    const meth = 'adapter-deleteTeamsIdUsersUserId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (userId === undefined || userId === null || userId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['userId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, userId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Teams', 'deleteTeamsIdUsersUserId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteTeamsIdUsersUserId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Add a user to a team\n   *\n   * @function putTeamsIdUsersUserId\n   * @param {string} id - id param\n   * @param {string} userId - The user ID on the team.\n   * @param {object} role - The role of the user on the team.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putTeamsIdUsersUserId(id, userId, role, callback) {\n    const meth = 'adapter-putTeamsIdUsersUserId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (userId === undefined || userId === null || userId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['userId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, userId];\n    const bodyVars = role;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Teams', 'putTeamsIdUsersUserId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putTeamsIdUsersUserId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List users\n   *\n   * @function getUsers\n   * @param {string} query - Filters the result, showing only the users whose names or email addresses match the query.\n   * @param {array} teamIds - An array of team IDs. Only results related to these teams will be returned. Account must have the `teams` ability to use this parameter.\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getUsers(query, teamIds, include = 'contact_methods', callback) {\n    const meth = 'adapter-getUsers';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { query, teamIds, include };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'getUsers', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getUsers'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a user\n   *\n   * @function postUsers\n   * @param {object} user - The user to be created.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postUsers(user, callback) {\n    const meth = 'adapter-postUsers';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = user;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // if you want to expose addlHeaders to workflow, add it to the method signature here and in pronghorn.json\n    let thisHeaderData = null;\n    // if the additional headers was passed in as a string parse the json into an object\n    if (thisHeaderData !== null && thisHeaderData.constructor === String) {\n      try {\n        // parse the additional headers object that was passed in\n        thisHeaderData = JSON.parse(thisHeaderData);\n      } catch (err) {\n        const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'addlHeaders string must be a stringified JSON', [], null, null, null);\n        log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n        return callback(null, errorObj);\n      }\n    } else if (thisHeaderData === null) {\n      thisHeaderData = { from: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams,\n      addlHeaders: thisHeaderData\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'postUsers', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postUsers'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get a user\n   *\n   * @function getUsersId\n   * @param {string} id - id param\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getUsersId(id, include = 'contact_methods', callback) {\n    const meth = 'adapter-getUsersId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'getUsersId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getUsersId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete a user\n   *\n   * @function deleteUsersId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteUsersId(id, callback) {\n    const meth = 'adapter-deleteUsersId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'deleteUsersId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteUsersId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update a user\n   *\n   * @function putUsersId\n   * @param {object} user - The user to be updated.\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putUsersId(user, id, callback) {\n    const meth = 'adapter-putUsersId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = user;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'putUsersId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putUsersId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get the current user\n   *\n   * @function getUsersMe\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getUsersMe(include = 'contact_methods', callback) {\n    const meth = 'adapter-getUsersMe';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include };\n    const queryParams = {};\n    const pathVars = [];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'getUsersMe', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getUsersMe'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List a user's contact methods\n   *\n   * @function getUsersIdContactMethods\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getUsersIdContactMethods(id, callback) {\n    const meth = 'adapter-getUsersIdContactMethods';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'getUsersIdContactMethods', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getUsersIdContactMethods'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a user contact method\n   *\n   * @function postUsersIdContactMethods\n   * @param {string} id - id param\n   * @param {object} contactMethod - The contact method to be created.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postUsersIdContactMethods(id, contactMethod, callback) {\n    const meth = 'adapter-postUsersIdContactMethods';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = contactMethod;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'postUsersIdContactMethods', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postUsersIdContactMethods'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get a user's contact method\n   *\n   * @function getUsersIdContactMethodsContactMethodId\n   * @param {string} id - id param\n   * @param {string} contactMethodId - The contact method ID on the user.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getUsersIdContactMethodsContactMethodId(id, contactMethodId, callback) {\n    const meth = 'adapter-getUsersIdContactMethodsContactMethodId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (contactMethodId === undefined || contactMethodId === null || contactMethodId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['contactMethodId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, contactMethodId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'getUsersIdContactMethodsContactMethodId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getUsersIdContactMethodsContactMethodId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete a user's contact method\n   *\n   * @function deleteUsersIdContactMethodsContactMethodId\n   * @param {string} id - id param\n   * @param {string} contactMethodId - The contact method ID on the user.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteUsersIdContactMethodsContactMethodId(id, contactMethodId, callback) {\n    const meth = 'adapter-deleteUsersIdContactMethodsContactMethodId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (contactMethodId === undefined || contactMethodId === null || contactMethodId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['contactMethodId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, contactMethodId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'deleteUsersIdContactMethodsContactMethodId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteUsersIdContactMethodsContactMethodId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update a user's contact method\n   *\n   * @function putUsersIdContactMethodsContactMethodId\n   * @param {string} id - id param\n   * @param {string} contactMethodId - The contact method ID on the user.\n   * @param {object} user - The user's contact method to be updated.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putUsersIdContactMethodsContactMethodId(id, contactMethodId, user, callback) {\n    const meth = 'adapter-putUsersIdContactMethodsContactMethodId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (contactMethodId === undefined || contactMethodId === null || contactMethodId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['contactMethodId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, contactMethodId];\n    const bodyVars = user;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'putUsersIdContactMethodsContactMethodId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putUsersIdContactMethodsContactMethodId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List a user's notification rules\n   *\n   * @function getUsersIdNotificationRules\n   * @param {string} id - id param\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getUsersIdNotificationRules(id, include = 'contact_methods', callback) {\n    const meth = 'adapter-getUsersIdNotificationRules';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include };\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'getUsersIdNotificationRules', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getUsersIdNotificationRules'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Create a user notification rule\n   *\n   * @function postUsersIdNotificationRules\n   * @param {string} id - id param\n   * @param {object} notificationRule - The notification rule to be created.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postUsersIdNotificationRules(id, notificationRule, callback) {\n    const meth = 'adapter-postUsersIdNotificationRules';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = notificationRule;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'postUsersIdNotificationRules', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['postUsersIdNotificationRules'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get a user's notification rule\n   *\n   * @function getUsersIdNotificationRulesNotificationRuleId\n   * @param {string} id - id param\n   * @param {string} notificationRuleId - The notification rule ID on the user.\n   * @param {array} include - Array of additional details to include.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getUsersIdNotificationRulesNotificationRuleId(id, notificationRuleId, include = 'contact_methods', callback) {\n    const meth = 'adapter-getUsersIdNotificationRulesNotificationRuleId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (notificationRuleId === undefined || notificationRuleId === null || notificationRuleId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['notificationRuleId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { include };\n    const queryParams = {};\n    const pathVars = [id, notificationRuleId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'getUsersIdNotificationRulesNotificationRuleId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getUsersIdNotificationRulesNotificationRuleId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete a user's notification rule\n   *\n   * @function deleteUsersIdNotificationRulesNotificationRuleId\n   * @param {string} id - id param\n   * @param {string} notificationRuleId - The notification rule ID on the user.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteUsersIdNotificationRulesNotificationRuleId(id, notificationRuleId, callback) {\n    const meth = 'adapter-deleteUsersIdNotificationRulesNotificationRuleId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (notificationRuleId === undefined || notificationRuleId === null || notificationRuleId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['notificationRuleId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, notificationRuleId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'deleteUsersIdNotificationRulesNotificationRuleId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteUsersIdNotificationRulesNotificationRuleId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Update a user's notification rule\n   *\n   * @function putUsersIdNotificationRulesNotificationRuleId\n   * @param {string} id - id param\n   * @param {string} notificationRuleId - The notification rule ID on the user.\n   * @param {object} notificationRule - The user's notification rule to be updated.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putUsersIdNotificationRulesNotificationRuleId(id, notificationRuleId, notificationRule, callback) {\n    const meth = 'adapter-putUsersIdNotificationRulesNotificationRuleId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (notificationRuleId === undefined || notificationRuleId === null || notificationRuleId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['notificationRuleId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, notificationRuleId];\n    const bodyVars = notificationRule;\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'putUsersIdNotificationRulesNotificationRuleId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['putUsersIdNotificationRulesNotificationRuleId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List a user's active sessions\n   *\n   * @function getUsersIdSessions\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getUsersIdSessions(id, callback) {\n    const meth = 'adapter-getUsersIdSessions';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'getUsersIdSessions', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getUsersIdSessions'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete all user sessions\n   *\n   * @function deleteUsersIdSessions\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteUsersIdSessions(id, callback) {\n    const meth = 'adapter-deleteUsersIdSessions';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'deleteUsersIdSessions', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteUsersIdSessions'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get a user's session\n   *\n   * @function getUsersIdSessionsTypeSessionId\n   * @param {string} id - id param\n   * @param {string} type - The session type for the user session ID.\n   * @param {string} sessionId - The session ID for the user.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getUsersIdSessionsTypeSessionId(id, type, sessionId, callback) {\n    const meth = 'adapter-getUsersIdSessionsTypeSessionId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (type === undefined || type === null || type === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['type'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (sessionId === undefined || sessionId === null || sessionId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['sessionId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, type, sessionId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'getUsersIdSessionsTypeSessionId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getUsersIdSessionsTypeSessionId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Delete a user's session\n   *\n   * @function deleteUsersIdSessionsTypeSessionId\n   * @param {string} id - id param\n   * @param {string} type - The session type for the user session ID.\n   * @param {string} sessionId - The session ID for the user.\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteUsersIdSessionsTypeSessionId(id, type, sessionId, callback) {\n    const meth = 'adapter-deleteUsersIdSessionsTypeSessionId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (type === undefined || type === null || type === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['type'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (sessionId === undefined || sessionId === null || sessionId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['sessionId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id, type, sessionId];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Users', 'deleteUsersIdSessionsTypeSessionId', reqObj, false, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['deleteUsersIdSessionsTypeSessionId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary List vendors\n   *\n   * @function getVendors\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getVendors(callback) {\n    const meth = 'adapter-getVendors';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const reqObj = null;\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Vendors', 'getVendors', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getVendors'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n\n  /**\n   * @summary Get a vendor\n   *\n   * @function getVendorsId\n   * @param {string} id - id param\n   * @param {getCallback} callback - a callback function to return the result\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getVendorsId(id, callback) {\n    const meth = 'adapter-getVendorsId';\n    const origin = `${this.id}-${meth}`;\n    log.trace(origin);\n\n    if (this.suspended && this.suspendMode === 'error') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU VALIDATE DATA */\n    if (id === undefined || id === null || id === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['id'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n\n    /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = {};\n    const queryParams = {};\n    const pathVars = [id];\n    const bodyVars = {};\n\n    // loop in template. long callback arg name to avoid identifier conflicts\n    Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {\n      if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null\n        && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {\n        queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];\n      }\n    });\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders\n    const reqObj = {\n      payload: bodyVars,\n      uriPathVars: pathVars,\n      uriQuery: queryParams\n    };\n\n    try {\n      // Make the call -\n      // identifyRequest(entity, action, requestObj, returnDataFlag, callback)\n      return this.requestHandlerInst.identifyRequest('Vendors', 'getVendorsId', reqObj, true, (irReturnData, irReturnError) => {\n        // if we received an error or their is no response on the results\n        // return an error\n        if (irReturnError) {\n          /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */\n          return callback(null, irReturnError);\n        }\n        if (!Object.hasOwnProperty.call(irReturnData, 'response')) {\n          const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['getVendorsId'], null, null, null);\n          log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n          return callback(null, errorObj);\n        }\n\n        /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */\n        // return the response\n        return callback(irReturnData, null);\n      });\n    } catch (ex) {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n  }\n}\n\nmodule.exports = Pagerduty;\n"]}