Skip to content

MartialSeron/glpi-api

Repository files navigation

GLPI-API

Node module for GLPI REST API

npm version Build Status codecov license Rate this package

Installation

$ npm install --save glpi-api

Usage

Configuration

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);

Examples

Get a ticket

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());

Add a requester to a ticket

glpi.initSession()
.then(() => glpi.addItems('Ticket_User', {
  users_id : 154,
  tickets_id : 123456,
  type : 1,
}))
.catch((err) => {
  // Manage error
})
.then(() => glpi.killSession());

Accept solution (since 9.3)

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());

Close a ticket

glpi.initSession()
.then(() => glpi.updateItems('Ticket', 123456, { status : 6 }))
.catch((err) => {
  // Manage error
})
.then(() => glpi.killSession());

Upload a file and attach it to a ticket

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());

Test

Tests are only available for cloned repository

$ npm test

Authors

License

This project is licensed under the MIT License - see the LICENSE.md file for details