Show all users
GET https://YOURACCOUNT.harvestapp.com/people
You may also use the user’s email address in place of a User ID
HTTP Response: 200 OK
<?xml version="1.0" encoding="UTF-8"?>
<user>
<id type= "integer" > 508343</id>
<email> [email protected] </email>
<created-at type= "dateTime" > 2013-04-30T20:28:12Z</created-at>
<is-admin type= "boolean" > true</is-admin>
<is-project-manager type= "boolean" > false</is-project-manager>
<first-name> Harvest</first-name>
<last-name> User</last-name>
<timezone> Eastern Time (US & Canada)</timezone>
<is-contractor type= "boolean" > false</is-contractor>
<telephone></telephone>
<is-active type= "boolean" > true</is-active>
<has-access-to-all-future-projects type= "boolean" > true</has-access-to-all-future-projects>
<default-hourly-rate type= "decimal" > 0</default-hourly-rate>
<department></department>
<wants-newsletter type= "boolean" > true</wants-newsletter>
<updated-at type= "dateTime" > 2015-04-29T14:54:19Z</updated-at>
<cost-rate type= "decimal" nil= "true" />
<identity-account-id type= "integer" > 302900</identity-account-id>
<identity-user-id type= "integer" > 20725</identity-user-id>
</user>
{
"user" : {
"id" : 508343 ,
"email" : "[email protected] " ,
"created_at" : "2013-04-30T20:28:12Z" ,
"is_admin" : true ,
"is_project_manager" : false ,
"first_name" : "Harvest" ,
"last_name" : "User" ,
"timezone" : "Eastern Time (US & Canada)" ,
"is_contractor" : false ,
"telephone" : "" ,
"is_active" : true ,
"has_access_to_all_future_projects" : true ,
"default_hourly_rate" : 0 ,
"department" : "" ,
"wants_newsletter" : true ,
"updated_at" : "2015-04-29T14:54:19Z" ,
"cost_rate" : null
}
}
To return a single user, you’ll want to use the request:
GET https://YOURACCOUNT.harvestapp.com/people/{USERID}
You can also filter by updated_since
to only show people that have been updated since the date you pass:
GET https://YOURACCOUNT.harvestapp.com/people?updated_since=2015-04-25+18%3A30
Create a new user
POST https://YOURACCOUNT.harvestapp.com/people
HTTP Response: 201 Created
Upon creation, we’ll send an email to the user with instructions for setting a password.
At minimum, you’ll need to include values for email
, first-name
, and last-name
Optionally, you can include the following values:
is-admin
- To create a new admin user.
is-project-manager
- If true
this user will automatically be
marked as a Project Manager when assigned to a project.
timezone
- To set a timezone other than the account default.
is-contractor
- To create a new contractor user.
is-active
- If the user is active, or archived (true
, false
)
has-access-to-all-future-projects
- If true
this user will automatically be assigned to all new projects.
default-hourly-rate
- Default rate for the user in new projects, if no rate is specified.
department
- Department for user.
cost-rate
- Cost (internal) rate for user.
Example request in
Postman
<user>
<email> [email protected] </email>
<is-admin type= "boolean" > true</is-admin>
<is-project-manager type= "boolean" > false</is-project-manager>
<first-name> New</first-name>
<last-name> User</last-name>
<timezone> Eastern Time (US & Canada)</timezone>
<is-contractor type= "boolean" > false</is-contractor>
<telephone></telephone>
<is-active type= "boolean" > true</is-active>
<has-access-to-all-future-projects type= "boolean" > true</has-access-to-all-future-projects>
<default-hourly-rate type= "decimal" > 0</default-hourly-rate>
<department></department>
<cost-rate type= "decimal" nil= "true" />
</user>
{
"user" : {
"email" : "[email protected] " ,
"is_admin" : true ,
"is_project_manager" : false ,
"first_name" : "Harvest" ,
"last_name" : "User" ,
"timezone" : "Eastern Time (US & Canada)" ,
"is_contractor" : false ,
"telephone" : "" ,
"is_active" : true ,
"has_access_to_all_future_projects" : true ,
"default_hourly_rate" : 0 ,
"department" : "" ,
"cost_rate" : null
}
}
Update a user
PUT https://YOURACCOUNT.harvestapp.com/people/{USERID}
HTTP Response: 200 OK
You can update selected attributes for a user with this request. Note, updates to password are disregarded.
Upon a successful request, we’ll return Location: /people/{USERID}
.
<user>
<email> [email protected] </email>
<is-admin type= "boolean" > true</is-admin>
<is-project-manager type= "boolean" > false</is-project-manager>
<first-name> New</first-name>
<last-name> User</last-name>
<timezone> Eastern Time (US & Canada)</timezone>
<is-contractor type= "boolean" > false</is-contractor>
<telephone></telephone>
<is-active type= "boolean" > true</is-active>
<has-access-to-all-future-projects type= "boolean" > true</has-access-to-all-future-projects>
<default-hourly-rate type= "decimal" > 0</default-hourly-rate>
<department></department>
<cost-rate type= "decimal" nil= "true" />
</user>
{
"user" : {
"email" : "[email protected] " ,
"is_admin" : true ,
"is_project_manager" : false ,
"first_name" : "Harvest" ,
"last_name" : "User" ,
"timezone" : "Eastern Time (US & Canada)" ,
"is_contractor" : false ,
"telephone" : "" ,
"is_active" : true ,
"has_access_to_all_future_projects" : true ,
"default_hourly_rate" : 0 ,
"department" : "" ,
"cost_rate" : null
}
}
Delete a user
DELETE https://YOURACCOUNT.harvestapp.com/people/{USERID}
If the user has no hours or expenses, we’ll return HTTP Response: 200 OK
, otherwise, we’ll return HTTP Response: 400 Bad Request
. For users with time and expenses, please archive them instead.
Toggle an existing user
POST https://YOURACCOUNT.harvestapp.com/people/{USERID}/toggle
Use this request archive, or re-activate a user. Upon a successful request, we’ll return HTTP Response: 200 OK
. If you don’t have space for the user within your plan limits, we’ll return HTTP Response: 400 Bad Request
.