All integrations

Harvest

PROJECT MANAGEMENT · TASKS

Time entries, projects, invoices, and expenses in their own account.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

harvest_delete_v2_clients_by_client_idWRITE

Delete a client. Deleting a client is only possible if it has no projects, invoices, or estimates associated with it. Returns a 200 OK response code if the call succeeded. via DELETE /v2/clients/{CLIENT_ID}

api
harvest_delete_v2_contacts_by_contact_idWRITE

Delete a contact. Returns a 200 OK response code if the call succeeded. via DELETE /v2/contacts/{CONTACT_ID}

api
harvest_delete_v2_estimate_item_categories_by_estimate_item_category_idWRITE

Delete an estimate item category. Returns a 200 OK response code if the call succeeded. via DELETE /v2/estimate_item_categories/{ESTIMATE_ITEM_CATEGORY_ID}

api
harvest_delete_v2_estimates_by_estimate_idWRITE

Delete an estimate. Returns a 200 OK response code if the call succeeded. via DELETE /v2/estimates/{ESTIMATE_ID}

api
harvest_delete_v2_estimates_by_estimate_id_messages_by_message_idWRITE

Delete an estimate message. Returns a 200 OK response code if the call succeeded. via DELETE /v2/estimates/{estimate_ID}/messages/{message_ID}

api
harvest_delete_v2_expense_categories_by_expense_category_idWRITE

Delete an expense category. Returns a 200 OK response code if the call succeeded. via DELETE /v2/expense_categories/{EXPENSE_CATEGORY_ID}

api
harvest_delete_v2_expenses_by_expense_idWRITE

Delete an expense. Returns a 200 OK response code if the call succeeded. via DELETE /v2/expenses/{EXPENSE_ID}

api
harvest_delete_v2_invoice_item_categories_by_invoice_item_category_idWRITE

Delete an invoice item category. Deleting an invoice item category is only possible if use_as_service and use_as_expense are both false. Returns a 200 OK response code if the call succeeded. via DELETE /v2/invoice_item_categories/{INVOICE_ITEM_CATEGORY_ID}

api
harvest_delete_v2_invoices_by_invoice_idWRITE

Delete an invoice. Returns a 200 OK response code if the call succeeded. via DELETE /v2/invoices/{INVOICE_ID}

api
harvest_delete_v2_invoices_by_invoice_id_messages_by_message_idWRITE

Delete an invoice message. Returns a 200 OK response code if the call succeeded. via DELETE /v2/invoices/{INVOICE_ID}/messages/{message_ID}

api
harvest_delete_v2_invoices_by_invoice_id_payments_by_payment_idWRITE

Delete an invoice payment. Returns a 200 OK response code if the call succeeded. via DELETE /v2/invoices/{INVOICE_ID}/payments/{PAYMENT_ID}

api
harvest_delete_v2_projects_by_project_idWRITE

Deletes a project and any time entries or expenses tracked to it. However, invoices associated with the project will not be deleted. If you don’t want the project’s time entries and expenses to be deleted, you should archive the project instead. via DELETE /v2/projects/{PROJECT_ID}

api
harvest_delete_v2_projects_by_project_id_task_assignments_by_task_assignment_idWRITE

Delete a task assignment. Deleting a task assignment is only possible if it has no time entries associated with it. Returns a 200 OK response code if the call succeeded. via DELETE /v2/projects/{PROJECT_ID}/task_assignments/{TASK_ASSIGNMENT_ID}

api
harvest_delete_v2_projects_by_project_id_user_assignments_by_user_assignment_idWRITE

Delete a user assignment. Deleting a user assignment is only possible if it has no time entries or expenses associated with it. Returns a 200 OK response code if the call succeeded. via DELETE /v2/projects/{PROJECT_ID}/user_assignments/{USER_ASSIGNMENT_ID}

api
harvest_delete_v2_pto_holiday_calendars_by_holiday_calendar_idWRITE

Deletes a holiday calendar. Returns a 200 OK response code and the deleted holiday calendar object. Only administrators can perform this action. via DELETE /v2/pto/holiday_calendars/{HOLIDAY_CALENDAR_ID}

api
harvest_delete_v2_pto_holiday_calendars_by_holiday_calendar_id_entries_by_entry_idWRITE

Deletes a holiday calendar entry. Returns a 200 OK response code and the deleted holiday entry object. Only administrators can perform this action. via DELETE /v2/pto/holiday_calendars/{HOLIDAY_CALENDAR_ID}/entries/{ENTRY_ID}

api
harvest_delete_v2_pto_requests_by_pto_request_idWRITE

Cancels a time off request. The request is not deleted from Harvest; instead, its status is updated to cancelled and it remains visible in request listings. Returns a 200 OK response code and the cancelled time off request object. via DELETE /v2/pto/requests/{PTO_REQUEST_ID}

api
harvest_delete_v2_pto_types_by_pto_type_idWRITE

