Redmine Rest API Client for node.js with Promises/A+ compliance


Redmine REST API Client for node.js implemented with promises/A+

This is a modified version of the original redmine module by sotarok using D.js to implement it as a promises/A+ compatible api.

  • support both http / https protocols
  • support basicAuth authentication
  • compatible with promises/A+
  • simple api
  • recursively retrieve issues until given date
  • Settings getter/setter
    • all setters return the Redmine instance and are chainable
    • (get|set)ApiKey(key) api key given by your redmine server
    • (get|set)Host(host) ip or hostname of the redmine api endpoint
    • (get|set)Port(port) set remote server port default to 80
    • (get|set)BasicAuth(auth) string used as auth option of the http request
    • (get|set)Protocol(protocol) http or https
    • (get|set)PathPrefix(prefix) path prefix to prepend to each request paths
    • (get|set)SslCaCert(certFilePath) path or array of path to authority certificates files to check the remote host against
    • (get|set)SslClientCert(certFilePath) path to public x509 certificate file to use
    • setSslClientKey(keyFilePath, passPhrase)* path to client private key file to use for SSL and associated passphrase
  • Generics
    • all generic methods path doesn't require leading slash nor the .json extension e.g. for issues it can be "issues" or "issues/{id}"
    • get(path, params) get a single resource or a list or resources by giving
    • getAllSince(what, since, params) helper to get all items of a collection since the given date (isoString or Date instance)
    • post(path, params) create a new resource on corresponding path
    • put(path, params) update a given resource with params
    • del(path, params) remove given resource
  • Issues
    • getIssues(params) return list of issues (max 100)
    • getIssue(id) return an issue details by its id
    • getAllIssuesSince(since, params) return all issues since given date (isoString or Date instance)
    • postIssue(params) create a new issue
    • updateIssue(id, params) update issue with given id
    • deleteIssue(id) delete an issue by its id
  • Users
    • getUsers(params) return list of users (max 100)
    • getUser(id) retrieve user details by its id
    • getUserCurrent() return current user (the one corresponding to the apiKey)
  • Projects
    • getProjects(params) get a list of projects (max 100)
    • getProject(id) return details about a single project by its id
    • getAllProjectsSince(since, params) return all projects updated since given date (isoString or Date instance)
  • Time Entries
    • getTimeEntries(params) returns a list of time entries
    • getTimeEntry(id) returns time entry of given id
    • postTimeEntry(params) returns time entry of given id
    • updateTimeEntry(id, params) update time entry corresponding to the given id
    • deleteTimeEntry(id) delete time entry of given id
var Redmine = require('promised-redmine');
var config = {
  host: "localhost", // required 
  apiKey: "XXXXXX", // required 
  pathPrefix: "/myRedminePath",
  protocol: "http",
  // if using SSL settings, change protocol and port accordingly 
  sslCaCert: '/path/to/root/ca.pem', // defaults to null 
  sslClientCert: '/path/to/client/cert.pem', // defaults to null 
  sslClientKey: '/path/to/client/cert.key', // defaults to null 
  sslClientPassphrase: 'clientKeyPassphrase' // defaults to null 
var redmineApi = new Redmine(config);
  .success(function(issues){ // success is an alias of then whithout the promise rejection management in D.js the underlying promise library 
    // do something with that 

Install from npm:

$ npm install promised-redmine