Skip to content
← Back to documentation
Technical Reference

Harvest

Time Tracking Software with Invoicing

CategoryProductivity
AuthenticationOAuth 2.0
Version0.2.0
Published scopes1 published scope
Last updatedSeptember 19, 2026

Overview

Connect Harvest with Flows360

Time Tracking Software with Invoicing

Use the Harvest connector to include its declared actions and events in Flows360 workflows without duplicating the integration logic inside each consuming system. This pinned connector version currently exposes 11 actions and no declared triggers.

Available actions

  • Get Clients
  • Get Estimates
  • Get Expenses
  • Get Invoices
  • Get Projects
  • Get Roles
  • Get Tasks
  • Get Time Entries
  • Plus 3 additional declared actions.

Available triggers

  • No triggers are declared in this pinned package.

The capability list above is generated from the exact reviewed connector package so the public description stays aligned with the version Flows360 operates.

Technical guide

Technical reference

Package identity

  • Connector: Harvest
  • Package: @activepieces/piece-harvest@0.2.0
  • Exact artifact digest: sha256:82029ee404e1fc61d200f065258b00d479465a3e3b92356df3f862d43e7ef1ee
  • Runtime: Activepieces-compatible deterministic worker
  • Source: the exact reviewed Activepieces source

Authentication

OAUTH2. Connection values are tenant-specific and remain in the consuming Studio instance; CDK stores definitions and field metadata, not customer credential values.

Action contracts

  • Get Clients (get_clients), Fetches Clients Classification: read.
  • Get Estimates (get_estimates), Fetches Estimates Classification: read.
  • Get Expenses (get_expenses), Fetches expenses Classification: read.
  • Get Invoices (get_invoices), Fetches invoices Classification: read.
  • Get Projects (get_projects), Fetches projects Classification: read.
  • Get Roles (get_roles), Fetches Roles Classification: read.
  • Get Tasks (get_tasks), Fetches Tasks Classification: read.
  • Get Time Entries (get_time_entries), Fetches Time Entries Classification: read.
  • Get Users (get_users), Fetches Users Classification: read.
  • Uninvoiced Report (reports-uninvoiced), Uninvoiced hours and expenses for all billable projects Classification: read.
  • Custom API Call (custom_api_call), Make a custom API call to a specific endpoint Classification: read.

Trigger contracts

  • No trigger delivery contracts are declared.

Verification

Deterministic execution evidence is recorded for the pinned artifact, including 1 exercised action entrypoint and 0 exercised trigger entrypoints.

Capability summary

AuthenticationOAuth 2.0
Supported objects11
Supported actions11
TriggersNone published

Authentication

Authentication method: OAuth 2.0

Required scopes

harvest:all

Authentication profiles

connection · oauth2

OAuth scopes: harvest:all

Supported objects

ObjectReadWriteNotes
Get Clients Yes No Fetches Clients
Get Estimates Yes No Fetches Estimates
Get Expenses Yes No Fetches expenses
Get Invoices Yes No Fetches invoices
Get Projects Yes No Fetches projects
Get Roles Yes No Fetches Roles
Get Tasks Yes No Fetches Tasks
Get Time Entries Yes No Fetches Time Entries
Get Users Yes No Fetches Users
Uninvoiced Report Yes No Uninvoiced hours and expenses for all billable projects
Custom API Call Yes No Make a custom API call to a specific endpoint

Supported actions

Get Clients · Read

Fetches Clients

get_clients · Risk: low · Retry: safe

Inputs

  • is_active · string · Optional, Pass `true` to only return active clients and `false` to return inactive clients.
  • updated_since · string · Optional, Only return clients that have been updated since the given date and time.
  • page · string · Optional, DEPRECATED: The page number to use in pagination.
  • per_page · string · Optional, The number of records to return per page. (1-2000)
Get Estimates · Read

Fetches Estimates

get_estimates · Risk: low · Retry: safe

Inputs

  • from · string · Optional, Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)
  • to · string · Optional, Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)
  • state · string · Optional, Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.
  • updated_since · string · Optional, Only return estimates that have been updated since the given date and time.
  • client_id · string · Optional, Only return estimates belonging to the client with the given ID.
  • page · string · Optional, The page number to use in pagination.
  • per_page · string · Optional, The number of records to return per page. (1-2000)
Get Expenses · Read

Fetches expenses

get_expenses · Risk: low · Retry: safe

Inputs

  • from · string · Optional, Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)
  • to · string · Optional, Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)
  • user_id · string · Optional, Only return expenses belonging to the user with the given ID.
  • client_id · string · Optional, Only return expenses belonging to the client with the given ID.
  • project_id · string · Optional, Only return expenses belonging to the project with the given ID.
  • is_billed · string · Optional, Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.
  • updated_since · string · Optional, Only return expenses that have been updated since the given date and time.
  • page · string · Optional, The page number to use in pagination.
  • per_page · string · Optional, The number of records to return per page. (1-2000)
Get Invoices · Read

Fetches invoices

get_invoices · Risk: low · Retry: safe

Inputs

  • from · string · Optional, Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)
  • to · string · Optional, Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)
  • state · string · Optional, Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.
  • updated_since · string · Optional, Only return invoices that have been updated since the given date and time.
  • client_id · string · Optional, Only return invoices belonging to the client with the given ID.
  • project_id · string · Optional, Only return invoices belonging to the project with the given ID.
  • page · string · Optional, The page number to use in pagination.
  • per_page · string · Optional, The number of records to return per page. (1-2000)