Deletes or deactivates an existing time off policy. By default, time off policies are deactivated rather than permanently deleted so historical requests and allocations remain preserved. Returns a 200 OK response code and the deactivated time off policy object with is_active set to false . To permanently delete a policy along with all of its associated requests and historical data, pass keep_history=false and confirm_delete_history=1 . A successful permanent deletion returns a 204 No Content response code. A policy cannot be permanently deleted if it is the only remaining policy in the company or if it has requests included in locked payroll. Only administrators can perform this action. via DELETE /v2/pto/types/{PTO_TYPE_ID}

api
harvest_delete_v2_pto_work_schedules_by_work_schedule_idWRITE

Deactivates a non-default work schedule. Returns a 200 OK response code and the deactivated work schedule object with is_active set to false . Only administrators can perform this action. via DELETE /v2/pto/work_schedules/{WORK_SCHEDULE_ID}

api
harvest_delete_v2_roles_by_role_idWRITE

Delete a role. Deleting a role will unlink it from any users it was assigned to. Returns a 200 OK response code if the call succeeded. via DELETE /v2/roles/{ROLE_ID}

api
harvest_delete_v2_tasks_by_task_idWRITE

Delete a task. Deleting a task is only possible if it has no time entries associated with it. Returns a 200 OK response code if the call succeeded. via DELETE /v2/tasks/{TASK_ID}

api
harvest_delete_v2_time_entries_by_time_entry_idWRITE

Delete a time entry. Deleting a time entry is only possible if it’s not closed and the associated project and task haven’t been archived. However, Admins can delete closed entries. Returns a 200 OK response code if the call succeeded. via DELETE /v2/time_entries/{TIME_ENTRY_ID}

api
harvest_delete_v2_time_entries_by_time_entry_id_external_referenceWRITE

Delete a time entry’s external reference. Returns a 200 OK response code if the call succeeded. via DELETE /v2/time_entries/{TIME_ENTRY_ID}/external_reference

api
harvest_delete_v2_users_by_user_idWRITE

Delete a user. Deleting a user is only possible if they have no time entries or expenses associated with them. Returns a 200 OK response code if the call succeeded. via DELETE /v2/users/{USER_ID}

api
harvest_get_api_v2_accountsREAD

List the Harvest and Forecast accounts this credential can act in, with the id that every api.harvestapp.com request must send in its Harvest-Account-Id header. Answered by Harvest ID, and the one call that needs no account header via GET /api/v2/accounts

api
harvest_get_v2_clientsREAD

Returns a list of your clients. The clients are returned sorted by creation date, with the most recently created clients appearing first. The response contains an object with a clients property that contains an array of up to per_page clients. Each entry in the array is a separate client object. If no more clients are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your clients. via GET /v2/clients

api
harvest_get_v2_clients_by_client_idREAD

Retrieves the client with the given ID. Returns a client object and a 200 OK response code if a valid identifier was provided. via GET /v2/clients/{CLIENT_ID}

api
harvest_get_v2_companyREAD

Retrieves the company for the currently authenticated user. Returns a company object and a 200 OK response code. via GET /v2/company

api
harvest_get_v2_contactsREAD

Returns a list of your contacts. The contacts are returned sorted by creation date, with the most recently created contacts appearing first. The response contains an object with a contacts property that contains an array of up to per_page contacts. Each entry in the array is a separate contact object. If no more contacts are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your contacts. via GET /v2/contacts

api
harvest_get_v2_contacts_by_contact_idREAD

Retrieves the contact with the given ID. Returns a contact object and a 200 OK response code if a valid identifier was provided. via GET /v2/contacts/{CONTACT_ID}

api
harvest_get_v2_estimate_item_categoriesREAD

Returns a list of your estimate item categories. The estimate item categories are returned sorted by creation date, with the most recently created estimate item categories appearing first. The response contains an object with a estimate_item_categories property that contains an array of up to per_page estimate item categories. Each entry in the array is a separate estimate item category object. If no more estimate item categories are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your estimate item categories. via GET /v2/estimate_item_categories

api
harvest_get_v2_estimate_item_categories_by_estimate_item_category_idREAD

Retrieves the estimate item category with the given ID. Returns an estimate item category object and a 200 OK response code if a valid identifier was provided. via GET /v2/estimate_item_categories/{ESTIMATE_ITEM_CATEGORY_ID}

api
harvest_get_v2_estimatesREAD

Returns a list of your estimates. The estimates are returned sorted by issue date, with the most recently issued estimates appearing first. The response contains an object with a estimates property that contains an array of up to per_page estimates. Each entry in the array is a separate estimate object. If no more estimates are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your estimates. via GET /v2/estimates

api
harvest_get_v2_estimates_by_estimate_idREAD

Retrieves the estimate with the given ID. Returns an estimate object and a 200 OK response code if a valid identifier was provided. via GET /v2/estimates/{ESTIMATE_ID}

api
harvest_get_v2_estimates_by_estimate_id_messagesREAD

