Files
telegram_glpi/node_modules/glpi-api/README.md
Александр Тороп 038bf44010 init
2024-03-30 18:27:37 +03:00

150 lines
3.2 KiB
Markdown

# GLPI-API
Node module for [GLPI](https://glpi-project.org/) REST API
[![npm version](https://badge.fury.io/js/glpi-api.svg)](https://badge.fury.io/js/glpi-api)
[![Build Status](https://travis-ci.com/MartialSeron/glpi-api.svg?branch=master)](https://travis-ci.com/MartialSeron/glpi-api)
[![codecov](https://codecov.io/gh/MartialSeron/glpi-api/branch/master/graph/badge.svg)](https://codecov.io/gh/MartialSeron/glpi-api)
![license](https://img.shields.io/badge/license-MIT-orange.svg)
## Installation
```
$ npm install --save glpi-api
```
## Usage
### Configuration
```javascript
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
```javascript
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
```javascript
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)
```javascript
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
```javascript
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
```javascript
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
* **Martial Séron** - [MartialSeron](https://github.com/MartialSeron)
## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details