API Documentation
Time Tracking
Extended REST API
Clients
Projects
Tasks
People
Expenses
Expense Tracking
User Assignment
Task Assignment
Reports
Invoices
Invoice Messages
Invoice Payments
Invoice Categories
Questions?
Email support@getharvest.com
Time Tracking
Extended REST API
Clients
Projects
Tasks
People
Expenses
Expense Tracking
User Assignment
Task Assignment
Reports
Invoices
Invoice Messages
Invoice Payments
Invoice Categories
Questions?
Email support@getharvest.com
People
Show an user
GET /people/#{user_id}
HTTP Response: 200 Success
<user> <id>54234</id> <email>Jane@Doe.com</email> <first-name>Jane</first-name> <last-name>Doe</last-name> <!-- If true the user will be added to all new projects automatically --> <has-access-to-all-future-projects>false</has-access-to-all-future-projects> <!-- If present the user will bill out with this value on all future projects she is added to. To change existing rates You'll have to change the UserAssignment object --> <default-hourly-rate>100</default-hourly-rate> <!-- If true the user will be able to login and record time entries --> <is-active>true</is-active> <is-admin>true</is-admin> <is-contractor>true</is-contractor> <telephone></telephone> <timezone>Eastern Time (US & Canada)</timezone> </user>
Show all users
GET /people
HTTP Response: 200 Success
<users> <user> <id>54234</id> <email>Jane@Doe.com</email> <first-name>Jane</first-name> <last-name>Doe</last-name> <!-- If true the user will be added to all new projects automatically --> <has-access-to-all-future-projects>false</has-access-to-all-future-projects> <!-- If present the user will bill out with this value on all future projects she is added to. To change existing rates You'll have to change the UserAssignment object --> <default-hourly-rate>100</default-hourly-rate> <!-- If true the user will be able to login and record time entries --> <is-active>true</is-active> <is-admin>true</is-admin> <is-contractor>true</is-contractor> <telephone></telephone> <timezone>Eastern Time (US & Canada)</timezone> </user> </users>
Create new user
POST /people
HTTP Response: 201 Created
Location: /people/#{new_user_id}
Sample post:
<user> <first_name>Edgar</first_name> <last_name>Ruth</last_name> <email>edgar@ruth.com</email> <password>mypassword</password> <password_confirmation>mypassword</password_confirmation> <timezone>Central Time (US & Canada)</timezone> <is_admin>0</is_admin> <telephone>444-444</telephone> </user>
Note: we accept only a limited set of values for the timezone attribute.
Reset password for user
POST /people/#{user_id}/reset_password
Harvest will generate and mail a new random password. All other API calls will ignore changes to the password attribute.
Update user
PUT /people/#{user_id}
HTTP Response: 200 OKLocation: /people/#{user_id}
You can update selected attributes for an user, note that updates to password are disregarded.
<user> <first_name>John</first_name> <last_name>Doe</last_name> <email>john@doe.com</email> <timezone>Central Time (US & Canada)</timezone> <is_admin>1</is_admin> <telephone>212-555-1212</telephone> </user>
Delete existing user
DELETE /people/#{user_id}
HTTP Response: 200 OK is returned if user does not have
any hours logged.
Otherwise the user is not removable and
HTTP Response: 400 Bad
Request is returned. You can still archive the user to disable the user's login.
Toggle an existing user
POST /people/#{user_id}/toggle
This will archive an active user or activate an archived user. Note that activation is not performed if it results in more users allowed than the plan limit. Response isHTTP Response: 400 Bad Request or in case of success HTTP Response: 200 OK