node-meraki
Version:
Meraki wrapper for nodejs
265 lines (243 loc) • 9.15 kB
JavaScript
/**
* Create a Meraki REST API wrapper for the saml-roles ressource. See the
* [online documentation]{@link https://dashboard.meraki.com/api_docs#saml-roles} for more information.
*
* @module meraki/rest/saml-roles
* @param { string } [apiKey=''] The Meraki api key
* @param { string } [target='api'] The Meraki target
* @param { string } [basePath='/'] The Meraki base path for the saml-roles 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 saml-roles ressource
* @example
* const apiKey = 'secret meraki api key'
* const organizationId = 'meraki organization id'
* const version = 'v0'
* const target = 'n12'
* const basePath = `/${target}/${version}`
* const rateLimiter = {
* enabled: true
* }
* const samlEndpoints = require('./lib/rest/saml')({ apiKey, target, basePath, baseUrl, rateLimiter })
*/
function createSamlEndpoints({
apiKey = '',
target = 'api',
basePath = '/',
baseUrl = 'https://api.meraki.com',
rateLimiter,
logger
}) {
const axios = require('./axios')({
baseUrl,
rateLimiter,
logger
});
/**
* List the SAML roles in an organization.
*
* @memberof module:meraki/rest/saml-roles
* @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 SAML roles this organization
* @example <caption>Example response</caption>
* [{
* "id": "TEdJIEN1c3RvbWVy",
* "role": "myrole",
* "orgAccess": "none",
* "networks": [{
* "id": "N_1234",
* "access": "full"
* }],
* "tags": [{
* "tag": "west",
* "access": "read-only"
* }]
* }]
*/
function listSamlRoles({
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}/samlRoles`);
}
/**
* Return a SAML role.
*
* @memberof module:meraki/rest/saml-roles
* @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 } roleId The SAML role id
* @return { Promise } A promise holding the SAML role for this role id
* @example <caption>Example response</caption>
* {
* "id": "TEdJIEN1c3RvbWVy",
* "role": "myrole",
* "orgAccess": "none",
* "networks": [{
* "id": "N_1234",
* "access": "full"
* }],
* "tags": [{
* "tag": "west",
* "access": "read-only"
* }]
* }
*/
function showSamlRole({
apiKey: localApiKey,
target: localTarget,
scope,
orgId,
roleId
}) {
if (!orgId) {
return Promise.reject(new Error('The parameter orgId is mandatory'));
}
if (!roleId) {
return Promise.reject(new Error('The parameter roleId is mandatory'));
}
return axios._get(localApiKey || apiKey, localTarget || target, scope, `${basePath}/${orgId}/samlRoles/${roleId}`);
}
/**
* Create a SAML role.
*
* @memberof module:meraki/rest/saml-roles
* @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 } role The role of the SAML administrator
* @param { string } orgAccess The privilege of the SAML administrator on the organization (none, read-only, full)
* @param { array } tags The list of tags that the SAML administrator has privileges on
* @param { string } tags.tag The name of the tag
* @param { string } tags.access The privilege of the SAML administrator on the tag
* @param { array } networks The list of networks that the SAML administrator has privileges on
* @param { string } networks.id The network ID
* @param { string } networks.access The privilege of the SAML administrator on the network
* @return { Promise } A promise holding the new SAML role
* @example <caption>Example response</caption>
* {
* "id": "TEdJIEN1c3RvbWVy",
* "role": "myrole",
* "orgAccess": "none",
* "networks": [{
* "id": "N_1234",
* "access": "full"
* }],
* "tags": [{
* "tag": "west",
* "access": "read-only"
* }]
* }
*/
function createSamlRole(data) {
const {
orgId,
target: localTarget,
scope
} = data;
delete data.orgId;
delete data.target;
delete data.scope;
if (!orgId) {
return Promise.reject(new Error('The parameter orgId is mandatory'));
}
return axios._post(data.apiKey || apiKey, localTarget || target, scope, `${basePath}/${orgId}/samlRoles`, data);
}
/**
* Update a SAML role.
*
* @memberof module:meraki/rest/saml-roles
* @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 } roleId The SAML role id
* @param { string } role The role of the SAML administrator
* @param { string } orgAccess The privilege of the SAML administrator on the organization (none, read-only, full)
* @param { array } tags The list of tags that the SAML administrator has privileges on
* @param { string } tags.tag The name of the tag
* @param { string } tags.access The privilege of the SAML administrator on the tag
* @param { array } networks The list of networks that the SAML administrator has privileges on
* @param { string } networks.id The network ID
* @param { string } networks.access The privilege of the SAML administrator on the network
* @return { Promise } A promise holding the updated SAML role for this role id
* @example <caption>Example response</caption>
* {
* "id": "TEdJIEN1c3RvbWVy",
* "role": "myrole",
* "orgAccess": "none",
* "networks": [{
* "id": "N_1234",
* "access": "full"
* }],
* "tags": [{
* "tag": "west",
* "access": "read-only"
* }]
* }
*/
function updateSamlRole(data) {
const {
orgId,
roleId,
target: localTarget,
scope
} = data;
delete data.orgId;
delete data.roleId;
delete data.target;
delete data.scope;
if (!orgId) {
return Promise.reject(new Error('The parameter orgId is mandatory'));
}
if (!roleId) {
return Promise.reject(new Error('The parameter roleId is mandatory'));
}
return axios._put(data.apiKey || apiKey, localTarget || target, scope, `${basePath}/${orgId}/samlRoles/${roleId}`, data);
}
/**
* Remove a SAML role.
*
* @memberof module:meraki/rest/saml-roles
* @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 } roleId The SAML role id
* @return { Promise } A promise with no data
*/
function deleteSamlRole({
apiKey: localApiKey,
target: localTarget,
scope,
orgId,
roleId
}) {
if (!orgId) {
return Promise.reject(new Error('The parameter orgId is mandatory'));
}
if (!roleId) {
return Promise.reject(new Error('The parameter roleId is mandatory'));
}
return axios._delete(localApiKey || apiKey, localTarget || target, scope, `${basePath}/${orgId}/samlRoles/${roleId}`);
}
return {
listSamlRoles,
showSamlRole,
createSamlRole,
updateSamlRole,
deleteSamlRole
};
}
module.exports = createSamlEndpoints;