Node module for GLPI REST API
$ npm install --save glpi-api
const GlpiApi = require('glpi-api');
// Config with user_token
const config = {
app_token : 'AHBIwc4M21Q8yaOzrluxojHJRvHTF6gteAlDBaFW',
apiurl : 'https://myglpi.com/apirest.php',
user_token : 'tt5jyPvv311OzjmrJMNh2Gqgu5ovOOy7saE2fI5ha',
};
// or
// Config with basic auth
const config = {
app_token : 'AHBIwc4M21Q8yaOzrluxojHJRvHTF6gteAlDBaFW',
apiurl : 'https://myglpi.com/apirest.php',
auth : {
username : 'glpi',
password : 'secret',
},
};
const glpi = new GlpiApi(config);
glpi.initSession()
.then(() => glpi.getItem('Ticket', 123456))
.then((ret) => {
const ticket = ret.data;
// Do what you want with your ticket
})
.catch((err) => {
// Manage error
})
.then(() => glpi.killSession());
glpi.initSession()
.then(() => glpi.addItems('Ticket_User', {
users_id : 154,
tickets_id : 123456,
type : 1,
}))
.catch((err) => {
// Manage error
})
.then(() => glpi.killSession());
glpi.initSession()
.then(() => glpi.getSubItems('Ticket', 123456, 'ITILSolution'))
.then((ret) => {
if (!ret.data.length) {
throw new Error('No solution for this item');
}
const { id : solutionId } = ret.data[0]; // the first solution in array is the most recent solution
return glpi.updateItems('ITILSolution', solutionId, {
status : 3,
users_id_approval : 154, // if approver is different than logged user
});
})
.catch((err) => {
// Manage error
})
.then(() => glpi.killSession());
glpi.initSession()
.then(() => glpi.updateItems('Ticket', 123456, { status : 6 }))
.catch((err) => {
// Manage error
})
.then(() => glpi.killSession());
const file = path.resolve(__dirname, 'myfile.txt');
glpi.initSession()
.then(() => glpi.upload(file, {
entities_id : 0,
is_recursive : true,
documentcategories_id : 2,
}))
.then((ret) => {
const { id : documents_id } = ret.data;
return glpi.addItems('Document_Item', {
documents_id,
items_id : 123456,
itemtype : 'Ticket',
})
})
.catch((err) => {
// Manage error
})
.then(() => glpi.killSession());
Tests are only available for cloned repository
$ npm test
- Martial Séron - MartialSeron
This project is licensed under the MIT License - see the LICENSE.md file for details