mirror of
https://github.com/stjornleysi/telegram_glpi.git
synced 2026-01-29 10:20:29 +00:00
150 lines
3.2 KiB
Markdown
150 lines
3.2 KiB
Markdown
# GLPI-API
|
|
|
|
Node module for [GLPI](https://glpi-project.org/) REST API
|
|
|
|
[](https://badge.fury.io/js/glpi-api)
|
|
[](https://travis-ci.com/MartialSeron/glpi-api)
|
|
[](https://codecov.io/gh/MartialSeron/glpi-api)
|
|

|
|
|
|
## 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
|
|
|