Returns a list of messages associated with a given estimate. The estimate messages are returned sorted by creation date, with the most recently created messages appearing first. The response contains an object with an estimate_messages property that contains an array of up to per_page messages. Each entry in the array is a separate message object. If no more messages are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your messages. via GET /v2/estimates/{estimate_ID}/messages

api
harvest_get_v2_expense_categoriesREAD

Returns a list of your expense categories. The expense categories are returned sorted by creation date, with the most recently created expense categories appearing first. The response contains an object with a expense_categories property that contains an array of up to per_page expense categories. Each entry in the array is a separate expense category object. If no more expense categories are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your expense categories. via GET /v2/expense_categories

api
harvest_get_v2_expense_categories_by_expense_category_idREAD

Retrieves the expense category with the given ID. Returns an expense category object and a 200 OK response code if a valid identifier was provided. via GET /v2/expense_categories/{EXPENSE_CATEGORY_ID}

api
harvest_get_v2_expensesREAD

Returns a list of your expenses. If accessing this endpoint as an Administrator, all expenses in the account will be returned. If accessing this endpoint as a Manager, all expenses for assigned teammates and managed projects will be returned. The expenses are returned sorted by the spent_at date, with the most recent expenses appearing first. The response contains an object with a expenses property that contains an array of up to per_page expenses. Each entry in the array is a separate expense object. If no more expenses are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your expenses. via GET /v2/expenses

api
harvest_get_v2_expenses_by_expense_idREAD

Retrieves the expense with the given ID. Returns an expense object and a 200 OK response code if a valid identifier was provided. via GET /v2/expenses/{EXPENSE_ID}

api
harvest_get_v2_invoice_item_categoriesREAD

Returns a list of your invoice item categories. The invoice item categories are returned sorted by creation date, with the most recently created invoice item categories appearing first. The response contains an object with a invoice_item_categories property that contains an array of up to per_page invoice item categories. Each entry in the array is a separate invoice item category object. If no more invoice item categories are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your invoice item categories. via GET /v2/invoice_item_categories

api
harvest_get_v2_invoice_item_categories_by_invoice_item_category_idREAD

Retrieves the invoice item category with the given ID. Returns an invoice item category object and a 200 OK response code if a valid identifier was provided. via GET /v2/invoice_item_categories/{INVOICE_ITEM_CATEGORY_ID}

api
harvest_get_v2_invoicesREAD

Returns a list of your invoices. The invoices are returned sorted by issue date, with the most recently issued invoices appearing first. The response contains an object with a invoices property that contains an array of up to per_page invoices. Each entry in the array is a separate invoice object. If no more invoices are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your invoices. via GET /v2/invoices

api
harvest_get_v2_invoices_by_invoice_idREAD

Retrieves the invoice with the given ID. Returns an invoice object and a 200 OK response code if a valid identifier was provided. via GET /v2/invoices/{INVOICE_ID}

api
harvest_get_v2_invoices_by_invoice_id_messagesREAD

Returns a list of messages associated with a given invoice. The invoice messages are returned sorted by creation date, with the most recently created messages appearing first. The response contains an object with an invoice_messages property that contains an array of up to per_page messages. Each entry in the array is a separate message object. If no more messages are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your messages. via GET /v2/invoices/{INVOICE_ID}/messages

api
harvest_get_v2_invoices_by_invoice_id_messages_newREAD

Returns the subject and body text as configured in Harvest of an invoice message for a specific invoice and a 200 OK response code if the call succeeded. Does not create the invoice message. If no parameters are passed, will return the subject and body of a general invoice message for the specific invoice. via GET /v2/invoices/{INVOICE_ID}/messages/new

api
harvest_get_v2_invoices_by_invoice_id_paymentsREAD

Returns a list of payments associate with a given invoice. The payments are returned sorted by creation date, with the most recently created payments appearing first. The response contains an object with an invoice_payments property that contains an array of up to per_page payments. Each entry in the array is a separate payment object. If no more payments are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your payments. via GET /v2/invoices/{INVOICE_ID}/payments

api
harvest_get_v2_projectsREAD

Returns a list of your projects. The projects are returned sorted by creation date, with the most recently created projects appearing first. The response contains an object with a projects property that contains an array of up to per_page projects. Each entry in the array is a separate project object. If no more projects are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your projects. via GET /v2/projects

api
harvest_get_v2_projects_by_project_idREAD

Retrieves the project with the given ID. Returns a project object and a 200 OK response code if a valid identifier was provided. via GET /v2/projects/{PROJECT_ID}

api
harvest_get_v2_projects_by_project_id_task_assignmentsREAD

Returns a list of your task assignments for the project identified by PROJECT_ID . The task assignments are returned sorted by creation date, with the most recently created task assignments appearing first. The response contains an object with a task_assignments property that contains an array of up to per_page task assignments. Each entry in the array is a separate task assignment object. If no more task assignments are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your task assignments. via GET /v2/projects/{PROJECT_ID}/task_assignments

