Harvest integration summary

Stitch’s Harvest integration replicates data using the Harvest REST API V2. Refer to the Schema section for a list of objects available for replication.

Harvest feature snapshot

A high-level look at Stitch's Harvest (v2.0) integration, including release status, useful links, and the features supported in Stitch.

STITCH
Release Status

Released

Supported By

Singer Community

Stitch Plan

Free

Singer GitHub Repository

Harvest Repository

DATA SELECTION
Table Selection

Unsupported

Column Selection

Unsupported

REPLICATION SETTINGS
Anchor Scheduling

Supported

Advanced Scheduling

Unsupported

Table-level Reset

Unsupported

Configurable Replication Methods

Unsupported

TRANSPARENCY
Extraction Logs

Supported

Loading Reports

Supported

Connecting Harvest

Harvest setup requirements

To set up Harvest in Stitch, you need:

  • Verify your Harvest user’s access. Stitch will have the same permissions as the user setting up the integration. This means Stitch will only be able to access the same objects and data as the authorizing user.

    For example: if you’re unable to access expenses in Harvest, Stitch will be unable to replicate expense data.

Before diving into the setup process, verify that the user setting up the integration has access to all the objects - such as expenses - that you want to replicate.

Read more about Harvest permissions in their documentation.

Step 1: Add Harvest as a Stitch data source

  1. Sign into your Stitch account.
  2. On the Stitch Dashboard page, click the Add Integration button.

  3. Click the Harvest icon.

  4. Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.

    For example, the name “Stitch Harvest” would create a schema called stitch_harvest in the destination. Note: Schema names cannot be changed after you save the integration.

  5. Enter your Harvest account name in the Account Name field. For example: if your Harvest account URL is stitch.harvestapp.com, you’d enter stitch in this field.

Step 2: Define the historical sync

The Sync Historical Data setting will define the starting date for your Harvest integration. This means that data equal to or newer than this date will be replicated to your data warehouse.

Change this setting if you want to replicate data beyond Harvest’s default setting of 1 year. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.

Step 3: Create a replication schedule

In the Replication Frequency section, you’ll create the integration’s replication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.

Harvest integrations support the following replication scheduling methods:

To keep your row usage low, consider setting the integration to replicate less frequently. See the Understanding and Reducing Your Row Usage guide for tips on reducing your usage.

Step 4: Authorize Stitch to Access Harvest

Lastly, you’ll be directed to Harvest’s website to complete the setup.

  1. Enter your Harvest credentials and click Create Integration.
  2. A screen asking for authorization to Harvest will display. Note that Stitch will only ever read your data.
  3. Click Connect.
  4. After the authorization process successfully completes, you’ll be redirected back to Stitch.
  5. Click All Done.

Initial and historical replication jobs

After you finish setting up Harvest, its Sync Status may show as Pending on either the Stitch Dashboard or in the Integration Details page.

For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration. This may take some time to complete.

Free historical data loads

The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.


Harvest table schemas

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

listAllClients

The clients table contains info about the clients in your Harvest account.

id
INTEGER

Unique ID for the client.

Reference:

updated_at
DATE-TIME

The last time the client was updated.

name
STRING

The client’s name. Ex: Stitch Data

is_active
BOOLEAN

Indicates if the client is active or archived.

address
STRING

The physical address for the client.

currency
STRING

The currency denomination used by the client.

created_at
DATE-TIME

The time the client was updated.


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

listAllContacts

The contacts table contains info about the client contacts in your Harvest account.

id
INTEGER

The contact ID.

updated_at
DATE-TIME

The last time the contact was updated.

client_id
INTEGER

The contact’s client id.

Reference:

title
STRING

The title of the contact.

first_name
STRING

The contact’s first name.

last_name
STRING

The contact’s last name.

email
STRING

The contact’s email address.

phone_office
STRING

The contact’s office phone number.

phone_mobile
STRING

The contact’s mobile phone number.

fax
STRING

The contact’s fax number.

created_at
DATE-TIME

The time the contact was created.


estimate_item_categories

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

listAllEstimateItemCategories

The estimate_item_categories table contains info about the estimate item categories in your Harvest account.

id
INTEGER

The estimate item category ID.

updated_at
STRING

Date and time the estimate item category was last updated.

name
STRING

The name of the estimate item category.

created_at
STRING

