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

{
    "user": {
        "id": 508343,
        "email": "user@example.com",
        "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.
{
    "user": {
        "email": "user@example.com",
        "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": "user@example.com",
        "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.

Still have questions? We’re happy to help!

Contact Us