Get Projects · Read

Fetches projects

get_projects · Risk: low · Retry: safe

Inputs

  • is_active · string · Optional, Pass `true` to only return active projects and `false` to return inactive projects.
  • updated_since · string · Optional, Only return projects that have been updated since the given date and time.
  • client_id · string · Optional, Only return invoices belonging to the client with the given ID.
  • page · string · Optional, DEPRECATED: The page number to use in pagination.
  • per_page · string · Optional, The number of records to return per page. (1-2000)
Get Roles · Read

Fetches Roles

get_roles · Risk: low · Retry: safe

Inputs

  • page · string · Optional, DEPRECATED: The page number to use in pagination.
  • per_page · string · Optional, The number of records to return per page. (1-2000)
Get Tasks · Read

Fetches Tasks

get_tasks · Risk: low · Retry: safe

Inputs

  • is_active · string · Optional, Pass `true` to only return active tasks and `false` to return inactive tasks.
  • updated_since · string · Optional, Only return tasks that have been updated since the given date and time.
  • page · string · Optional, DEPRECATED: The page number to use in pagination.
  • per_page · string · Optional, The number of records to return per page. (1-2000)
Get Time Entries · Read

Fetches Time Entries

get_time_entries · Risk: low · Retry: safe

Inputs

  • from · string · Optional, Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)
  • to · string · Optional, Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)
  • user_id · string · Optional, Only return time entries belonging to the user with the given ID.
  • client_id · string · Optional, Only return time entries belonging to the client with the given ID.
  • project_id · string · Optional, Only return time entries belonging to the project with the given ID.
  • task_id · string · Optional, Only return time entries belonging to the task with the given ID.
  • external_reference_id · string · Optional, Only return time entries with the given external reference ID.
  • is_billed · string · Optional, Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.
  • is_running · string · Optional, Pass `true` to only return running time entries and `false` to return non-running time entries.
  • updated_since · string · Optional, Only return time entries that have been updated since the given date and time.
  • page · string · Optional, The page number to use in pagination.
  • per_page · string · Optional, The number of records to return per page. (1-2000)
Get Users · Read

Fetches Users

get_users · Risk: low · Retry: safe

Inputs

  • is_active · string · Optional, Pass `true` to only return active users and `false` to return inactive users.
  • updated_since · string · Optional, Only return users that have been updated since the given date and time.
  • page · string · Optional, DEPRECATED: The page number to use in pagination.
  • per_page · string · Optional, The number of records to return per page. (1-2000)
Uninvoiced Report · Read

Uninvoiced hours and expenses for all billable projects

reports_uninvoiced · Risk: low · Retry: safe

Inputs

  • from · string · Required, Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)
  • to · string · Required, Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)
  • include_fixed_fee · string · Optional, Whether or not to include fixed-fee projects in the response. (Default: true)
  • page · string · Optional, The page number to use in pagination.
  • per_page · string · Optional, The number of records to return per page. (1-2000)
Custom API Call · Read

Make a custom API call to a specific endpoint

custom_api_call · Risk: low · Retry: safe

Inputs

  • url · object · Required
  • method · string · Required
  • headers · object · Optional, Authorization headers are injected automatically from your connection.
  • queryParams · object · Optional, Appended to the URL as ?key=value.
  • body_type · string · Optional
  • body · object · Optional
  • response_is_binary · boolean · Optional, Enable for files like PDFs, images, etc.
  • failsafe · boolean · Optional, On a failed request, output the error instead of failing the step.
  • timeout · number · Optional, Seconds to wait for a response. Empty: up to the flow limit (10 min).
  • followRedirects · boolean · Optional, Follow 3xx redirects instead of returning them as the response.

Setup

Setup

  1. Add the Harvest connector to the workflow in the target Flows360 Studio instance.
  2. Create or select the tenant-specific connection required by the connector. Connection secrets remain in the Studio connection boundary and are not copied into CDK documentation.
  3. Provide the connection fields declared by the pinned package:
  • No provider credential fields are declared by the pinned package.

OAuth scopes

  • harvest:all
  1. Select the required action or trigger and complete its declared input fields. Required and optional inputs are defined by the exact package schema.
  2. Test the workflow in the appropriate environment before enabling production scheduling or event delivery.

Limitations

Limitations and operational notes

  • This content describes @activepieces/piece-harvest@0.2.0; provider behaviour can change independently and should be revalidated when the provider or connector version changes.
  • Only the 11 actions and 0 triggers declared by this pinned package are represented here.
  • Tenant credentials and connection values are not stored in the public connector record.
  • Provider-side permissions, account entitlements, quotas and rate limits remain subject to the connected provider account and are not inferred when the package does not declare them.
  • Deterministic execution evidence is recorded for the pinned artifact, including 1 exercised action entrypoint and 0 exercised trigger entrypoints.

Troubleshooting

Why canu2019t the connector authenticate?

Check the tenant connection in Studio and confirm every required Harvest connection field is present. Re-authorise OAuth-based connections if the provider token or consent has expired. Do not place credential values in CDK content or logs.

Why is an action or trigger unavailable?

Confirm that the workflow is using @activepieces/piece-harvest@0.2.0 and compare the requested capability with the declared action and trigger list for this version. A capability that is not declared by the pinned package should not be presented as supported.

What should I check after a provider-side change?

Revalidate authentication, required fields, action/trigger behaviour and provider documentation before publishing refreshed connector content or moving a new package version into production.