Date and time the estimate item category was created.


estimate_line_items

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all estimates

The estimate_line_items table contains info about the line items contained in estimates.

Note: This table is updated based on new and updated estimates. This means that when an estimate is updated, this table will also be updated.

id
INTEGER

The estimate line item ID.

estimate_id
INTEGER

The ID of the estimate the line item is a part of.

Reference:

kind
STRING

The name of the estimate item category associated with the line item.

description
STRING

The description of the item.

quantity
INTEGER

The unit quantity of the item.

unit_price
NUMBER

The individual price per unit.

amount
NUMBER

The line item subtotal, calculated as quantity * unit_price.

taxed
BOOLEAN

If true, the estimate’s tax percentage applies to the item.

taxed2
BOOLEAN

If true, the estimate’s tax2 percentage applies to the item.


estimate_messages

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all messages for an estimate

The estimate_messages table contains info about the messages associated with estimates.

id
INTEGER

The estimate message ID.

updated_at
STRING

The time the message was last updated.

sent_by
STRING

The name of the user that created the message.

sent_by_email
STRING

The email of the user that created the message.

sent_from
STRING

The name of the user that the message was sent from.

sent_from_email
STRING

The email of the user that the message was sent from.

subject
STRING

The message subject.

body
STRING

The message body.

send_me_a_copy
BOOLEAN

If true, a copy of the message will be emailed to the current user.

event_type
STRING

The type of estimate event that occurred with the message. Possible values are:

  • sent
  • accept
  • decline
  • re-open
  • view
  • invoice

created_at
STRING

The time the message was created.

estimate_id
INTEGER

The ID of the estimate the message is associated.

Reference:

recipients
OBJECT

Details about the recipients of the message.

name
STRING

The name of the message recipient.

email
STRING

The email address of the message recipient.

estimate_messages (table), recipients (attribute)

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all estimates

The estimates table contains info about the estimates in your Harvest account.

id
INTEGER

The estimate ID.

Reference:

updated_at
DATE-TIME

The time the estimate was last updated.

client_id
INTEGER

The ID of the client the estimate is associated with.

Reference:

creator_id
INTEGER

The ID of the user that created the estimate.

Reference:

client_key
STRING

A string used to build a URL to the public web invoice for the client.

number
STRING

The estimate number.

purchase_order
STRING

The purchase order number.

amount
NUMBER

The total amount of the estimate, including discounts and taxes.

tax
STRING, NUMBER

The tax percentage applied to the subtotal, including line items and discounts.

tax_amount
NUMBER

The first amount of tax included, calculated from tax.

tax2
STRING, NUMBER

The percentage applied to the subtotal, including line items and discounts.

tax2_amount
NUMBER

The second amount of tax included, calculated from tax2.

discount
STRING, NUMBER

The percentage to be subtracted from the subtotal.

discount_amount
NUMBER

The discount amount, calulated from discount.

subject
STRING

The estimate subject.

notes
STRING

Any additional notes included on the estimate.

currency
STRING

The currency code associated with the estimate.

state
STRING

The current state of the estimate. Possible values are:

  • draft
  • sent
  • accepted
  • declined

issue_date
STRING

The date the estimate was issued.

sent_at
DATE-TIME

The time the estimate was sent.

accepted_at
DATE-TIME

The time the estimate was accepted.

declined_at
DATE-TIME

The time the estimate was declined.

created_at
DATE-TIME

The time the estimate was created.


expense_categories

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all expense categories

The expense_categories table contains info about the expense categories in your Harvest account.

id
INTEGER

The expense category ID.

Reference:

updated_at
DATE-TIME

The last time the expense category was updated.

name
STRING

The name of the expense category.

unit_name
STRING

The name of the unit associated with the expense category.

This column will only contain values for expense categories based on unit values.

unit_price
NUMBER

The price of the unit associated with the expense category.

This column will only contain values for expense categories based on unit values.

is_active
BOOLEAN

If true, the category is active.

created_at
DATE-TIME

The time the expense category was created.


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all expenses

The expenses table contains info about the expenses recorded in your Harvest account.

id
INTEGER

The expense ID.

updated_at
DATE-TIME

The last time the expense was updated.

client_id
INTEGER

The ID of the client associated with the expense.

Reference:

project_id
INTEGER

The ID of the project associated with the expense.

