/**
* Create a Meraki REST API wrapper for the config template ressource. See the
* [online documentation]{@link https://dashboard.meraki.com/api_docs#config-templates} for more information.
*
* @module meraki/rest/config-templates
* @param { string } [apiKey=''] The Meraki api key
* @param { string } [target='api'] The Meraki target
* @param { string } [basePath='/'] The Meraki base path for the config template ressource
* @param { string } rateLimiter The rate limiter (bottleneck) configuration
* @param { object } [logger] Logger to use if logging is enabled
* @return { Object } The initialized Meraki REST API wrapper for the config template ressource
* @example
* const apiKey = 'secret meraki api key'
* const version = 'v0'
* const target = 'n12'
* const basePath = `/${target}/${version}`
* const rateLimiter = {
* enabled: true
* }
* const templateEndpoints = require('./lib/rest/templates')({ apiKey, target, basePath, baseUrl, rateLimiter })
*/
function createTemplatesEndpoints ({
apiKey,
target,
basePath,
baseUrl = 'https://api.meraki.com',
rateLimiter,
logger
}) {
const axios = require('./axios')({ baseUrl, rateLimiter, logger })
/**
* List the configuration templates for this organization.
*
* @memberof module:meraki/rest/config-templates
* @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 } orgId The organization id
* @return { Promise } A promise holding the configuration templates for this organization
* @example <caption>Example response</caption>
* [
* {
* "id": "N_1234",
* "name": "Your config template"
* }
* ]
*/
function listConfigurationTemplates ({
apiKey: localApiKey,
target: localTarget,
scope,
orgId
}) {
if (!orgId) {
return Promise.reject(new Error('The parameter orgId is mandatory'))
}
return axios._get(
localApiKey || apiKey,
localTarget || target,
scope,
`${basePath}/${orgId}/configTemplates`
)
}
/**
* Remove a configuration template.
*
* @memberof module:meraki/rest/config-templates
* @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 } orgId The organization id
* @param { string } templateId The id of the template to delete
* @return { Promise } A promise with no data
*/
function deleteConfigurationTemplate ({
apiKey: localApiKey,
target: localTarget,
scope,
orgId,
templateId
}) {
if (!orgId) {
return Promise.reject(new Error('The parameter orgId is mandatory'))
}
if (!templateId) {
return Promise.reject(new Error('The parameter templateId is mandatory'))
}
return axios._delete(
localApiKey || apiKey,
localTarget || target,
scope,
`${basePath}/${orgId}/configTemplates/${templateId}`
)
}
return {
listConfigurationTemplates,
deleteConfigurationTemplate
}
}
module.exports = createTemplatesEndpoints