{"version":3,"sources":["jsdelivr-header.js","/npm/@itentialopensource/adapter-imperva@0.8.3/adapter.js"],"names":[],"mappings":"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","file":"/npm/@itentialopensource/adapter-imperva@0.8.3/adapter.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@itentialopensource/adapter-imperva@0.8.3/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 Imperva\n */\n\n/* GENERAL ADAPTER FUNCTIONS */\nclass Imperva extends AdapterBaseCl {\n  /**\n   * Imperva 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.iapGetAdapterWorkflowFunctions();\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   * @function postSitesSiteIdRules\n   * @pronghornType method\n   * @name postSitesSiteIdRules\n   * @summary Create rule\n   *\n   * @param {number} siteId - Site id\n   * @param {object} rule - The rule to create\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /postSitesSiteIdRules\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postSitesSiteIdRules(siteId, rule, callback) {\n    const meth = 'adapter-postSitesSiteIdRules';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (rule === undefined || rule === null || rule === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['rule'], 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 = [siteId];\n    const bodyVars = rule;\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Rules', 'postSitesSiteIdRules', 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', ['postSitesSiteIdRules'], 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   * @function putSitesSiteIdRulesRuleId\n   * @pronghornType method\n   * @name putSitesSiteIdRulesRuleId\n   * @summary Overwrite rule - must contain valid rule id\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {number} ruleId - Numeric identifier of the rule to operate on\n   * @param {object} rule - The rule to overwrite\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /putSitesSiteIdRulesRuleId\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putSitesSiteIdRulesRuleId(siteId, ruleId, rule, callback) {\n    const meth = 'adapter-putSitesSiteIdRulesRuleId';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (ruleId === undefined || ruleId === null || ruleId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['ruleId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (rule === undefined || rule === null || rule === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['rule'], 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 = [siteId, ruleId];\n    const bodyVars = rule;\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Rules', 'putSitesSiteIdRulesRuleId', 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', ['putSitesSiteIdRulesRuleId'], 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   * @function getSitesSiteIdRulesRuleId\n   * @pronghornType method\n   * @name getSitesSiteIdRulesRuleId\n   * @summary Read rule - must contain valid rule id\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {number} ruleId - Numeric identifier of the rule to operate on\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /getSitesSiteIdRulesRuleId\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSitesSiteIdRulesRuleId(siteId, ruleId, callback) {\n    const meth = 'adapter-getSitesSiteIdRulesRuleId';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (ruleId === undefined || ruleId === null || ruleId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['ruleId'], 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 = [siteId, ruleId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Rules', 'getSitesSiteIdRulesRuleId', 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', ['getSitesSiteIdRulesRuleId'], 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   * @function postSitesSiteIdRulesRuleId\n   * @pronghornType method\n   * @name postSitesSiteIdRulesRuleId\n   * @summary Update rule - must contain valid rule id\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {number} ruleId - Numeric identifier of the rule to operate on\n   * @param {object} rule - The rule to update\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /postSitesSiteIdRulesRuleId\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postSitesSiteIdRulesRuleId(siteId, ruleId, rule, callback) {\n    const meth = 'adapter-postSitesSiteIdRulesRuleId';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (ruleId === undefined || ruleId === null || ruleId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['ruleId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (rule === undefined || rule === null || rule === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['rule'], 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 = [siteId, ruleId];\n    const bodyVars = rule;\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Rules', 'postSitesSiteIdRulesRuleId', 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', ['postSitesSiteIdRulesRuleId'], 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   * @function deleteSitesSiteIdRulesRuleId\n   * @pronghornType method\n   * @name deleteSitesSiteIdRulesRuleId\n   * @summary Delete rule - must contain valid rule id\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {number} ruleId - Numeric identifier of the rule to operate on\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /deleteSitesSiteIdRulesRuleId\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteSitesSiteIdRulesRuleId(siteId, ruleId, callback) {\n    const meth = 'adapter-deleteSitesSiteIdRulesRuleId';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (ruleId === undefined || ruleId === null || ruleId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['ruleId'], 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 = [siteId, ruleId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Rules', 'deleteSitesSiteIdRulesRuleId', 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', ['deleteSitesSiteIdRulesRuleId'], 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   * @function getSitesSiteIdSettingsMasking\n   * @pronghornType method\n   * @name getSitesSiteIdSettingsMasking\n   * @summary Returns a masking setting for the given site.\n   *\n   * @param {number} siteId - Site id\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /getSitesSiteIdSettingsMasking\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSitesSiteIdSettingsMasking(siteId, callback) {\n    const meth = 'adapter-getSitesSiteIdSettingsMasking';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], 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 = [siteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Settings', 'getSitesSiteIdSettingsMasking', 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', ['getSitesSiteIdSettingsMasking'], 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   * @function postSitesSiteIdSettingsMasking\n   * @pronghornType method\n   * @name postSitesSiteIdSettingsMasking\n   * @summary Update masking settings for site\n   *\n   * @param {number} siteId - Site id\n   * @param {object} maskingSettings - The masking setting to configure\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /postSitesSiteIdSettingsMasking\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postSitesSiteIdSettingsMasking(siteId, maskingSettings, callback) {\n    const meth = 'adapter-postSitesSiteIdSettingsMasking';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (maskingSettings === undefined || maskingSettings === null || maskingSettings === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['maskingSettings'], 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 = [siteId];\n    const bodyVars = maskingSettings;\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Settings', 'postSitesSiteIdSettingsMasking', 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', ['postSitesSiteIdSettingsMasking'], 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   * @function getSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @pronghornType method\n   * @name getSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @summary Return all TXT records defined for the site in Cloud WAF\n   *\n   * @param {number} extSiteId - Site id\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /getSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSitesExtSiteIdSettingsGeneralAdditionalTxtRecords(extSiteId, callback) {\n    const meth = 'adapter-getSitesExtSiteIdSettingsGeneralAdditionalTxtRecords';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], 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 = [extSiteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Settings', 'getSitesExtSiteIdSettingsGeneralAdditionalTxtRecords', 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', ['getSitesExtSiteIdSettingsGeneralAdditionalTxtRecords'], 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   * @function postSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @pronghornType method\n   * @name postSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @summary Create or modify one or more of the TXT records defined for the site in Cloud WAF  (partial update)\n   *\n   * @param {number} extSiteId - Site id\n   * @param {string} [txtRecordValueOne] - New value for txt record number one\n   * @param {string} [txtRecordValueTwo] - New value for txt record number two\n   * @param {string} [txtRecordValueThree] - New value for txt record number three\n   * @param {string} [txtRecordValueFour] - New value for txt record number four\n   * @param {string} [txtRecordValueFive] - New value for txt record number five\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /postSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postSitesExtSiteIdSettingsGeneralAdditionalTxtRecords(extSiteId, txtRecordValueOne, txtRecordValueTwo, txtRecordValueThree, txtRecordValueFour, txtRecordValueFive, callback) {\n    const meth = 'adapter-postSitesExtSiteIdSettingsGeneralAdditionalTxtRecords';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], 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 = { txtRecordValueOne, txtRecordValueTwo, txtRecordValueThree, txtRecordValueFour, txtRecordValueFive };\n    const queryParams = {};\n    const pathVars = [extSiteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Settings', 'postSitesExtSiteIdSettingsGeneralAdditionalTxtRecords', 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', ['postSitesExtSiteIdSettingsGeneralAdditionalTxtRecords'], 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   * @function putSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @pronghornType method\n   * @name putSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @summary Overwrite a specific TXT record that is defined for the site in Cloud WAF  (full update)\n   *\n   * @param {number} extSiteId - Site id\n   * @param {string} [recordNumber] - Number of txt record to edit\n   * @param {string} [txtRecordValue] - New value for txt record\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /putSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putSitesExtSiteIdSettingsGeneralAdditionalTxtRecords(extSiteId, recordNumber, txtRecordValue, callback) {\n    const meth = 'adapter-putSitesExtSiteIdSettingsGeneralAdditionalTxtRecords';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], 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 = { recordNumber, txtRecordValue };\n    const queryParams = {};\n    const pathVars = [extSiteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Settings', 'putSitesExtSiteIdSettingsGeneralAdditionalTxtRecords', 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', ['putSitesExtSiteIdSettingsGeneralAdditionalTxtRecords'], 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   * @function deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @pronghornType method\n   * @name deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @summary Delete a specific TXT record that is defined for the site in Cloud WAF\n   *\n   * @param {number} extSiteId - Site id\n   * @param {string} [recordNumber] - Number of txt record to delete\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecords\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecords(extSiteId, recordNumber, callback) {\n    const meth = 'adapter-deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecords';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], 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 = { recordNumber };\n    const queryParams = {};\n    const pathVars = [extSiteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Settings', 'deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecords', 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', ['deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecords'], 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   * @function deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecordsDeleteAll\n   * @pronghornType method\n   * @name deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecordsDeleteAll\n   * @summary Delete all TXT records that are defined for the site in Cloud WAF\n   *\n   * @param {number} extSiteId - Site id\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecordsDeleteAll\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecordsDeleteAll(extSiteId, callback) {\n    const meth = 'adapter-deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecordsDeleteAll';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], 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 = [extSiteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Settings', 'deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecordsDeleteAll', 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', ['deleteSitesExtSiteIdSettingsGeneralAdditionalTxtRecordsDeleteAll'], 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   * @function putSitesExtSiteIdHsmCertificate\n   * @pronghornType method\n   * @name putSitesExtSiteIdHsmCertificate\n   * @summary Upload custom certificate and HSM credentials\n   *\n   * @param {number} extSiteId - The Imperva ID of your website.\n   * @param {object} data - The private key asset details in your HSM service.\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /putSitesExtSiteIdHsmCertificate\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putSitesExtSiteIdHsmCertificate(extSiteId, data, callback) {\n    const meth = 'adapter-putSitesExtSiteIdHsmCertificate';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (data === undefined || data === null || data === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['data'], 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 = [extSiteId];\n    const bodyVars = data;\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('CustomCertificateWithHSMSupport', 'putSitesExtSiteIdHsmCertificate', 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', ['putSitesExtSiteIdHsmCertificate'], 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   * @function deleteSitesExtSiteIdHsmCertificate\n   * @pronghornType method\n   * @name deleteSitesExtSiteIdHsmCertificate\n   * @summary Remove custom certificate and HSM credentials\n   *\n   * @param {number} extSiteId - The Imperva ID of your website.\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /deleteSitesExtSiteIdHsmCertificate\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteSitesExtSiteIdHsmCertificate(extSiteId, callback) {\n    const meth = 'adapter-deleteSitesExtSiteIdHsmCertificate';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], 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 = [extSiteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('CustomCertificateWithHSMSupport', 'deleteSitesExtSiteIdHsmCertificate', 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', ['deleteSitesExtSiteIdHsmCertificate'], 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   * @function getSitesExtSiteIdHsmCertificateConnectivityTest\n   * @pronghornType method\n   * @name getSitesExtSiteIdHsmCertificateConnectivityTest\n   * @summary Test connectivity between Imperva and HSM provider\n   *\n   * @param {number} extSiteId - The Imperva ID of your website.\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /getSitesExtSiteIdHsmCertificateConnectivityTest\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSitesExtSiteIdHsmCertificateConnectivityTest(extSiteId, callback) {\n    const meth = 'adapter-getSitesExtSiteIdHsmCertificateConnectivityTest';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], 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 = [extSiteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('CustomCertificateWithHSMSupport', 'getSitesExtSiteIdHsmCertificateConnectivityTest', 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', ['getSitesExtSiteIdHsmCertificateConnectivityTest'], 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   * @function putSitesExtSiteIdCustomCertificate\n   * @pronghornType method\n   * @name putSitesExtSiteIdCustomCertificate\n   * @summary Upload custom certificate\n   *\n   * @param {number} extSiteId - The Imperva ID of your website.\n   * @param {object} body - body param\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /putSitesExtSiteIdCustomCertificate\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putSitesExtSiteIdCustomCertificate(extSiteId, body, callback) {\n    const meth = 'adapter-putSitesExtSiteIdCustomCertificate';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (body === undefined || body === null || body === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['body'], 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 = [extSiteId];\n    const bodyVars = body;\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('CustomCertificate', 'putSitesExtSiteIdCustomCertificate', 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', ['putSitesExtSiteIdCustomCertificate'], 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   * @function deleteSitesExtSiteIdCustomCertificate\n   * @pronghornType method\n   * @name deleteSitesExtSiteIdCustomCertificate\n   * @summary Remove custom certificate\n   *\n   * @param {number} extSiteId - The Imperva ID of your website.\n   * @param {string} authType - authType param\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /deleteSitesExtSiteIdCustomCertificate\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteSitesExtSiteIdCustomCertificate(extSiteId, authType, callback) {\n    const meth = 'adapter-deleteSitesExtSiteIdCustomCertificate';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (authType === undefined || authType === null || authType === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['authType'], 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 = { authType };\n    const queryParams = {};\n    const pathVars = [extSiteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('CustomCertificate', 'deleteSitesExtSiteIdCustomCertificate', 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', ['deleteSitesExtSiteIdCustomCertificate'], 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   * @function getSitesSiteIdSettingsCache\n   * @pronghornType method\n   * @name getSitesSiteIdSettingsCache\n   * @summary Get cache settings\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {string} [sections] - The sections of configurations to get, separated by comma. If not passed, all sections will be returned.\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /getSitesSiteIdSettingsCache\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSitesSiteIdSettingsCache(siteId, sections = 'mode', callback) {\n    const meth = 'adapter-getSitesSiteIdSettingsCache';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], 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 = { sections };\n    const queryParams = {};\n    const pathVars = [siteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('GeneralCacheSettings', 'getSitesSiteIdSettingsCache', 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', ['getSitesSiteIdSettingsCache'], 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   * @function putSitesSiteIdSettingsCache\n   * @pronghornType method\n   * @name putSitesSiteIdSettingsCache\n   * @summary Change cache settings\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {object} body - The cache settings to use\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /putSitesSiteIdSettingsCache\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putSitesSiteIdSettingsCache(siteId, body, callback) {\n    const meth = 'adapter-putSitesSiteIdSettingsCache';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (body === undefined || body === null || body === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['body'], 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 = [siteId];\n    const bodyVars = body;\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 = { forceRiskyOperation: '' };\n    }\n\n    // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('GeneralCacheSettings', 'putSitesSiteIdSettingsCache', 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', ['putSitesSiteIdSettingsCache'], 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   * @function deleteSitesSiteIdSettingsCache\n   * @pronghornType method\n   * @name deleteSitesSiteIdSettingsCache\n   * @summary Restore default cache settings\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /deleteSitesSiteIdSettingsCache\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteSitesSiteIdSettingsCache(siteId, callback) {\n    const meth = 'adapter-deleteSitesSiteIdSettingsCache';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], 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 = [siteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('GeneralCacheSettings', 'deleteSitesSiteIdSettingsCache', 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', ['deleteSitesSiteIdSettingsCache'], 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   * @function deleteSitesSiteIdCache\n   * @pronghornType method\n   * @name deleteSitesSiteIdCache\n   * @summary Purge a site&#39;s cache\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {string} [urlPattern] - The url pattern of the resource to be purged from the cache.  For example:  (1) Resource_name - resources that contain Resource_name will be purged,  (2) ^Resource_name -...(description truncated)\n   * @param {string} [tags] - A comma separated list of tag names to be purged\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /deleteSitesSiteIdCache\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteSitesSiteIdCache(siteId, urlPattern, tags, callback) {\n    const meth = 'adapter-deleteSitesSiteIdCache';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], 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 = { urlPattern, tags };\n    const queryParams = {};\n    const pathVars = [siteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('GeneralCacheSettings', 'deleteSitesSiteIdCache', 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', ['deleteSitesSiteIdCache'], 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   * @function getSitesSiteIdCacheXray\n   * @pronghornType method\n   * @name getSitesSiteIdCacheXray\n   * @summary Refresh and get a site&#39;s XRAY access URL.\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /getSitesSiteIdCacheXray\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSitesSiteIdCacheXray(siteId, callback) {\n    const meth = 'adapter-getSitesSiteIdCacheXray';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], 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 = [siteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('GeneralCacheSettings', 'getSitesSiteIdCacheXray', 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', ['getSitesSiteIdCacheXray'], 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   * @function postSitesSiteIdSettingsCacheRules\n   * @pronghornType method\n   * @name postSitesSiteIdSettingsCacheRules\n   * @summary Create cache rules\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {object} rules - The rule to create.\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /postSitesSiteIdSettingsCacheRules\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  postSitesSiteIdSettingsCacheRules(siteId, rules, callback) {\n    const meth = 'adapter-postSitesSiteIdSettingsCacheRules';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (rules === undefined || rules === null || rules === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['rules'], 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 = [siteId];\n    const bodyVars = rules;\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('CacheRules', 'postSitesSiteIdSettingsCacheRules', 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', ['postSitesSiteIdSettingsCacheRules'], 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   * @function getSitesSiteIdSettingsCacheRules\n   * @pronghornType method\n   * @name getSitesSiteIdSettingsCacheRules\n   * @summary List all cache rules for specific site\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /getSitesSiteIdSettingsCacheRules\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSitesSiteIdSettingsCacheRules(siteId, callback) {\n    const meth = 'adapter-getSitesSiteIdSettingsCacheRules';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], 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 = [siteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('CacheRules', 'getSitesSiteIdSettingsCacheRules', 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', ['getSitesSiteIdSettingsCacheRules'], 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   * @function getSitesSiteIdSettingsCacheRulesRuleId\n   * @pronghornType method\n   * @name getSitesSiteIdSettingsCacheRulesRuleId\n   * @summary List cache rule - must contain valid rule id\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {number} ruleId - Numeric identifier of the rule to operate on\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /getSitesSiteIdSettingsCacheRulesRuleId\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSitesSiteIdSettingsCacheRulesRuleId(siteId, ruleId, callback) {\n    const meth = 'adapter-getSitesSiteIdSettingsCacheRulesRuleId';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (ruleId === undefined || ruleId === null || ruleId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['ruleId'], 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 = [siteId, ruleId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('CacheRules', 'getSitesSiteIdSettingsCacheRulesRuleId', 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', ['getSitesSiteIdSettingsCacheRulesRuleId'], 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   * @function putSitesSiteIdSettingsCacheRulesRuleId\n   * @pronghornType method\n   * @name putSitesSiteIdSettingsCacheRulesRuleId\n   * @summary Update cache rule - partial update - must contain valid rule id\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {number} ruleId - Numeric identifier of the rule to operate on\n   * @param {object} rule - The rule to update\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /putSitesSiteIdSettingsCacheRulesRuleId\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putSitesSiteIdSettingsCacheRulesRuleId(siteId, ruleId, rule, callback) {\n    const meth = 'adapter-putSitesSiteIdSettingsCacheRulesRuleId';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (ruleId === undefined || ruleId === null || ruleId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['ruleId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (rule === undefined || rule === null || rule === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['rule'], 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 = [siteId, ruleId];\n    const bodyVars = rule;\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('CacheRules', 'putSitesSiteIdSettingsCacheRulesRuleId', 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', ['putSitesSiteIdSettingsCacheRulesRuleId'], 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   * @function deleteSitesSiteIdSettingsCacheRulesRuleId\n   * @pronghornType method\n   * @name deleteSitesSiteIdSettingsCacheRulesRuleId\n   * @summary Delete cache rule - must contain valid rule id\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {number} ruleId - Numeric identifier of the rule to operate on\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /deleteSitesSiteIdSettingsCacheRulesRuleId\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteSitesSiteIdSettingsCacheRulesRuleId(siteId, ruleId, callback) {\n    const meth = 'adapter-deleteSitesSiteIdSettingsCacheRulesRuleId';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (ruleId === undefined || ruleId === null || ruleId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['ruleId'], 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 = [siteId, ruleId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('CacheRules', 'deleteSitesSiteIdSettingsCacheRulesRuleId', 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', ['deleteSitesSiteIdSettingsCacheRulesRuleId'], 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   * @function getSitesSiteIdSettingsDelivery\n   * @pronghornType method\n   * @name getSitesSiteIdSettingsDelivery\n   * @summary Get delivery settings\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {string} [sections] - The sections of configurations to get, separated by comma. If not passed, all sections will be returned.\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /getSitesSiteIdSettingsDelivery\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSitesSiteIdSettingsDelivery(siteId, sections = 'compression', callback) {\n    const meth = 'adapter-getSitesSiteIdSettingsDelivery';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], 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 = { sections };\n    const queryParams = {};\n    const pathVars = [siteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Delivery', 'getSitesSiteIdSettingsDelivery', 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', ['getSitesSiteIdSettingsDelivery'], 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   * @function putSitesSiteIdSettingsDelivery\n   * @pronghornType method\n   * @name putSitesSiteIdSettingsDelivery\n   * @summary Change delivery settings\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {object} body - The delivery settings to use\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /putSitesSiteIdSettingsDelivery\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  putSitesSiteIdSettingsDelivery(siteId, body, callback) {\n    const meth = 'adapter-putSitesSiteIdSettingsDelivery';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (body === undefined || body === null || body === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['body'], 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 = [siteId];\n    const bodyVars = body;\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Delivery', 'putSitesSiteIdSettingsDelivery', 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', ['putSitesSiteIdSettingsDelivery'], 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   * @function deleteSitesSiteIdSettingsDelivery\n   * @pronghornType method\n   * @name deleteSitesSiteIdSettingsDelivery\n   * @summary Restore default delivery settings\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /deleteSitesSiteIdSettingsDelivery\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  deleteSitesSiteIdSettingsDelivery(siteId, callback) {\n    const meth = 'adapter-deleteSitesSiteIdSettingsDelivery';\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 (siteId === undefined || siteId === null || siteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['siteId'], 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 = [siteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('Delivery', 'deleteSitesSiteIdSettingsDelivery', 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', ['deleteSitesSiteIdSettingsDelivery'], 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   * @function listSites\n   * @pronghornType method\n   * @name listSites\n   * @summary List sites for an account\n   *\n   * @param {string} [accountId] - Numeric identifier of the account to operate on\n   * @param {string} [pageSize] - The number of objects to return in the response\n   * @param {string} [pageNum] - The page to return starting from 0\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /listSites\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  listSites(accountId, pageSize, pageNum, callback) {\n    const meth = 'adapter-listSites';\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 SET THE DATA TO PASS INTO REQUEST */\n    const queryParamsAvailable = { accountId, pageSize, pageNum };\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('SiteManagement', 'listSites', 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', ['listSites'], 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   * @function getSitesDataCentersConfiguration\n   * @pronghornType method\n   * @name getSitesDataCentersConfiguration\n   * @summary Use this operation to get configured data centers and all their servers\n   *\n   * @param {number} extSiteId - Site id\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /getSitesDataCentersConfiguration\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  getSitesDataCentersConfiguration(extSiteId, callback) {\n    const meth = 'adapter-getSitesDataCentersConfiguration';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], 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 = [extSiteId];\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('SiteManagement', 'getSitesDataCentersConfiguration', 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', ['getSitesDataCentersConfiguration'], 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   * @function setSitesDataCentersConfiguration\n   * @pronghornType method\n   * @name setSitesDataCentersConfiguration\n   * @summary Use this operation to configure site's data centers and all their servers\n   *\n   * @param {number} siteId - Numeric identifier of the site to operate on\n   * @param {object} body - Request body\n   * @param {getCallback} callback - a callback function to return the result\n   * @return {object} results - An object containing the response of the action\n   *\n   * @route {POST} /setSitesDataCentersConfiguration\n   * @roles admin\n   * @task true\n   */\n  /* YOU CAN CHANGE THE PARAMETERS YOU TAKE IN HERE AND IN THE pronghorn.json FILE */\n  setSitesDataCentersConfiguration(extSiteId, body, callback) {\n    const meth = 'adapter-setSitesDataCentersConfiguration';\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 (extSiteId === undefined || extSiteId === null || extSiteId === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['extSiteId'], null, null, null);\n      log.error(`${origin}: ${errorObj.IAPerror.displayString}`);\n      return callback(null, errorObj);\n    }\n    if (body === undefined || body === null || body === '') {\n      const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['body'], 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 = [extSiteId];\n    const bodyVars = body;\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, authData, callProperties, filter, priority, event\n    // see adapter code documentation for more information on the request object's fields\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('SiteManagement', 'setSitesDataCentersConfiguration', 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', ['setSitesDataCentersConfiguration'], 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 = Imperva;\n"]}