Reference:

expense_category_id
INTEGER

The ID of the category associated with the expense.

Reference:

user_id
INTEGER

The ID of the user that recorded the expense.

Reference:

user_assignment_id
INTEGER

The user assignment ID.

receipt_url
STRING

The URL of the receipt associated with the expense.

receipt_file_name
STRING

The file name of the receipt.

receipt_file_size
INTEGER

The size of the receipt file.

receipt_content_type
STRING

The content type of the receipt file.

invoice_id
INTEGER

The ID of the invoice associated with the expense.

Reference:

notes
STRING

Notes used to describe the expense.

billable
BOOLEAN

If true, the expense is billable.

is_closed
BOOLEAN

If true, the expense has been closed.

is_locked
BOOLEAN

If true, the expense has either been invoiced, approved, or the person/project related to the expense is archived.

is_billed
BOOLEAN

If true, the expense has been marked as invoiced.

locked_reason
STRING

The explanation for why the expense has been locked.

spent_date
DATE-TIME

The date the expense occurred.

created_at
DATE-TIME

The time the expense was created.

total_cost
NUMBER

The total cost of the expense.

units
NUMBER

The number of units contained in the expense, if calculated by unit price. Ex: 40 (miles)


external_references

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

The external_references table contains info about external references. External references are references to external services where time is tracked.

Note: This table is updated based on new and updated time_entries. This means that when an time entry is updated, this table will also be updated.

id
STRING

The ID of the external reference.

Reference:

task_id
INTEGER

The ID of the task associated with the reference.

Reference:

group_id
STRING

The ID of the group associated with the reference.

permalink
STRING

The permalink value associated with the reference.

service
STRING

The name of the service associated with the reference.

service_icon_url
STRING

The URL of the associated service’s icon.


invoice_item_categories

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all invoice item categories

The invoice_item_categories table contains info about the various categories that can be applied to invoice line items.

Note: Harvest includes two non-removable categories by default for the hours and expenses you bill.

id
INTEGER

The ID of the invoice item category.

updated_at
DATE-TIME

The last time the invoice item category was updated.

name
STRING

The name of the invoice item category.

created_at
DATE-TIME

The time the invoice item category was created.

use_as_service
BOOLEAN

Indicates if the invoice item category is used as a service.

use_as_expense
BOOLEAN

Indicates if the invoice item category is used as an expense.


invoice_line_items

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all invoices

The invoice_line_items table contains info about the line items contained in invoices.

Note: This table is updated based on new and updated invoices. This means that when an invoice is updated, this table will also be updated.

id
INTEGER

The invoice line item ID.

amount
NUMBER

The line item subtotal, calculated as quantity * unit_price.

description
STRING

The description of the line item.

invoice_id
INTEGER

The ID of the invoice containing the line item.

Reference:

kind
STRING

The name of the invoice item category associated with the item.

project_id
INTEGER

The ID of the project associated with the item.

Reference:

quantity
INTEGER

The unit quantity of the item.

taxed
BOOLEAN

If true, the invoice’s tax percentage applies to this line item.

taxed2
BOOLEAN

If true, the invoice’s tax2 percentage applies to this line item.

unit_price
NUMBER

The individual price per unit.


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all messages for an invoice

The invoice_messages table contains info about invoice messages, or emails sent to clients about invoices.

id
INTEGER

The ID of the invoice message.

updated_at
DATE-TIME

The time the invoice message was last updated.

attach_pdf
BOOLEAN

If true, a PDF of the invoice was attached to the message.

body
STRING

The body of the invoice message.

created_at
DATE-TIME

The time the invoice message was created.

event_type
STRING

The type of event that occurred with the message. Possible values are:

  • send
  • close
  • draft
  • re-open
  • view

include_link_to_client_invoice
BOOLEAN

If true, a link to the client invoice was included in the message body.

invoice_id
INTEGER

The ID of the invoice associated with the invoice message.

Reference:

recipients
OBJECT

Details about the recipients of the message.

name
STRING

The name of the message recipient.

email
STRING

The email address of the message recipient.

invoice_messages (table), recipients (attribute)

reminder
BOOLEAN

If true, this is a reminder message.

sent_by
STRING

The name of the user who created the invoice message.

sent_by_email
STRING

The email address of the user who created the invoice message.