api
harvest_get_v2_projects_by_project_id_task_assignments_by_task_assignment_idREAD

Retrieves the task assignment with the given ID. Returns a task assignment object and a 200 OK response code if a valid identifier was provided. via GET /v2/projects/{PROJECT_ID}/task_assignments/{TASK_ASSIGNMENT_ID}

api
harvest_get_v2_projects_by_project_id_user_assignmentsREAD

Returns a list of user assignments for the project identified by PROJECT_ID . The user assignments are returned sorted by creation date, with the most recently created user assignments appearing first. The response contains an object with a user_assignments property that contains an array of up to per_page user assignments. Each entry in the array is a separate user assignment object. If no more user assignments are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your user assignments. via GET /v2/projects/{PROJECT_ID}/user_assignments

api
harvest_get_v2_projects_by_project_id_user_assignments_by_user_assignment_idREAD

Retrieves the user assignment with the given ID. Returns a user assignment object and a 200 OK response code if a valid identifier was provided. via GET /v2/projects/{PROJECT_ID}/user_assignments/{USER_ASSIGNMENT_ID}

api
harvest_get_v2_pto_allocationsREAD

Returns a list of customized and yearly time off allocations across users. The response contains an object with a pto_allocations property that contains an array of up to per_page allocations. via GET /v2/pto/allocations

api
harvest_get_v2_pto_assignmentsREAD

Returns a list of users alongside their assigned holiday calendars, assigned work schedules, and effective working hours. via GET /v2/pto/assignments

api
harvest_get_v2_pto_balancesREAD

Returns time off balances broken down per policy for a specific user and year. via GET /v2/pto/balances

api
harvest_get_v2_pto_holiday_calendarsREAD

Returns a list of holiday calendars. The response contains an object with a pto_holiday_calendars property that contains an array of up to per_page holiday calendars. Each entry in the array is a separate holiday calendar object. If no more calendars are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your calendars. via GET /v2/pto/holiday_calendars

api
harvest_get_v2_pto_holiday_calendars_by_holiday_calendar_idREAD

Retrieves the details of an existing holiday calendar. Returns a holiday calendar object and a 200 OK response code. via GET /v2/pto/holiday_calendars/{HOLIDAY_CALENDAR_ID}

api
harvest_get_v2_pto_holiday_calendars_by_holiday_calendar_id_entriesREAD

Returns a list of holiday entries for the calendar identified by HOLIDAY_CALENDAR_ID . The response contains an object with a pto_holiday_calendar_entries property that contains an array of up to per_page entries. via GET /v2/pto/holiday_calendars/{HOLIDAY_CALENDAR_ID}/entries

api
harvest_get_v2_pto_requestsREAD

Returns a list of time off requests. The response contains an object with a pto_requests property that contains an array of up to per_page time off requests. Each entry in the array is a separate time off request object. If no more requests are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your requests. via GET /v2/pto/requests

api
harvest_get_v2_pto_requests_by_pto_request_idREAD

Retrieves the details of an existing time off request. Returns a time off request object and a 200 OK response code. via GET /v2/pto/requests/{PTO_REQUEST_ID}

api
harvest_get_v2_pto_typesREAD

Returns a list of time off policies. The response contains an object with a pto_types property that contains an array of up to per_page time off policies. Each entry in the array is a separate time off policy object. If no more policies are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your policies. via GET /v2/pto/types

api
harvest_get_v2_pto_types_by_pto_type_idREAD

Retrieves the details of an existing time off policy. Returns a time off policy object and a 200 OK response code. via GET /v2/pto/types/{PTO_TYPE_ID}

api
harvest_get_v2_pto_work_schedulesREAD

Returns a list of work schedules. The response contains an object with a pto_work_schedules property that contains an array of up to per_page work schedules. via GET /v2/pto/work_schedules

api
harvest_get_v2_pto_work_schedules_by_work_schedule_idREAD

Retrieves the details of an existing work schedule. Returns a work schedule object and a 200 OK response code. via GET /v2/pto/work_schedules/{WORK_SCHEDULE_ID}

api
harvest_get_v2_reports_expenses_categoriesREAD

Expense Categories Report via GET /v2/reports/expenses/categories

api
harvest_get_v2_reports_expenses_clientsREAD

Clients Expense Report via GET /v2/reports/expenses/clients

api
harvest_get_v2_reports_expenses_projectsREAD

Projects Expense Report via GET /v2/reports/expenses/projects

api
harvest_get_v2_reports_expenses_teamREAD

Team Expense Report via GET /v2/reports/expenses/team

api
harvest_get_v2_reports_project_budgetREAD

The response contains an object with a results property that contains an array of up to per_page results. Each entry in the array is a separate result object. If no more results are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your results. via GET /v2/reports/project_budget

api
harvest_get_v2_reports_time_clientsREAD

Clients Time Report via GET /v2/reports/time/clients

api
harvest_get_v2_reports_time_projectsREAD

Projects Time Report via GET /v2/reports/time/projects

