axios-redmine
Version:
axios-redmine is a nodejs library which supports 100% features of Redmine's REST API.
125 lines (96 loc) ⢠4.52 kB
Markdown
# axios-redmine
[](https://nodei.co/npm/axios-redmine/)
[](https://github.com/lupinthe14th/axios-redmine/actions/workflows/ci.yml)
[](https://codecov.io/gh/lupinthe14th/axios-redmine)
[](https://www.npmjs.com/package/axios-redmine)
[](https://nodejs.org/)
[](https://www.gnu.org/licenses/gpl-3.0)
A comprehensive Node.js library that supports **100% of Redmine's REST API** features, built with [axios](https://github.com/axios/axios).
## Features
⨠**Complete API Coverage** - Supports all Redmine REST API endpoints
š **TypeScript Support** - Full type definitions with IntelliSense
ā” **Promise-based** - Modern async/await syntax
š”ļø **Secure** - Regular security updates and dependency maintenance
š¦ **Lightweight** - Minimal dependencies
## Requirements
- **Node.js** >= 20.0.0
- **Redmine** >= 1.0 (depends on features used)
## Installation
To install axios-redmine, simply:
```shell
npm install axios-redmine
```
## Usage
```js
'use strict()'
const Redmine = require('axios-redmine')
// protocol required in Hostname, supports both HTTP and HTTPS
const hostname = process.env.REDMINE_HOST || 'https://docker.for.mac.host.internal'
const config = {
apiKey: process.env.REDMINE_APIKEY,
rejectUnauthorized: process.env.REJECT_UNAUTHORIZED
}
const redmine = new Redmine(hostname, config)
/**
* Dump issue
*/
const dumpIssue = function (issue) {
console.log('Dumping issue:')
for (const item in issue) {
console.log(' ' + item + ': ' + JSON.stringify(issue[item]))
}
}
redmine
.issues({ limit: 2 })
.then(response => {
for (const i in response.data.issues) {
dumpIssue(response.data.issues[i])
}
console.log('total_count: ', response.data.total_count)
})
.catch(err => {
console.log(err)
})
```
## TypeScript Support
axios-redmine includes TypeScript type definitions for enhanced developer experience with autocomplete and type checking:
```typescript
import Redmine, { RedmineConfig } from 'axios-redmine';
const config: RedmineConfig = {
apiKey: process.env.REDMINE_APIKEY
};
const redmine = new Redmine('https://redmine.example.org', config);
// Full IntelliSense and type checking
async function getIssues() {
const response = await redmine.issues({ limit: 10 });
console.log(response.data.issues);
}
```
See [example/typescript-example.ts](example/typescript-example.ts) for more examples.
## Supported features for Redmine REST API
| Resource | Status | Availability | Supported |
|:--------------------|:----------|-------------:|:---------:|
| Issues | Stable | 1.0 | ā |
| Projects | Stable | 1.0 | ā |
| Project Memberships | Alpha | 1.4 | ā |
| Users | Stable | 1.1 | ā |
| Time Entries | Stable | 1.1 | ā |
| News | Prototype | 1.1 | ā |
| Issue Relations | Alpha | 1.3 | ā |
| Versions | Alpha | 1.3 | ā |
| Wiki Pages | Alpha | 2.2 | ā |
| Queries | Alpha | 1.3 | ā |
| Attachments | Beta | 1.3 | ā |
| Issue Statuses | Alpha | 1.3 | ā |
| Trackers | Alpha | 1.3 | ā |
| Enumerations | Alpha | 2.2 | ā |
| Issue Categories | Alpha | 1.3 | ā |
| Roles | Alpha | 1.4 | ā |
| Groups | Alpha | 2.1 | ā |
| Custom Fields | Alpha | 2.4 | ā |
| Search | Alpha | 3.3 | N/A |
## Links
* Redmine wiki page: http://www.redmine.org/projects/redmine/wiki/Rest_api
* NPM package: https://www.npmjs.com/package/axios-redmine
## Notice
+ axios-redmine only supports using the [JSON](http://en.wikipedia.org/wiki/JSON) format.