Promise based Node client for Geckoboard's dataset API


Keywords
geckoboard, node
License
ISC
Install
npm install tuko@1.1.0

Documentation

tuko

  • Promise based Node >= 6.0.0 module for Geckoboard's datasets API.
  • tuko is the Waray word for gecko
  • Uses only standard library dependencies!

tl;dr;

const tuko = require('tuko');
const gb = tuko(process.env.GECKOBOARD_API_KEY);
const id = 'space.cargo.mrr';

gb.create(id, { 
  fields: {
    mrr: { type: 'money', currency_code: 'USD' },
    date: { type: 'date' },
  }
})
.then(() => gb.update(id, {
  data: [
    { mrr: 4307200, date: '2016-06-01' },
    { mrr: 4401550, date: '2016-07-01' },
    { mrr: 4508333, date: '2016-08-01' },
  ]
}))
.catch(console.error);

Detail

Install: npm i tuko -S

Require:

The import returns a function that expects your Geckoboard API key which returns the client.

const gb = require('tuko')(GECKOBOARD_API_KEY);

API

Methods:

  • ping()
  • create(id, schema)
  • update(id, data)
  • append(id, data)
  • del(id)
.ping()

Sends a GET request to the datasets API root to check if all is well (e.g. with your API key)

gb.ping().then(() => console.log('All is well'));
.create(id, schema)

Create a new dataset. id is a string, and schema is an object with a fields property:

gb.create('rainbows', { 
  fields: {
    date: { type: 'date', name: 'date' },
    count: { type: 'number', name: 'count' },
  },
})
.then(res => console.log(res));
.update(id, data)

Replace all the data in a dataset with data. id is the dataset's string name, and data is an object with a data property with an array value:

gb.update('rainbows', {
  data: [
    { date: '2016-07-09', count: 100 },
  ],
})
.then(res => console.log(res));

.append(id, data)

Append new data to the dataset. id is the dataset's string name, and data is an object with a data property with an array value:

gb.append('rainbows', {
  data: [
    { date: '2016-12-25', count: 1337 },
  ],
})
.then(res => console.log(res));
.del(id)

Delete a dataset. id is the the dataset's string name.

gb.del('rainbows').then(res => console.log(res));