api
harvest_get_v2_reports_time_tasksREAD

Tasks Report via GET /v2/reports/time/tasks

api
harvest_get_v2_reports_time_teamREAD

Team Time Report via GET /v2/reports/time/team

api
harvest_get_v2_reports_uninvoicedREAD

The response contains an object with a results property that contains an array of up to per_page results. Each entry in the array is a separate result object. If no more results are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your results. Note: Each request requires both the from and to parameters to be supplied in the URL’s query string. The timeframe supplied cannot exceed 1 year (365 days). via GET /v2/reports/uninvoiced

api
harvest_get_v2_rolesREAD

Returns a list of roles in the account. The roles are returned sorted by creation date, with the most recently created roles appearing first. The response contains an object with a roles property that contains an array of up to per_page roles. Each entry in the array is a separate role object. If no more roles are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your roles. via GET /v2/roles

api
harvest_get_v2_roles_by_role_idREAD

Retrieves the role with the given ID. Returns a role object and a 200 OK response code if a valid identifier was provided. via GET /v2/roles/{ROLE_ID}

api
harvest_get_v2_task_assignmentsREAD

Returns a list of your task assignments. The task assignments are returned sorted by creation date, with the most recently created task assignments appearing first. The response contains an object with a task_assignments property that contains an array of up to per_page task assignments. Each entry in the array is a separate task assignment object. If no more task assignments are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your task assignments. via GET /v2/task_assignments

api
harvest_get_v2_tasksREAD

Returns a list of your tasks. The tasks are returned sorted by creation date, with the most recently created tasks appearing first. The response contains an object with a tasks property that contains an array of up to per_page tasks. Each entry in the array is a separate task object. If no more tasks are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your tasks. via GET /v2/tasks

api
harvest_get_v2_tasks_by_task_idREAD

Retrieves the task with the given ID. Returns a task object and a 200 OK response code if a valid identifier was provided. via GET /v2/tasks/{TASK_ID}

api
harvest_get_v2_time_entriesREAD

Returns a list of time entries. The time entries are returned sorted by spent_date date. At this time, the sort option can’t be customized. The response contains an object with a time_entries property that contains an array of up to per_page time entries. Each entry in the array is a separate time entry object. If no more time entries are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your time entries. via GET /v2/time_entries

api
harvest_get_v2_time_entries_by_time_entry_idREAD

Retrieves the time entry with the given ID. Returns a time entry object and a 200 OK response code if a valid identifier was provided. via GET /v2/time_entries/{TIME_ENTRY_ID}

api
harvest_get_v2_user_assignmentsREAD

Returns a list of your projects user assignments, active and archived. The user assignments are returned sorted by creation date, with the most recently created user assignments appearing first. The response contains an object with a user_assignments property that contains an array of up to per_page user assignments. Each entry in the array is a separate user assignment object. If no more user assignments are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your user assignments. via GET /v2/user_assignments

api
harvest_get_v2_usersREAD

Returns a list of your users. The users are returned sorted by creation date, with the most recently created users appearing first. The response contains an object with a users property that contains an array of up to per_page users. Each entry in the array is a separate user object. If no more users are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your users. via GET /v2/users

api
harvest_get_v2_users_by_user_idREAD

Retrieves the user with the given ID. Returns a user object and a 200 OK response code if a valid identifier was provided. via GET /v2/users/{USER_ID}

api
harvest_get_v2_users_by_user_id_billable_ratesREAD

Returns a list of billable rates for the user identified by USER_ID . The billable rates are returned sorted by start_date , with the oldest starting billable rates appearing first. The response contains an object with a billable_rates property that contains an array of up to per_page billable rates. Each entry in the array is a separate billable rate object. If no more billable rates are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your billable rates. via GET /v2/users/{USER_ID}/billable_rates

api
harvest_get_v2_users_by_user_id_billable_rates_by_billable_rate_idREAD

Retrieves the billable rate with the given ID. Returns a billable rate object and a 200 OK response code if a valid identifier was provided. via GET /v2/users/{USER_ID}/billable_rates/{billable_RATE_ID}

api
harvest_get_v2_users_by_user_id_cost_ratesREAD

Returns a list of cost rates for the user identified by USER_ID . The cost rates are returned sorted by start_date , with the oldest starting cost rates appearing first. The response contains an object with a cost_rates property that contains an array of up to per_page cost rates. Each entry in the array is a separate cost rate object. If no more cost rates are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your cost rates. via GET /v2/users/{USER_ID}/cost_rates

api
harvest_get_v2_users_by_user_id_cost_rates_by_cost_rate_idREAD

Retrieves the cost rate with the given ID. Returns a cost rate object and a 200 OK response code if a valid identifier was provided. via GET /v2/users/{USER_ID}/cost_rates/{COST_RATE_ID}

api
harvest_get_v2_users_by_user_id_project_assignmentsREAD