sent_from
STRING

The name of the user who sent the invoice message.

sent_from_email
STRING

The email address the invoice message was sent from.

send_me_a_copy
BOOLEAN

If true, a copy will be emailed to the current user.

send_reminder_on
DATE-TIME

The date that a reminder should be sent.

subject
STRING

The subject of the invoice message.

thank_you
BOOLEAN

Indicates if this is a thank you message.


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all payments for an invoice

The invoice_payments table contains info about the payments applied to invoices in your Harvest account.

id
INTEGER

The invoice payment ID.

updated_at
DATE-TIME

The last time the invoice payment was updated.

amount
NUMBER

The amount of the invoice payment.

created_at
DATE-TIME

The time the invoice payment was created.

invoice_id
INTEGER

The ID of the invoice associated with the payment.

Reference:

notes
STRING

Any notes entered about the invoice payment.

paid_at
DATE-TIME

The date and time the invoice payment was made.

paid_date
STRING

The date the payment was made.

payment_gateway_id
INTEGER

If paid via the payment gateway, this field will contain the ID of the payment gateway used to make the invoice payment.

payment_gateway_name
INTEGER

If paid via the payment gateway, this field will contain the name of the payment gateway used to make the invoice payment.

recorded_by
STRING

The name of the user who recorded the invoice payment.

recorded_by_email
STRING

The email address of the user who recorded the payment.

transaction_id
STRING

If paid via PayPal, this field will contain the PayPal transaction ID associated with the invoice payment.

Otherwise, this will contain the card authorization.


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all invoices

The invoices table contains info about the invoices in your Harvest account.

id
INTEGER

The invoice ID.

Reference:

updated_at
DATE-TIME

The last time the invoice was updated.

amount
NUMBER

The total amount of the invoice.

client_id
INTEGER

The ID of the client associated with the invoice.

Reference:

client_key
STRING

A string used to build a URL to the public web invoice for the associated client.

closed_at
DATE-TIME

The date and time the invoice was closed.

creator_id
INTEGER

The ID of the user who created the invoice.

Reference:

created_at
DATE-TIME

The time the invoice was created.

currency
STRING

The currency denomination of the invoice.

discount
STRING, NUMBER

If applicable, the percentage to be subtracted from the subtotal.

discount_amount
NUMBER

If applicable, the amount calculated from discount.

due_amount
NUMBER

The due amount of the invoice.

due_date
DATE-TIME

The date that payment of the invoice is due by.

estimate_id
INTEGER

If applicable, the ID of the estimate associated with the invoice.

Reference:

issue_date
DATE-TIME

The date the invoice was issued.

notes
STRING

Any notes entered about the invoice.

number
STRING

The invoice number. If no value is set, Harvest will automatically generate a value.

paid_at
DATE-TIME

The date and time the invoice was paid.

paid_date
STRING

The date the invoice was paid.

payment_term
STRING

The timeframe in which the invoice should be paid. Possible values are:

  • upon receipt
  • net 15
  • net 30
  • net 45
  • net 60
  • custom

period_start
STRING

The start date of the period associated with the invoice.

period_end
STRING

The end date of the period associated with the invoice.

purchase_order
STRING

If applicable, the purchase order associated with the invoice.

retainer_id
INTEGER

If applicable, the ID of the retainer associated with the invoice.

sent_at
DATE-TIME

The date the invoice was sent.

state
STRING

The state of the invoice. Possible values:

  • open
  • draft
  • paid
  • closed

subject
STRING

The subject of the invoice.

tax
STRING, NUMBER

The tax percentage applied to the subtotal, including line items and discounts.

tax_amount
NUMBER

The first amount of tax included, calculated from tax. If tax is undefined, this value will be null.

tax2
STRING, NUMBER

The tax percentage applied to the subtotal, including line items and discounts.

tax2_amount
NUMBER

The amount calculated from tax2.


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all task assignments

The project_tasks table contains info about the tasks assigned to projects.

id
INTEGER

The project task ID.

Reference:

updated_at
DATE-TIME

The last time the project task was updated.

billable
BOOLEAN

If true, the project task is billable.

budget
NUMBER

The budget associated with the project task.

created_at
DATE-TIME

The time the project task was created.

hourly_rate
NUMBER

The hourly rate of the project task.

is_active
BOOLEAN

