Harvest is a web-based time tracking tool. This package is a full client API built using node.js and the V2 of Harvest API.
npm install harvest-v2
let Harvest = require('harvest-v2');
let harvest = new Harvest({
account_ID: config.harvest.account_id,
access_token: config.harvest.token,
user_agent: 'Harvest API'
});
For example to get the Clients list:
harvest.clients.list().then((clients) => {
console.log(clients);
}).catch(function (err) {
console.log(err)
});
OR
harvest.clients.list().then(function (clients) {
console.log(clients);
}).catch(function (err) {
console.log(err)
});
OR
harvest.clients.list(function(error, response, results) {
if (!error) {
console.log(results);
}
});
All three methods return the body of the response. To get the full response with two first methods set resolveWithFullResponse to true before using the method:
harvest.options.resolveWithFullResponse = true;
harvest.clients.list().then(...);
It is false by default.
##Testing
To run tests you need to have Harvest account, you can create a free 30-day trial account here. And you also need to change the harvest config file (test/config.auth.js) with your account information.
const config = {
account_ID: process.env.ACCOUNT_ID || '...',
access_token: process.env.ACCESS_TOKEN || '...',
user_agent: process.env.USER_AGENT || '...'
};
npm test
# or
mocha
# or
npm run cover
If you want to display available params for each harvest api click on it, or click here to see the whole api docs.
-
list(callback)
retrieve(clientID, callback)
create({params}, callback)
update(clientID, {params}, callback)
delete(clientID, callback)
Example:
harvest.clients.list()
-
list(callback)
retrieve(clientContactID, callback)
create({params}, callback)
update(clientContactID, {params}, callback)
delete(clientContactID, callback)
Example:
harvest.clientContacts.list()
-
retrieve(callback)
Example:
harvest.company.retrieve()
-
list(callback)
retrieve(invoiceID, callback)
create({params}, callback)
update(invoiceID, {params}, callback)
delete(invoiceID, callback)
Example:
harvest.invoices.list()
-
list(invoiceID, callback)
create(invoiceID, {params}, callback)
delete(invoiceID, messageID, callback)
mark(invoiceID, params, callback)
Example:
harvest.invoiceMessages.list()
-
list(invoiceID, callback)
create(invoiceID, {params}, callback)
delete(invoiceID, paymentID, callback)
Example:
harvest.invoicePayments.list()
-
list(callback)
retrieve(invoiceItemCatID, callback)
create({params}, callback)
update(invoiceItemCatID, {params}, callback)
delete(invoiceItemCatID, callback)
Example:
harvest.invoiceItemCategories.list()
-
create(invoiceID, {params}, callback)
update(invoiceID, {params}, callback)
delete(invoiceID, {params}, callback)
Example:
harvest.invoiceLineItem.create()
-
list(callback)
retrieve(estimateID, callback)
create({params}, callback)
update(estimateID, {params}, callback)
delete(estimateID, callback)
Example:
harvest.estimates.list()
-
create(estimateID, {params}, callback)
update(estimateID, {params}, callback)
delete(estimateID, {params}, callback)
Example:
harvest.estimateLineItem.create()
-
list(estimateID, callback)
create(estimateID, {params}, callback)
delete(estimateID, messageID, callback)
mark(estimateID, {params}, callback)
Example:
harvest.estimateMessages.list()
-
list(callback)
retrieve(estimateItemCatID, callback)
create({params}, callback)
update(estimateItemCatID, {params}, callback)
delete(estimateItemCatID, callback)
Example:
harvest.estimateItemCategories.list()
-
list(callback)
retrieve(expenseID, callback)
create({params}, callback)
update(expenseID, {params}, callback)
delete(expenseID, callback)
Example:
harvest.expenses.list()
-
list(callback)
retrieve(expenseCategoryID, callback)
create({params}, callback)
update(expenseCategoryID, {params}, callback)
delete(expenseCategoryID, callback)
Example:
harvest.expenseCategories.list()
-
list(callback)
retrieve(taskID, callback)
create({params}, callback)
update(taskID, {params}, callback)
delete(taskID, callback)
Example:
harvest.tasks.list()
-
list(callback)
listBy({params}, callback)
retrieve(timeEntryID, callback)
create({params}, callback)
update(timeEntryID, {params}, callback)
delete(timeEntryID, callback)
restart(timeEntryID, callback)
stop(timeEntryID, callback)
Example:
harvest.timeEntries.list()
-
list(callback)
retrieve(projectID, callback)
create({params}, callback)
update(projectID, {params}, callback)
delete(projectID, callback)
Example:
harvest.projects.list()
-
list(projectID, callback)
retrieve(projectID, userAssignmentsID, callback)
create(projectID, {params}, callback)
update(projectID, userAssignmentsID, {params}, callback)
delete(projectID, userAssignmentsID, callback)
Example:
harvest.projectUserAssignments.list()
-
list(projectID, callback)
retrieve(projectID, taskAssignmentsID, callback)
create(projectID, {params}, callback)
update(projectID, taskAssignmentsID, {params}, callback)
delete(projectID, taskAssignmentsID, callback)
Example:
harvest.projectTaskAssignments.list()
-
list(callback)
retrieve(roleID, callback)
create({params}, callback)
update(roleID, {params}, callback)
delete(roleID, callback)
Example:
harvest.roles.list()
-
list(callback)
retrieve(theUser, callback)
// for the 'theUser' param, put: me or userIDcreate({params}, callback)
update(userID, {params}, callback)
delete(userID, callback)
Example:
harvest.users.list()
-
list(theUser, callback)
// me or userIDExample:
harvest.userProjectAssignments.list()