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
Authentication
Authentication method: OAuth 2.0
Required scopes
harvest:all Authentication profiles
connection · oauth2
OAuth scopes: harvest:all
Supported objects
| Object | Read | Write | Notes |
|---|---|---|---|
| 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 · Requiredmethod· string · Requiredheaders· object · Optional, Authorization headers are injected automatically from your connection.queryParams· object · Optional, Appended to the URL as ?key=value.body_type· string · Optionalbody· object · Optionalresponse_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
- Add the Harvest connector to the workflow in the target Flows360 Studio instance.
- 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.
- Provide the connection fields declared by the pinned package:
- No provider credential fields are declared by the pinned package.
OAuth scopes
harvest:all
- Select the required action or trigger and complete its declared input fields. Required and optional inputs are defined by the exact package schema.
- 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.