Managing Users
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
- Iftrue
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
- Iftrue
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.
<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
.