Returns a list of active project assignments for the user identified by USER_ID . The project assignments are returned sorted by creation date, with the most recently created project assignments appearing first. The response contains an object with a project_assignments property that contains an array of up to per_page project assignments. Each entry in the array is a separate project assignment object. If no more project assignments are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your project assignments. via GET /v2/users/{USER_ID}/project_assignments

api
harvest_get_v2_users_by_user_id_teammatesREAD

Returns a list of assigned teammates for the user identified by USER_ID . The USER_ID must belong to a user that is a Manager, if not, a 422 Unprocessable Entity status code will be returned. The response contains an object with a teammates property that contains an array of up to per_page teammates. Each entry in the array is a separate teammate object. If no more teammates are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your teammates. via GET /v2/users/{USER_ID}/teammates

api
harvest_get_v2_users_meREAD

Retrieves the currently authenticated user. Returns a user object and a 200 OK response code. via GET /v2/users/me

api
harvest_get_v2_users_me_project_assignmentsREAD

Returns a list of your active project assignments for the currently authenticated user. The project assignments are returned sorted by creation date, with the most recently created project assignments appearing first. The response contains an object with a project_assignments property that contains an array of up to per_page project assignments. Each entry in the array is a separate project assignment object. If no more project assignments are available, the resulting array will be empty. Several additional pagination properties are included in the response to simplify paginating your project assignments. via GET /v2/users/me/project_assignments

api
harvest_patch_v2_clients_by_client_idWRITE

Updates the specific client by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns a client object and a 200 OK response code if the call succeeded. via PATCH /v2/clients/{CLIENT_ID}

api
harvest_patch_v2_companyWRITE

Updates the company setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns a company object and a 200 OK response code if the call succeeded. via PATCH /v2/company

api
harvest_patch_v2_contacts_by_contact_idWRITE

Updates the specific contact by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns a contact object and a 200 OK response code if the call succeeded. via PATCH /v2/contacts/{CONTACT_ID}

api
harvest_patch_v2_estimate_item_categories_by_estimate_item_category_idWRITE

Updates the specific estimate item category by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns an estimate item category object and a 200 OK response code if the call succeeded. via PATCH /v2/estimate_item_categories/{ESTIMATE_ITEM_CATEGORY_ID}

api
harvest_patch_v2_estimates_by_estimate_idWRITE

Updates the specific estimate by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns an estimate object and a 200 OK response code if the call succeeded. via PATCH /v2/estimates/{ESTIMATE_ID}

api
harvest_patch_v2_expense_categories_by_expense_category_idWRITE

Updates the specific expense category by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns an expense category object and a 200 OK response code if the call succeeded. via PATCH /v2/expense_categories/{EXPENSE_CATEGORY_ID}

api
harvest_patch_v2_expenses_by_expense_idWRITE

Updates the specific expense by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns an expense object and a 200 OK response code if the call succeeded. Note that changes to project_id and expense_category_id will be silently dropped if the expense is locked. Users with sufficient permissions are able to update the rest of a locked expense’s attributes. via PATCH /v2/expenses/{EXPENSE_ID}

api
harvest_patch_v2_invoice_item_categories_by_invoice_item_category_idWRITE

Updates the specific invoice item category by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns an invoice item category object and a 200 OK response code if the call succeeded. via PATCH /v2/invoice_item_categories/{INVOICE_ITEM_CATEGORY_ID}

api
harvest_patch_v2_invoices_by_invoice_idWRITE

Updates the specific invoice by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns an invoice object and a 200 OK response code if the call succeeded. via PATCH /v2/invoices/{INVOICE_ID}

api
harvest_patch_v2_projects_by_project_idWRITE

Updates the specific project by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns a project object and a 200 OK response code if the call succeeded. via PATCH /v2/projects/{PROJECT_ID}

api
harvest_patch_v2_projects_by_project_id_task_assignments_by_task_assignment_idWRITE

Updates the specific task assignment by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns a task assignment object and a 200 OK response code if the call succeeded. via PATCH /v2/projects/{PROJECT_ID}/task_assignments/{TASK_ASSIGNMENT_ID}

api
harvest_patch_v2_projects_by_project_id_user_assignments_by_user_assignment_idWRITE

Updates the specific user assignment by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns a user assignment object and a 200 OK response code if the call succeeded. via PATCH /v2/projects/{PROJECT_ID}/user_assignments/{USER_ASSIGNMENT_ID}

api
harvest_patch_v2_pto_allocationsWRITE

Updates or resets per-user yearly allocation overrides. Returns an allocation object and a 200 OK response code when customized overrides are present or saved. When an allocation is reset to defaults (either by passing reset_to_default: true or when the submitted values match the policy defaults), the allocation override record is removed and a reset confirmation object is returned instead. via PATCH /v2/pto/allocations

api
harvest_patch_v2_pto_assignments_by_user_idWRITE

Assigns or unassigns a holiday calendar and work schedule for a specific user. Returns an assignment object and a 200 OK response code. via PATCH /v2/pto/assignments/{USER_ID}

