Updating Profiles

Update Guru profile fields from an external HRIS system.

This guide provides the API endpoints and JSON structure to update Guru profile data from an external HRIS system.

📘

Check the built-in HRIS sync first

Guru offers an out-of-the-box HRIS Sync that updates profiles automatically. Use this guide when your HRIS is not supported.

Step 1: Get user IDs

To update profile data, you first need the user's ID. Either list all team members:

curl -u $GURU_USER:$GURU_TOKEN https://api.getguru.com/api/v1/members

or search for a specific team member by email:

curl -u $GURU_USER:$GURU_TOKEN https://api.getguru.com/api/v1/members/{email}

The response from either request includes the user.id field, which you use in subsequent calls.

Step 2: Get the manager ID

If you need to update the manager field, you also need the manager's ID:

  1. Search for the manager by email with GET /api/v1/members/{email}.
  2. Take the user.id from the response and use it to get the full profile: GET /api/v1/people/USERID.
  3. Use the returned id value as manager.id in the profile update request.

Step 3: Get current profile data

Retrieve the current profile data, which serves as the base for your update:

curl -u $GURU_USER:$GURU_TOKEN https://api.getguru.com/api/v1/people/USERID

Not all fields returned by this endpoint are updatable. See the payload structure below for the fields you can update.

Step 4: Update profile data

curl -X PUT https://api.getguru.com/api/v1/people/USERID \
  -u $GURU_USER:$GURU_TOKEN \
  -H "Content-Type: application/json" \
  -d @profile.json

Include all fields of the profile in the request body, even if only some of them are being updated.

Profile picture upload

To upload or update a profile picture, follow Step 2 in Bulk Upload Profile Avatars via the API. Pass its output into the profilePicUrl field below.

JSON payload structure

The complete structure of updatable fields in a Guru user profile:

{
    "startDate": "2021-06-28",
    "workTeamName": "Engineering",
    "workLocationName": "San Diego, CA",
    "workingHours": "9AM - 5PM PST",
    "manager": {
        "id": "b6ea5cc6-db1a-43c8-ae7c-fdf483584ddd"
    },
    "jobTitle": "Senior Software Engineer",
    "lastName": "Taylor",
    "firstName": "Alice",
    "profilePicUrl": "https://pp.getguru.com/6230eca6bc7e4eedbba67a3e5ded85df.png",
    "custom": {
        "whatImWorkingOn": "My primary focus is the Frontend but have experience working with various technologies.  \n\nCurrent Projects:\nWork Hours ⏰",
        "aboutMe": "I love trivia.  Jeopardy, quizzo, trivial pursuit, etc.  If there are trivia questions I am ready for them.",
        "bestWayToWorkWithMe": "I appreciate working with pre-reads and digesting that information async.  Then, let's get to collaborating on a zoom or in person!"
    }
}