If true, the project task is active.

project_id
INTEGER

The ID of the project the task is associated with.

Reference:

task_id
INTEGER

The task ID.

Reference:


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all user assignments

The project_users table contains info about the users assigned to projects.

id
INTEGER

The project user ID.

Reference:

updated_at
DATE-TIME

The last time the project user was updated.

budget
NUMBER

If applicable, the budget of the project user.

created_at
STRING

The time the project user was created.

hourly_rate
NUMBER

The hourly rate of the project user.

is_active
BOOLEAN

If true, the project user is active.

is_project_manager
BOOLEAN

If true, the project user is a project manager.

project_id
INTEGER

The ID of the project the user is assigned to.

Reference:

user_id
INTEGER

The user ID of the project user.

Reference:


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all projects

The projects table contains info about the projects in your Harvest account.

id
INTEGER

The project ID.

Reference:

updated_at
DATE-TIME

The time the project was last updated.

bill_by
STRING

The method by which the project is invoiced.

budget
NUMBER

The budget for the project.

budget_by
STRING

The method by which the project is budgeted.

budget_is_monthly
BOOLEAN

If true, the budget resets every month.

client_id
INTEGER

The ID of the client associated with the project.

Reference:

code
STRING

The code applied to the project.

cost_budget
NUMBER

The budget value for Total Project Fees projects, or projects that have a budget_by value of Project_Cost.

cost_budget_include_expenses
BOOLEAN

Indicates if the budgets of Total Project Fees projects should include tracked expenses.

created_at
STRING

The time the project was created.

fee
NUMBER

The amount to be invoiced for the project. Only used by fixed-fee projects.

ends_on
STRING

The end date of the project.

hourly_rate
NUMBER

The rate for projects that are billed by Project Hourly Rate.

is_active
BOOLEAN

If true, the project is active.

is_billable
BOOLEAN

Indicates if the project is billable.

is_fixed_fee
BOOLEAN

If true, the project is a fixed-fee project.

name
STRING

The name of the project.

notes
STRING

Any notes entered about the project.

notify_when_over_budget
BOOLEAN

Indicates if notification emails should be sent when a project reaches the budget threshold set in over_budget_notification_percentage.

over_budget_notification_percentage
INTEGER

The percentage value to trigger over budget email alerts.

over_budget_notification_date
DATE-TIME

The date of the last over budget notification. This will be null if no notifications have been sent.

show_budget_to_all
BOOLEAN

Indicates if the project budget should be shown to all employees.

Note: This doesn’t apply to Total Fee Projects, or projects that have a budget_by value of Project_Cost.

starts_on
STRING

The start date of the project.


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all roles

The roles table contains info about the roles in your Harvest account.

id
INTEGER

The role ID.

Reference:

updated_at
DATE-TIME

The date and time the role was last updated.

created_at
DATE-TIME

The date and time the role was created.

name
STRING

The name of the role.


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all tasks

The tasks table contains info about the tasks in your Harvest account.

id
INTEGER

The task ID.

Reference:

updated_at
DATE-TIME

The date and time the task was last updated.

billable_by_default
BOOLEAN

If true, default tasks should be marked as billable when creating a new project.

created_at
STRING

The date and time the task was created.

default_hourly_rate
NUMBER

The hourly rate to use for the task when it is added to a project.

is_active
BOOLEAN

If true, the task is active.

is_default
BOOLEAN

If true, the task should be automatically added to new projects.

name
STRING

The name of the task.


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all time entries

The time_entries table contains info about the time entries in your Harvest account.

id
INTEGER

The time entry ID.

Reference:

updated_at
DATE-TIME

The time the time entry was last updated.

billable
BOOLEAN

If true, the time entry is billable.

billable_rate
NUMBER

The billable rate for the time entry.

budgeted
NUMBER

If true, the time entry counts towards the project budget.

client_id
INTEGER

he ID of the client associated with the time entry.

Reference:

cost_rate
NUMBER

The cost rate for the time entry.

created_at
STRING

The time the time entry was created.

ended_time
STRING

The time the time entry was ended, if tracking by start/end times.

external_reference_id
STRING

The ID of the associated external reference, if any.

Reference:

hours
NUMBER

The number of hours tracked in the time entry.

is_billed
BOOLEAN

If true, the time entry has been marked as invoiced.

