UNPKG

node-meraki

Version:
156 lines (149 loc) 6.38 kB
/** * Create a Meraki REST API wrapper for the alert settings ressource. See the * [online documentation]{@link https://dashboard.meraki.com/api_docs#alert-settings} for more information. * * @module meraki/rest/alerts * @param { string } [apiKey=''] The Meraki api key * @param { string } [target='api'] The Meraki target * @param { string } [basePath='/'] The Meraki base path for the ressource * @param { string } [baseUrl='https://api.meraki.com'] The Meraki base url for the ressource * @param { string } rateLimiter The rate limiter (bottleneck) configuration * @return { Object } The initialized Meraki REST API wrapper for the alert settings ressource * @example * const apiKey = 'secret meraki api key' * const organizationId = 'meraki organization id' * const version = 'v0' * const target = 'n12' * const basePath = `/${target}/${version}/alertSettings` * const rateLimiter = { * enabled: true * } * const alertSettingsEndpoints = require('./lib/rest/alerts')({ apiKey, target, basePath, baseUrl, rateLimiter, logger }) */ function createAlertSettingsEndpoints({ apiKey = '', target = 'api', basePath = '/', baseUrl = 'https://api.meraki.com', rateLimiter, logger }) { const axios = require('./axios')({ baseUrl, rateLimiter, logger }); /** * Return the alert settings for this network. * * @memberof module:meraki/rest/alerts * @param { string } [apiKey] Optional custom apiKey for this request (if not set will take the inital apiKey) * @param { string } [target] Optional custom target for this request (if not set will take the inital target) * @param { string } [scope] Optional custom scope for rate limiter * @param { string } networkId The id of the network * @return { Promise } A promise holding the alert settings of this network * @example <caption>Example response</caption> * { * "defaultDestinations": { * "emails": [ * "miles@meraki.com" * ], * "allAdmins": true, * "snmp": true, * "httpServerIds": ["asdfasfasdfasfasdfasdfasf"] * }, * "alerts": [ * { * "type": "gatewayDown", * "enabled": true, * "alertDestinations": { * "emails": [ * "miles@meraki.com" * ], * "allAdmins": false, * "snmp": false * }, * "filters": { * "timeout": 60 * } * } * ] * } */ function getAlertSettings({ apiKey: localApiKey, target: localTarget, scope, networkId }) { if (!networkId) { return Promise.reject(new Error('The parameter networkId is mandatory')); } return axios._get(localApiKey || apiKey, localTarget || target, scope, `${basePath}/${networkId}/alertSettings`); } /** * Update alert settings for this network. * * @memberof module:meraki/rest/alerts * @param { string } [apiKey] Optional custom apiKey for this request (if not set will take the inital apiKey) * @param { string } [target] Optional custom target for this request (if not set will take the inital target) * @param { string } [scope] Optional custom scope for rate limiter * @param { string } networkId The id of the network * @param { object } defaultDestinations The network_wide destinations for all alerts on the network. * @param { array } defaultDestinations.emails A list of emails that will recieve the alert(s). * @param { boolean } defaultDestinations.allAdmins If true, then all network admins will receive emails. * @param { boolean } defaultDestinations.snmp If true, then an SNMP trap will be sent if there is an SNMP trap server configured for this network. * @param { array } defaultDestinations.httpServerIds A list of http server ids to which the alerts will be sent. * @param { array } alerts Alert-specific configuration for each type. Only alerts that pertain to the network can be updated. * @param { string } alerts.type The type of alert * @param { boolean } alerts.enabled A boolean depicting if the alert is turned on or off * @param { object } alerts.alertDestinations A hash of destinations for this specific alert. Keys include: emails: A list of emails that will recieve information about the alert, allAdmins: If true, then all network admins will receive emails, and snmp: If true, then an SNMP trap will be sent if there is an SNMP trap server configured for this network. * @param { object } alerts.filters A hash of specific configuration data for the alert. Only filters specific to the alert will be updated. * @return { Promise } A promise holding the updated alert settings * @example <caption>Example request data</caption> * curl -L -H 'X-Cisco-Meraki-API-Key: <key>' -H 'Content-Type: application/json' -X PUT --data-binary '{"defaultDestinations":{"emails":["miles@meraki.com"],"allAdmins":true,"snmp":true},"alerts":[{"type":"gatewayDown","enabled":true,"alertDestinations":{"emails":["miles@meraki.com"],"allAdmins":false,"snmp":false},"filters":{"timeout":60}}]}' 'https://api.meraki.com/api/v0/networks/[networkId]/alertSettings' * @example <caption>Example response</caption> * { * "defaultDestinations": { * "emails": [ * "miles@meraki.com" * ], * "allAdmins": true, * "snmp": true * "httpServerIds": ["asdfasfasdfasfasdfasdfasf"] * }, * "alerts": [ * { * "type": "gatewayDown", * "enabled": true, * "alertDestinations": { * "emails": [ * "miles@meraki.com" * ], * "allAdmins": false, * "snmp": false * }, * "filters": { * "timeout": 60 * } * } * ] * } */ function updateAlertSettings(data) { const { networkId, target: localTarget, scope } = data; delete data.networkId; delete data.target; delete data.scope; return axios._put(data.apiKey || apiKey, localTarget || target, scope, `${basePath}/${networkId}/alertSettings/`, data); } return { getAlertSettings, updateAlertSettings }; } module.exports = createAlertSettingsEndpoints;