Git Product home page Git Product logo

glpi-api's Introduction

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

glpi-api's People

Contributors

dependabot[bot] avatar martialseron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

glpi-api's Issues

Compatibility with GLPI 10.0.2 version

Hi folks. Thanks for the great job!

Is this client compatible with GLPI 10.0.2 version? I'm getting an error when I try to upload a file:

The calling code:

const path = require('path');
const GlpiApi = require('glpi-api');

async function test() {
    const config = {
        app_token: 'XXX',
        apiurl: 'XXX',
        user_token: 'XXX',
    };

    const glpi = new GlpiApi(config);

    await glpi.initSession();

    const file = path.resolve(__dirname, 'test.txt')
    const result = await glpi.upload({
        filePath: file,
        fileName: 'my_custom_name.txt',
        fileType: 'plain/text',
    }, 'test');

    glpi.killSession();
}

async function start() {
    await test();
}

start();

The error (pt_BR):

> [email protected] start
> node -r esm index.js

/home/lzkill/Projects/glpi-rest/node_modules/glpi-api/glpi.js:185
      throw new ServerError(err);
            ^

ServerError: ERROR_BAD_ARRAY
    at /home/lzkill/Projects/glpi-rest/node_modules/glpi-api/glpi.js:185:13
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async test (/home/lzkill/Projects/glpi-rest/index.js:16:20)
    at async start (/home/lzkill/Projects/glpi-rest/index.js:32:5) {
  code: 400,
  comment: 'o parâmetro de entrada deve ser um vetor de objetos; ver documentação em seu navegador em https://XXX/apirest.php/#ERROR_BAD_ARRAY'
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.