api
harvest_patch_v2_pto_holiday_calendars_by_holiday_calendar_idWRITE

Updates an existing holiday calendar. Returns a holiday calendar object and a 200 OK response code if the call succeeded. Only administrators can perform this action. via PATCH /v2/pto/holiday_calendars/{HOLIDAY_CALENDAR_ID}

api
harvest_patch_v2_pto_holiday_calendars_by_holiday_calendar_id_entries_by_entry_idWRITE

Updates an existing holiday calendar entry. Returns a holiday entry object and a 200 OK response code. Only administrators can perform this action. via PATCH /v2/pto/holiday_calendars/{HOLIDAY_CALENDAR_ID}/entries/{ENTRY_ID}

api
harvest_patch_v2_pto_requests_by_pto_request_idWRITE

Updates an unreviewed time off request. Only pending or changes_requested requests can be edited. Updating a request cancels the original request and returns a new replacement request object with a new id and a 200 OK response code. via PATCH /v2/pto/requests/{PTO_REQUEST_ID}

api
harvest_patch_v2_pto_types_by_pto_type_idWRITE

Updates an existing time off policy. Returns a time off policy object and a 200 OK response code if the call succeeded. Only administrators can perform this action. via PATCH /v2/pto/types/{PTO_TYPE_ID}

api
harvest_patch_v2_pto_work_schedules_by_work_schedule_idWRITE

Updates an existing work schedule. Returns a work schedule object and a 200 OK response code. Only administrators can perform this action. via PATCH /v2/pto/work_schedules/{WORK_SCHEDULE_ID}

api
harvest_patch_v2_roles_by_role_idWRITE

Updates the specific role by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns a role object and a 200 OK response code if the call succeeded. via PATCH /v2/roles/{ROLE_ID}

api
harvest_patch_v2_tasks_by_task_idWRITE

Updates the specific task by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns a task object and a 200 OK response code if the call succeeded. via PATCH /v2/tasks/{TASK_ID}

api
harvest_patch_v2_time_entries_by_time_entry_idWRITE

Updates the specific time entry by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns a time entry object and a 200 OK response code if the call succeeded. via PATCH /v2/time_entries/{TIME_ENTRY_ID}

api
harvest_patch_v2_time_entries_by_time_entry_id_restartWRITE

Restarting a time entry is only possible if it isn’t currently running. Returns a 200 OK response code if the call succeeded. via PATCH /v2/time_entries/{TIME_ENTRY_ID}/restart

api
harvest_patch_v2_time_entries_by_time_entry_id_stopWRITE

Stopping a time entry is only possible if it’s currently running. Returns a 200 OK response code if the call succeeded. via PATCH /v2/time_entries/{TIME_ENTRY_ID}/stop

api
harvest_patch_v2_users_by_user_idWRITE

Updates the specific user by setting the values of the parameters passed. Any parameters not provided will be left unchanged. Returns a user object and a 200 OK response code if the call succeeded. via PATCH /v2/users/{USER_ID}

api
harvest_patch_v2_users_by_user_id_teammatesWRITE

Updates the the assigned teammates for a specific user. Returns list of assigned teammates and a 200 OK response code if the call succeeded. The USER_ID must belong to a user that is a Manager, if not, a 422 Unprocessable Entity status code will be returned. Adding teammates for the first time will add the people_manager access role to the Manager. Any IDs not included in the teammate_ids that are currently assigned will be unassigned from the Manager. Use an empty array to unassign all users. This will also remove the people_manager access role from the Manager. via PATCH /v2/users/{USER_ID}/teammates

api
harvest_post_v2_clientsWRITE

Creates a new client object. Returns a client object and a 201 Created response code if the call succeeded. via POST /v2/clients

api
harvest_post_v2_contactsWRITE

Creates a new contact object. Returns a contact object and a 201 Created response code if the call succeeded. via POST /v2/contacts

api
harvest_post_v2_estimate_item_categoriesWRITE

Creates a new estimate item category object. Returns an estimate item category object and a 201 Created response code if the call succeeded. via POST /v2/estimate_item_categories

api
harvest_post_v2_estimatesWRITE

Creates a new estimate object. Returns an estimate object and a 201 Created response code if the call succeeded. via POST /v2/estimates

api
harvest_post_v2_estimates_by_estimate_id_messagesWRITE

Creates a new estimate message object. Returns an estimate message object and a 201 Created response code if the call succeeded. via POST /v2/estimates/{estimate_ID}/messages

api
harvest_post_v2_expense_categoriesWRITE

Creates a new expense category object. Returns an expense category object and a 201 Created response code if the call succeeded. via POST /v2/expense_categories

api
harvest_post_v2_expensesWRITE

Creates a new expense object. Returns an expense object and a 201 Created response code if the call succeeded. via POST /v2/expenses

api
harvest_post_v2_invoice_item_categoriesWRITE

Creates a new invoice item category object. Returns an invoice item category object and a 201 Created response code if the call succeeded. via POST /v2/invoice_item_categories

