A light Node.js SDK for the MicroStrategy REST and Task APIs.
HTTP requests are handled by axios, the promise based HTTP client for the browser and node.js.
npm i microstrategy --save
yarn add microstrategy
This module can be used on any HTML page using the bundled dist/mstrapi.min.js
file. Simply include this script tag on any page:
<script src="https://cdn.jsdelivr.net/npm/microstrategy/dist/mstrapi.min.js" crossorigin="anonymous"></script>
See ./webpack for documentation on the bundling process.
Once loaded via the script tag, this API module can be accessed via a global object called mstrapi
:
const baseUrl = 'http://aps-tsiebler-vm:8080/2020u1Library/api';
const mstrClient = new mstrapi.REST({
baseUrl: baseUrl
});
See ./samples/html/cdn-login.html for an example.
- Import the module and create a new instance of the REST client.
- Provide a URL to your MicroStrategy Library REST API via the baseUrl parameter.
- Login & Logout methods are exposed on the REST client. Other methods are grouped by topic.
- Every REST method returns a Promise, making this library async await ready.
- By default, your session state headers are stored and persisted by your client instance.
const mstr = require('microstrategy');
(async () => {
const baseUrl = 'http://aps-tsiebler-vm:8080/2020u1Library/api';
const mstrClient = new mstr.REST({
baseUrl: baseUrl
});
await mstrClient.login({
username: 'Administrator',
password: '',
loginMode: 1
});
// MicroStrategy Tutorial
const projectId = 'B19DEDCC11D4E0EFC000EB9495D0F44F';
mstrClient.setProjectId(projectId);
const dossierId = 'C103CFA847057FC9FCF772ADF9092BD9';
// APIs are grouped by topic
const DossierAPI = mstrClient.dossiersAndDocuments;
const dossierDefn = await DossierAPI.getDossierDefinition(dossierId);
})();
These methods are simpler wrappers around the APIs exposed by the MicroStrategy Library REST API server. For full documentation, refer to your MicroStrategy Library's api-docs
endpoint.
For example, if your MicroStrategy Library environment has the following URL:
http://example.com/MicroStrategyLibrary/
Your API documentation can be found here:
http://example.com/MicroStrategyLibrary/api-docs
For public REST API documentation from the MicroStrategy demo environment, refer to the following URL: https://demo.microstrategy.com/MicroStrategyLibrary/api-docs
Refer to the samples folder for more samples tested in node.js. These can be directly executed using the node command:
node samples/getDossier.js
If you notice any missing endpoints, please contribute with a PR to enhance this module.
This module includes a minimal wrapper to execute tasks via the Task API.
- Import the module and create a new instance of the TaskAPI client.
- Provide a URL to your MicroStrategy Web taskProc via the taskProcUrl parameter.
- Build a request via the
executeTask()
method.
const mstr = require('microstrategy');
(async () => {
const taskApi = new mstr.TaskAPI({
taskProcUrl: 'http://aps-tsiebler-vm:8080/2020u1/servlet/taskProc'
});
const taskId = 'login';
// Collect these from the task builder page
const taskParameters = {
server: 'aps-tsiebler-vm',
project: 'MicroStrategy Tutorial',
userid: 'administrator',
password: ''
};
// The response includes { body, headers, status, statusText }
try {
const res = await taskApi.executeTask(taskId, taskParameters);
console.log('task response: ', res.body);
} catch (e) {
console.error(e);
}
})();