Online Time Tracking and Invoicing Software
Emit new notifications when a new timesheet entry is created
Emit an event for each new or modified record in a table
Emit an event for each new or modified record in a view
Creates a new time entry object. Create a time entry via duration documentation, Create a time entry via start and end time documentation
Create one or more records in a table by passing an array of objects containing field names and values as key/value pairs.
Retrieve records from a table with automatic pagination. Optionally sort and filter results.
Retrieve records in a view with automatic pagination. Optionally sort and filter results.
The Harvest API allows developers to programmatically access data and objects
in Harvest, a web-based time tracking application. With the API, developers can
create applications that submit and retrieve time tracking data, as well as
automate various aspects of the Harvest user experience.
Some examples of what you can build using the Harvest API include:
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
harvest: {
type: "app",
app: "harvest",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://api.harvestapp.com/v2/users/me`,
headers: {
Authorization: `Bearer ${this.harvest.$auth.oauth_access_token}`,
"Harvest-Account-Id": `${this.harvest.$auth.account_id}`,
"User-Agent": `Pipedream.com`,
},
params: {
account_id: `${this.harvest.$auth.account_id}`,
},
})
},
})
Using the Airtable API, you can build applications that can:
module.exports = defineComponent({
props: {
airtable: {
type: "app",
app: "airtable",
},
baseId: {
type: "$.airtable.baseId",
appProp: "airtable",
},
tableId: {
type: "$.airtable.tableId",
baseIdProp: "baseId",
},
},
async run({steps, $}) {
const Airtable = require('airtable');
const base = new Airtable({apiKey: this.airtable.$auth.api_key}).base(this.baseId);
const data = []
await base(this.tableId).select({
// pass optional config parameters here
}).eachPage(function page(records, fetchNextPage) {
// This function (`page`) will get called for each page of records.
records.forEach(function(record) {
data.push(record._rawJson)
});
// To fetch the next page of records, call `fetchNextPage`.
// If there are more records, `page` will get called again.
// If there are no more records, `done` will get called.
fetchNextPage();
})
return data
},
})