api
harvest_post_v2_invoicesWRITE

Creates a new invoice object. Returns an invoice object and a 201 Created response code if the call succeeded. via POST /v2/invoices

api
harvest_post_v2_invoices_by_invoice_id_messagesWRITE

Creates a new invoice message object and sends it. Returns an invoice message object and a 201 Created response code if the call succeeded. A note about the optional event_type parameter: If event_type is omitted in a request, its default value of null means the message will be sent. In such a request, if the recipients array is omitted or empty and send_me_a_copy is also omitted or set to false , the request will fail because the message has no recipients. When omitting event_type to create and send a message, be sure to include a recipients array as a parameter or ensure the send_me_a_copy parameter is included and set to true. via POST /v2/invoices/{INVOICE_ID}/messages

api
harvest_post_v2_invoices_by_invoice_id_paymentsWRITE

Creates a new invoice payment object. Returns an invoice payment object and a 201 Created response code if the call succeeded. via POST /v2/invoices/{INVOICE_ID}/payments

api
harvest_post_v2_projectsWRITE

Creates a new project object. Returns a project object and a 201 Created response code if the call succeeded. via POST /v2/projects

api
harvest_post_v2_projects_by_project_id_task_assignmentsWRITE

Creates a new task assignment object. Returns a task assignment object and a 201 Created response code if the call succeeded. via POST /v2/projects/{PROJECT_ID}/task_assignments

api
harvest_post_v2_projects_by_project_id_user_assignmentsWRITE

Creates a new user assignment object. Returns a user assignment object and a 201 Created response code if the call succeeded. via POST /v2/projects/{PROJECT_ID}/user_assignments

api
harvest_post_v2_pto_holiday_calendarsWRITE

Creates a new holiday calendar. Returns a holiday calendar object and a 201 Created response code if the call succeeded. Only administrators can perform this action. via POST /v2/pto/holiday_calendars

api
harvest_post_v2_pto_holiday_calendars_by_holiday_calendar_id_entriesWRITE

Creates one or more holiday entries in a calendar. Supports a single date or a range of dates. Returns a 201 Created response code. Only administrators can perform this action. via POST /v2/pto/holiday_calendars/{HOLIDAY_CALENDAR_ID}/entries

api
harvest_post_v2_pto_requestsWRITE

Creates a new time off request. Returns a time off request object and a 201 Created response code if the call succeeded. via POST /v2/pto/requests

api
harvest_post_v2_pto_requests_by_pto_request_id_approveWRITE

Approves a pending or changes_requested request. Returns a time off request object and a 200 OK response code. Only administrators can perform this action. via POST /v2/pto/requests/{PTO_REQUEST_ID}/approve

api
harvest_post_v2_pto_requests_by_pto_request_id_declineWRITE

Declines a time off request. Returns a time off request object and a 200 OK response code. Only administrators can perform this action. via POST /v2/pto/requests/{PTO_REQUEST_ID}/decline

api
harvest_post_v2_pto_requests_by_pto_request_id_request_changesWRITE

Requests changes on a time off request. Returns a time off request object and a 200 OK response code. Only administrators can perform this action. via POST /v2/pto/requests/{PTO_REQUEST_ID}/request_changes

api
harvest_post_v2_pto_typesWRITE

Creates a new time off policy. Returns a time off policy object and a 201 Created response code if the call succeeded. Only administrators can perform this action. via POST /v2/pto/types

api
harvest_post_v2_pto_work_schedulesWRITE

Creates a new work schedule. Returns a work schedule object and a 201 Created response code if the call succeeded. Only administrators can perform this action. via POST /v2/pto/work_schedules

api
harvest_post_v2_rolesWRITE

Creates a new role object. Returns a role object and a 201 Created response code if the call succeeded. via POST /v2/roles

api
harvest_post_v2_tasksWRITE

Creates a new task object. Returns a task object and a 201 Created response code if the call succeeded. via POST /v2/tasks

api
harvest_post_v2_time_entriesWRITE

Creates a new time entry object. Returns a time entry object and a 201 Created response code if the call succeeded. You should only use this method to create time entries when your account is configured to track time via duration . You can verify this by visiting the Settings page in your Harvest account or by checking if wants_timestamp_timers is false in the Company API . via POST /v2/time_entries

api
harvest_post_v2_usersWRITE

Creates a new user object and sends an invitation email to the address specified in the email parameter. Returns a user object and a 201 Created response code if the call succeeded. via POST /v2/users

api
harvest_post_v2_users_by_user_id_billable_ratesWRITE

Creates a new billable rate object. Returns a billable rate object and a 201 Created response code if the call succeeded. via POST /v2/users/{USER_ID}/billable_rates

api
harvest_post_v2_users_by_user_id_cost_ratesWRITE

Creates a new cost rate object. Returns a cost rate object and a 201 Created response code if the call succeeded. via POST /v2/users/{USER_ID}/cost_rates

api

Put Harvest behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.