node-red-contrib-meraki-dashboard-api-v1
Version:
Node-RED node for meraki-dashboard-api-v1
1,626 lines (1,054 loc) • 1.17 MB
JavaScript
/*jshint -W069 */
/**
* The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @class MerakiDashboardApi
* @param {(string|object)} [domainOrOptions] - The project domain or options object. If object, see the object's optional properties.
* @param {string} [domainOrOptions.domain] - The project domain
* @param {object} [domainOrOptions.token] - auth token - object with value property and optional headerOrQueryName and isQuery properties
*/
var MerakiDashboardApi = (function(){
'use strict';
var request = require('request');
var Q = require('q');
var fileType = require('file-type');
function MerakiDashboardApi(options){
var domain = (typeof options === 'object') ? options.domain : options;
this.domain = domain ? domain : 'https://api.meraki.com/api/v1';
if(this.domain.length === 0) {
throw new Error('Domain parameter must be specified as a string.');
}
this.apiKey = (typeof options === 'object') ? (options.apiKey ? options.apiKey : {}) : {};
}
function mergeQueryParams(parameters, queryParameters) {
if (parameters.$queryParameters) {
Object.keys(parameters.$queryParameters)
.forEach(function(parameterName) {
var parameter = parameters.$queryParameters[parameterName];
queryParameters[parameterName] = parameter;
});
}
return queryParameters;
}
/**
* HTTP Request
* @method
* @name MerakiDashboardApi#request
* @param {string} method - http method
* @param {string} url - url to do request
* @param {object} parameters
* @param {object} body - body parameters / object
* @param {object} headers - header parameters
* @param {object} queryParameters - querystring parameters
* @param {object} form - form data object
* @param {object} deferred - promise object
*/
MerakiDashboardApi.prototype.request = function(method, url, parameters, body, headers, queryParameters, form, deferred){
var req = {
method: method,
uri: url,
qs: queryParameters,
headers: headers,
body: body,
followAllRedirects: true
};
if(Object.keys(form).length > 0) {
if (req.headers['Content-Type'] && req.headers['Content-Type'][0] === 'multipart/form-data') {
delete req.body;
var keyName = Object.keys(form)[0]
req.formData = {
[keyName]: {
value: form[keyName],
options: {
filename: (fileType(form[keyName]) != null ? `file.${ fileType(form[keyName]).ext }` : `file` )
}
}
};
} else {
req.form = form;
}
}
if(typeof(body) === 'object' && !(body instanceof Buffer)) {
req.json = true;
}
request(req, function(error, response, body){
if(error) {
deferred.reject(error);
} else {
if(/^application\/(.*\\+)?json/.test(response.headers['content-type'])) {
try {
body = JSON.parse(body);
} catch(e) {}
}
if(response.statusCode === 204) {
deferred.resolve({ response: response });
} else if(response.statusCode >= 200 && response.statusCode <= 299) {
deferred.resolve({ response: response, body: body });
} else {
deferred.reject({ response: response, body: body });
}
}
});
};
/**
* Set Api Key
* @method
* @name MerakiDashboardApi#setApiKey
* @param {string} value - apiKey's value
* @param {string} headerOrQueryName - the header or query name to send the apiKey at
* @param {boolean} isQuery - true if send the apiKey as query param, otherwise, send as header param
*/
MerakiDashboardApi.prototype.setApiKey = function (value, headerOrQueryName, isQuery) {
this.apiKey.value = value;
this.apiKey.headerOrQueryName = headerOrQueryName;
this.apiKey.isQuery = isQuery;
};
/**
* Set Auth headers
* @method
* @name MerakiDashboardApi#setAuthHeaders
* @param {object} headerParams - headers object
*/
MerakiDashboardApi.prototype.setAuthHeaders = function (headerParams) {
var headers = headerParams ? headerParams : {};
if (!this.apiKey.isQuery && this.apiKey.headerOrQueryName) {
headers[this.apiKey.headerOrQueryName] = this.apiKey.value;
}
return headers;
};
/**
* Return a single device
* @method
* @name MerakiDashboardApi#getDevice
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDevice = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Update the attributes of a device
* @method
* @name MerakiDashboardApi#updateDevice
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {} parameters.updateDevice - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.updateDevice = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
if(parameters['updateDevice'] !== undefined){
body = parameters['updateDevice'];
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('PUT', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Return the DHCP subnet information for an appliance
* @method
* @name MerakiDashboardApi#getDeviceApplianceDhcpSubnets
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDeviceApplianceDhcpSubnets = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/appliance/dhcp/subnets';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Return the performance score for a single MX. Only primary MX devices supported. If no data is available, a 204 error code is returned.
* @method
* @name MerakiDashboardApi#getDeviceAppliancePerformance
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDeviceAppliancePerformance = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/appliance/performance';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Blink the LEDs on a device
* @method
* @name MerakiDashboardApi#blinkDeviceLeds
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {} parameters.blinkDeviceLeds - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.blinkDeviceLeds = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/blinkLeds';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
if(parameters['blinkDeviceLeds'] !== undefined){
body = parameters['blinkDeviceLeds'];
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('POST', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Returns live state from camera of analytics zones
* @method
* @name MerakiDashboardApi#getDeviceCameraAnalyticsLive
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDeviceCameraAnalyticsLive = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/analytics/live';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Returns an overview of aggregate analytics data for a timespan
* @method
* @name MerakiDashboardApi#getDeviceCameraAnalyticsOverview
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {string} parameters.t0 - The beginning of the timespan for the data. The maximum lookback period is 365 days from today.
* @param {string} parameters.t1 - The end of the timespan for the data. t1 can be a maximum of 7 days after t0.
* @param {number} parameters.timespan - The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 7 days. The default is 1 hour.
* @param {string} parameters.objectType - [optional] The object type for which analytics will be retrieved. The default object type is person. The available types are [person, vehicle].
*/
MerakiDashboardApi.prototype.getDeviceCameraAnalyticsOverview = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/analytics/overview';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
if(parameters['t0'] !== undefined){
queryParameters['t0'] = parameters['t0'];
}
if(parameters['t1'] !== undefined){
queryParameters['t1'] = parameters['t1'];
}
if(parameters['timespan'] !== undefined){
queryParameters['timespan'] = parameters['timespan'];
}
if(parameters['objectType'] !== undefined){
queryParameters['objectType'] = parameters['objectType'];
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Returns most recent record for analytics zones
* @method
* @name MerakiDashboardApi#getDeviceCameraAnalyticsRecent
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {string} parameters.objectType - [optional] The object type for which analytics will be retrieved. The default object type is person. The available types are [person, vehicle].
*/
MerakiDashboardApi.prototype.getDeviceCameraAnalyticsRecent = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/analytics/recent';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
if(parameters['objectType'] !== undefined){
queryParameters['objectType'] = parameters['objectType'];
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Returns all configured analytic zones for this camera
* @method
* @name MerakiDashboardApi#getDeviceCameraAnalyticsZones
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDeviceCameraAnalyticsZones = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/analytics/zones';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Return historical records for analytic zones
* @method
* @name MerakiDashboardApi#getDeviceCameraAnalyticsZoneHistory
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {string} parameters.zoneId - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {string} parameters.t0 - The beginning of the timespan for the data. The maximum lookback period is 365 days from today.
* @param {string} parameters.t1 - The end of the timespan for the data. t1 can be a maximum of 14 hours after t0.
* @param {number} parameters.timespan - The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 14 hours. The default is 1 hour.
* @param {integer} parameters.resolution - The time resolution in seconds for returned data. The valid resolutions are: 60. The default is 60.
* @param {string} parameters.objectType - [optional] The object type for which analytics will be retrieved. The default object type is person. The available types are [person, vehicle].
*/
MerakiDashboardApi.prototype.getDeviceCameraAnalyticsZoneHistory = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/analytics/zones/{zoneId}/history';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
path = path.replace('{zoneId}', parameters['zoneId']);
if(parameters['zoneId'] === undefined){
deferred.reject(new Error('Missing required parameter: zoneId'));
return deferred.promise;
}
if(parameters['t0'] !== undefined){
queryParameters['t0'] = parameters['t0'];
}
if(parameters['t1'] !== undefined){
queryParameters['t1'] = parameters['t1'];
}
if(parameters['timespan'] !== undefined){
queryParameters['timespan'] = parameters['timespan'];
}
if(parameters['resolution'] !== undefined){
queryParameters['resolution'] = parameters['resolution'];
}
if(parameters['objectType'] !== undefined){
queryParameters['objectType'] = parameters['objectType'];
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Generate a snapshot of what the camera sees at the specified time and return a link to that image.
* @method
* @name MerakiDashboardApi#generateDeviceCameraSnapshot
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {} parameters.generateDeviceCameraSnapshot - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.generateDeviceCameraSnapshot = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/generateSnapshot';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
if(parameters['generateDeviceCameraSnapshot'] !== undefined){
body = parameters['generateDeviceCameraSnapshot'];
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('POST', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Returns quality and retention settings for the given camera
* @method
* @name MerakiDashboardApi#getDeviceCameraQualityAndRetention
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDeviceCameraQualityAndRetention = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/qualityAndRetention';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Update quality and retention settings for the given camera
* @method
* @name MerakiDashboardApi#updateDeviceCameraQualityAndRetention
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {} parameters.updateDeviceCameraQualityAndRetention - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.updateDeviceCameraQualityAndRetention = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/qualityAndRetention';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
if(parameters['updateDeviceCameraQualityAndRetention'] !== undefined){
body = parameters['updateDeviceCameraQualityAndRetention'];
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('PUT', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Returns sense settings for a given camera
* @method
* @name MerakiDashboardApi#getDeviceCameraSense
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDeviceCameraSense = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/sense';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Update sense settings for the given camera
* @method
* @name MerakiDashboardApi#updateDeviceCameraSense
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {} parameters.updateDeviceCameraSense - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.updateDeviceCameraSense = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/sense';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
if(parameters['updateDeviceCameraSense'] !== undefined){
body = parameters['updateDeviceCameraSense'];
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('PUT', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Returns the MV Sense object detection model list for the given camera
* @method
* @name MerakiDashboardApi#getDeviceCameraSenseObjectDetectionModels
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDeviceCameraSenseObjectDetectionModels = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/sense/objectDetectionModels';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Returns video settings for the given camera
* @method
* @name MerakiDashboardApi#getDeviceCameraVideoSettings
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDeviceCameraVideoSettings = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/video/settings';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Update video settings for the given camera
* @method
* @name MerakiDashboardApi#updateDeviceCameraVideoSettings
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {} parameters.updateDeviceCameraVideoSettings - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.updateDeviceCameraVideoSettings = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/video/settings';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
if(parameters['updateDeviceCameraVideoSettings'] !== undefined){
body = parameters['updateDeviceCameraVideoSettings'];
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('PUT', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Returns video link to the specified camera. If a timestamp is supplied, it links to that timestamp.
* @method
* @name MerakiDashboardApi#getDeviceCameraVideoLink
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {string} parameters.timestamp - [optional] The video link will start at this time. The timestamp should be a string in ISO8601 format. If no timestamp is specified, we will assume current time.
*/
MerakiDashboardApi.prototype.getDeviceCameraVideoLink = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/videoLink';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
if(parameters['timestamp'] !== undefined){
queryParameters['timestamp'] = parameters['timestamp'];
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Returns wireless profile assigned to the given camera
* @method
* @name MerakiDashboardApi#getDeviceCameraWirelessProfiles
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDeviceCameraWirelessProfiles = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/wirelessProfiles';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Assign wireless profiles to the given camera. Incremental updates are not supported, all profile assignment need to be supplied at once.
* @method
* @name MerakiDashboardApi#updateDeviceCameraWirelessProfiles
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {} parameters.updateDeviceCameraWirelessProfiles - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.updateDeviceCameraWirelessProfiles = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/camera/wirelessProfiles';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
if(parameters['updateDeviceCameraWirelessProfiles'] !== undefined){
body = parameters['updateDeviceCameraWirelessProfiles'];
}
if(parameters['updateDeviceCameraWirelessProfiles'] === undefined){
deferred.reject(new Error('Missing required parameter: updateDeviceCameraWirelessProfiles'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('PUT', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Show the LAN Settings of a MG
* @method
* @name MerakiDashboardApi#getDeviceCellularGatewayLan
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDeviceCellularGatewayLan = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/cellularGateway/lan';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('GET', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Update the LAN Settings for a single MG.
* @method
* @name MerakiDashboardApi#updateDeviceCellularGatewayLan
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
* @param {} parameters.updateDeviceCellularGatewayLan - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.updateDeviceCellularGatewayLan = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/cellularGateway/lan';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders(headers);
headers['Accept'] = ['application/json'];
headers['Content-Type'] = ['application/json'];
path = path.replace('{serial}', parameters['serial']);
if(parameters['serial'] === undefined){
deferred.reject(new Error('Missing required parameter: serial'));
return deferred.promise;
}
if(parameters['updateDeviceCellularGatewayLan'] !== undefined){
body = parameters['updateDeviceCellularGatewayLan'];
}
queryParameters = mergeQueryParams(parameters, queryParameters);
this.request('PUT', domain + path, parameters, body, headers, queryParameters, form, deferred);
return deferred.promise;
};
/**
* Returns the port forwarding rules for a single MG.
* @method
* @name MerakiDashboardApi#getDeviceCellularGatewayPortForwardingRules
* @param {object} parameters - method options and parameters
* @param {string} parameters.serial - The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.
> Date: 06 October, 2021
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
*/
MerakiDashboardApi.prototype.getDeviceCellularGatewayPortForwardingRules = function(parameters){
if(parameters === undefined) {
parameters = {};
}
var deferred = Q.defer();
var domain = this.domain, path = '/devices/{serial}/cellularGateway/portForwardingRules';
var body = {}, queryParameters = {}, headers = {}, form = {};
headers = this.setAuthHeaders