endpoints/organizations.js

const JSONbig = require("json-bigint")({ "storeAsString": true });

const handleBigInt = (data) => {
    try {
        return JSON.parse(JSONBigInt.parse(data));
    } catch (err) {
        return data
    }
}
/**
 * Organizations
 * @module Organizations
 */
const organizations = {
    /**
     * List the Organizations based on the API key
     */
    getOrganizations() {
        return this.meraki.get('/organizations', { transformResponse: [handleBigInt] }).then((res) => res.data);
    },


    /**
     * Return a single organization
     * @memberof module:Organizations
     * @param {*} orgId 
     */
    getOrganization(orgId) {
        return this.meraki.get('/organizations/' + orgId).then((res) => res.data);
    },


    /**
     * Update an organization
     * @memberof module:Organizations
     * @param {*} orgId 
     * @param {*} body 
     */
    updateOrganization(orgId, body) {
        return this.meraki.put('/organizations/' + orgId, body).then((res) => res.data);
    },

    /**
     * Create an organization
     * @memberof module:Organizations
     * @param {*} body 
     */
    createOrganization(body) {
        return this.meraki.post('/organizations/', body).then((res) => res.data);
    },

    /**
     * Create an organization by cloning
     * @memberof module:Organizations
     * @param {*} orgId 
     * @param {*} body 
     */
    createOrganizationClone(orgId, body) {
        return this.meraki.post('/organizations/' + orgId + '/clone', body).then((res) => res.data);
    },

    /**
     * Claim order, license key, or order into an organization
     * @memberof module:Organizations
     * @param {*} orgId 
     * @param {*} body 
     */
    claimOrderLicenseSerial(orgId, body) {
        return this.meraki.post('/organizations/' + orgId + '/claim', body).then((res) => res.data);
    },

    /**
     * Return licenses for an organization
     * @memberof module:Organizations
     * @param {*} orgId 
     */
    getLicenseState(orgId) {
        return this.meraki.get('/organizations/' + orgId + '/licenseState').then((res) => res.data);
    },

    /**
     * Return inventory for an organization
     * @memberof module:Organizations
     * @param {*} orgId 
     */
    getInventory(orgId) {
        return this.meraki.get('/organizations/' + orgId + '/inventory').then((res) => res.data);
    },

    /**
     * Return devices for an organization and their statuses
     * @memberof module:Organizations
     * @param {*} orgId 
     */
    getOrgDevices(orgId) {
        return this.meraki.get('/organizations/' + orgId + '/deviceStatuses').then((res) => res.data);
    },

    /**
     * Return SNMP settings
     * @memberof module:Organizations
     * @param {*} orgId 
     */
    getSnmpSettings(orgId) {
        return this.meraki.get('/organizations/' + orgId + '/snmp').then((res) => res.data);
    },

    /**
     * Update SNMP settings
     * @memberof module:Organizations
     * @param {*} orgId 
     * @param {*} body 
     */
    updateSnmpSettings(orgId, body) {
        return this.meraki.put('/organizations/' + orgId + '/snmp', body).then((res) => res.data);
    },

    /**
     * Return third party VPN peers
     * @memberof module:Organizations
     * @param {*} orgId 
     */
    getThirdPartyVpnPeers(orgId) {
        return this.meraki.get('/organizations/' + orgId + '/thirdPartyVPNPeers').then((res) => res.data);
    },

    /**
     * Return third party VPN peers
     * @memberof module:Organizations
     * @param {*} orgId 
     * @param {*} body 
     */
    updateThirdPartyVpnPeers(orgId, body) {
        return this.meraki.put('/organizations/' + orgId + '/thirdPartyVPNPeers', body).then((res) => res.data);
    }

}

module.exports = organizations;