is_closed
BOOLEAN

If true, the time entry has been approved via Timesheet Approval.

is_locked
BOOLEAN

If true, the time entry is locked.

is_running
BOOLEAN

If true, the time entry is currently running.

invoice_id
INTEGER

The ID of the invoice associated with the time entry.

Reference:

locked_reason
STRING

The reason why the time entry is locked.

notes
STRING

Notes entered about the time entry.

project_id
INTEGER

The ID of the project associated with the time entry.

Reference:

spent_date
DATE-TIME

The date of the time entry.

started_time
STRING

The time the time entry was started, if tracking by start/end times.

task_id
INTEGER

The ID of the task associated with the time entry.

Reference:

task_assignment_id
INTEGER

The ID of the task assignment associated with the time entry.

timer_started_at
DATE-TIME

The date and time the timer was started, if tracked by duration.

user_id
INTEGER

The ID of the user associated with the time entry.

Reference:

user_assignment_id
INTEGER

The ID of the user assignment associated with the time entry.


time_entry_external_reference

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

time_entry_id : external_reference_id

API endpoint :

List all time entries

The time_entry_external_reference table contains pairs of time entry IDs and external reference IDs. This data can be used to tie time entries tracked in external services (such as Trello) to your other Harvest data.

Note: This table is updated based on new and updated time_entries. This means that when a time entry is updated, this table will also be updated.

time_entry_id
INTEGER

The time entry ID.

Reference:

external_reference_id
STRING

The external reference ID.

Reference:


user_project_tasks

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

user_id : project_task_id

The user_project_tasks table contains pairs of user IDs and project task IDs.

This data can be used to see lists of all the project tasks associated with a user, and join tables together to get a comprehensive look at the user’s projects.

Note: This table is updated based on new and updated users. This means that when a user is updated, this table will also be updated.


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

Official docs :

Official Docs

The user_projects table contains info about the project assignments users are assigned to.

id
INTEGER

The project assignment ID.

updated_at
DATE-TIME

The date and time when the project assignment was last updated.

budget
NUMBER

The budget used when the project’s budget_by is Person.

client_id
INTEGER

The ID of the associated client.

Reference:

created_at
STRING

The date and time when the project assignment was created.

is_active
BOOLEAN

If true, the project assignment is active.

is_project_manager
BOOLEAN

If true, the user has project manager permissions for the project.

hourly_rate
NUMBER

The rate used when the project’s bill_by is People.

project_id
INTEGER

The ID of the associated project.

Reference:

user_id
INTEGER

The ID of the user associated with the project assignment.

Reference:


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

user_id : role_id

Official docs :

Official Docs

The user_roles table contains a list of user ID and role ID pairs, enabling you to see the roles users are associated with.

Note: This table is updated based on new and updated users. This means that when a user is updated, this table will also be updated.


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

List all users

The users table contains info about the users in your Harvest account.

id
INTEGER

The user ID.

Reference:

updated_at
STRING

The date and time when the user was last updated.

avatar_url
STRING

The URL to the user’s avatar image.

can_see_rates
BOOLEAN

If true, the user can see billable rates on projects.

can_create_projects
BOOLEAN

If true, the user can create projects.

can_create_invoices
BOOLEAN

If true, the user can create invoices.

cost_rate
NUMBER

The cost rate to use for this user when calculating a project’s cost versus billable amount.

created_at
STRING

The date and time when the user was created.

default_hourly_rate
NUMBER

The billable rate to use for this user when they’re added to a project.

email
STRING

The email address of the user.

first_name
STRING

The first name of the user.

has_access_to_all_future_projects
BOOLEAN

If true, the user will be automatically added to future projects.

is_contractor
BOOLEAN

If true, the user is a contractor.

is_active
BOOLEAN

If true, the user is an active user.

is_admin
BOOLEAN

If true, the user has admin permissions in Harvest.

is_project_manager
BOOLEAN

If true, the user has project manager permissions.

last_name
STRING

The last name of the user.

telephone
STRING

The telephone number of the user.

timezone
STRING

The user’s timezone.

weekly_capacity
INTEGER

The number of hours the user is available to work, in seconds.

For example: If a user is available for 35 hours, the value of this field will be 126000. ((60 seconds * 60 minutes) * 35 hours = 126000 seconds)



Questions? Feedback?

Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.