Reference
People API
19 operations. Generated from the OpenAPI document, so this page always matches the API.
OpenAPI documentErrors and rate limitsSDK and CLI recipes
On this page
users.activity
Read a person's recent activity in Shuffl
POST/api/v1/manage/users/activity
- Read
- Permission users.activity
const result = await shuffl.users.activity({
"personId": "<personId>"
});Request fields (1)
- personId string required
Response object
- connections object required
- introductions object[] required
- at string (date-time) required
- program object required
- id string required
- name string required
- runId string required
- with object[] required
- id string required
- name string required
- programs object[] required
- id string required
- name string required
- stats object required
- introductions number required
- lastIntroductionAt null | string (date-time) required
- people number required
- programs number required
- introductions object[] required
- events object[] required
- Option 1 object optional
- at string (date-time) required
- kind "playbook_started" required
- program object required
- id string required
- name string required
- Option 2 object optional
- at string (date-time) required
- kind "playbook_completed" required
- program object required
- id string required
- name string required
- Option 3 object optional
- accepted boolean required
- at string (date-time) required
- hire object required
- id string required
- name string required
- kind "buddy_response" required
- program object required
- id string required
- name string required
- Option 4 object optional
- action "hr.responder_granted" | "hr.responder_revoked" | "knowledge.verifier_granted" | "knowledge.verifier_revoked" | "participant.opted_in" | "participant.opted_out" | "person.access_suspended" | "person.access_updated" | "person.role_updated" required
- at string (date-time) required
- details object required
- kind "audit" required
- program null | object required
- id string required
- name string required
- Option 5 object optional
- at string (date-time) required
- automation "add_to_group" | "add_to_program" | "ask_pulse" | "give_badge" | "invite_community" | "remove_from_group" | "send_message" | "slack_invite" | "slack_post" | "start_playbook" | "tell_hr" | "tell_manager" | "tell_person" required
- group object required
- id string required
- name string required
- kind "group_automation" required
- outcome "done" | "failed" | "scheduled" | "skipped" required
- trigger "entered" | "left" required
- why null | string required
- Option 1 object optional
- hrRequests null | object required
- open number required
- total number required
users.blockedPairs
List pairs of people who are never introduced
POST/api/v1/manage/users/blockedPairs
- Read
- Permission users.blockedPairs
const result = await shuffl.users.blockedPairs();Request fields (none)
This operation takes no input.
Response object[]
- a object required
- id string required
- name string required
- b object required
- id string required
- name string required
users.details
Read one person's People directory record
POST/api/v1/manage/users/details
- Read
- Permission users.details
const result = await shuffl.users.details({
"memberId": "<memberId>"
});Request fields (1)
- memberId string required
Response object
- department null | object required
- id string required
- name string required
- directory null | object required
- employmentType null | "contractor" | "full_time" | "intern" | "part_time" | "temporary" required
- jobTitle null | string required
- lastDay null | string required
- lastDayAnnounced boolean required
- managedAt null | string (date-time) required
- managedBy null | string required
- managerId null | string required
- memberId string required
- originalStartDate null | string required
- revision number required
- startDate null | string required
- teamId string required
- timezone null | string required
- updatedAt string (date-time) required
- groups object[] required
- hrTeam boolean required
- id string required
- kind "dynamic" | "list" required
- name string required
- onProfile boolean required
- source "directory" | "scim" | "shuffl" | "slack" required
- manager null | object required
- id string required
- name string required
- member object required
- active boolean required
- bot boolean required
- createdAt string (date-time) required
- email null | string required
- employeeNumber null | number required
- id string required
- name string required
- profile object required
- askMeAbout string[] optional
- asks string optional
- bio string optional
- interests string optional
- location string optional
- offers string optional
- phone string optional
- preferredName string optional
- pronouns string optional
- role string optional
- workingOn string optional
- slackPhotoUrl null | string required
- slackProfileLinkAt null | string (date-time) required
- slackUserId null | string required
- teamId string required
- userId null | string required
users.filterOptions
List the teams, departments, managers and locations People can filter by
POST/api/v1/manage/users/filterOptions
- Read
- Permission users.filterOptions
const result = await shuffl.users.filterOptions();Request fields (none)
This operation takes no input.
Response object
- locations string[] required
- managers object[] required
- id string required
- name string required
- timezones string[] required
- titles string[] required
- units object[] required
- id string required
- kind "department" | "group" required
- name string required
users.get
Get a person
GET/api/v1/users/{id}
- Read
- Permission users.get
const result = await shuffl.users.get({
"id": "<id>"
});Request fields (1)
- id string required1 to 128 characters
Response object
- active boolean required
- bot boolean required
- email string | null required
- id string required1 to 128 characters
- name string required
- profile object required
- asks string optionalAt most 500 characters
- bio string optionalAt most 1000 characters
- interests string optionalAt most 500 characters
- location string optionalAt most 200 characters
- offers string optionalAt most 500 characters
- phone string optionalAt most 40 characters
- pronouns string optionalAt most 40 characters
- role string optionalAt most 200 characters
users.glance
Headcount, growth, departments, tenure and time zones, and where you fit
POST/api/v1/manage/users/glance
- Read
- Permission users.glance
const result = await shuffl.users.glance();Request fields (none)
This operation takes no input.
Response object
- averageTenureYears null | number required
- dated number required
- departments object[] required
- label string required
- value number required
- enough boolean required
- growth object[] required
- at string required
- value number required
- headcount number required
- hiredThisYear number required
- leftThisYear null | number required
- me null | object required
- joinedAfter number required
- joinedBefore number required
- start string required
- monthly object[] required
- headcount number required
- joined number required
- month string required
- tenure object[] required
- label string required
- value number required
- timezones object[] required
- label string required
- value number required
- topics string[] required
- undated number required
users.list
List people in this team
GET/api/v1/users
- Read
- Permission users.list
- Paginated with cursor
const result = await shuffl.users.list({});Request fields (3)
- cursor string optional1 to 128 characters
- limit integer optional1 to 100. Defaults to 25
- search string optionalAt most 100 characters
Response object
- items object[] required
- active boolean required
- bot boolean required
- email string | null required
- id string required1 to 128 characters
- name string required
- profile object required
- asks string optionalAt most 500 characters
- bio string optionalAt most 1000 characters
- interests string optionalAt most 500 characters
- location string optionalAt most 200 characters
- offers string optionalAt most 500 characters
- phone string optionalAt most 40 characters
- pronouns string optionalAt most 40 characters
- role string optionalAt most 200 characters
- nextCursor string | null required
users.managerHistory
Read a person's recorded manager history
POST/api/v1/manage/users/managerHistory
- Read
- Permission users.managerHistory
- Paginated with cursor
const result = await shuffl.users.managerHistory({
"memberId": "<memberId>"
});Request fields (2)
- cursor string optional
- memberId string required
Response object
- nextCursor string optional
- rows object[] required
- actorId null | string required
- details object required
- actorName string required
- managerId null | string required
- managerName null | string required
- previousManagerId null | string required
- previousManagerName null | string required
- previousRecorded boolean required
- revision number required
- id string required
- recordedAt string (date-time) required
users.managers
List the managers in the People directory
POST/api/v1/manage/users/managers
- Read
- Permission users.managers
const result = await shuffl.users.managers({});Request fields (2)
- excludeId string optional
- search string optional
Response object[]
- id string required
- name string required
users.page
List people in the People directory: search, or filter by team, department, manager, location, access or workspace role such as owner, admin or HR responder
POST/api/v1/manage/users/page
- Read
- Permission users.page
const result = await shuffl.users.page({});Request fields (15)
- access "all" | "enabled" | "pending" | "suspended" optional
- departmentId string optional
- directReports "all" | "no" | "yes" optional
- groupId string optional
- hasManager "all" | "no" | "yes" optional
- jobTitle string optional
- location string optional
- managerId string optional
- page number optional
- programId string optional
- role "admin" | "all" | "hr_responder" | "knowledge_verifier" | "member" | "owner" optional
- search string optional
- slackAccount "all" | "linked" | "unlinked" optional
- status "all" | "inactive" | "participating" | "paused" optional
- timezone string optional
Response object
- notInvited number required
- ownPersonId null | string required
- page number required
- pageSize number required
- rows object[] required
- access null | object required
- status "enabled" | "pending" | "suspended" required
- appAccess null | "access_pending" | "active" | "invited" | "no_email" | "not_invited" | "suspended" required
- directory object required
- jobTitle null | string required
- startDate null | string required
- enrollment null | object required
- optedIn boolean required
- present boolean required
- member object required
- active boolean required
- bot boolean required
- createdAt string (date-time) required
- email null | string required
- employeeNumber null | number required
- id string required
- name string required
- profile object required
- askMeAbout string[] optional
- asks string optional
- bio string optional
- interests string optional
- location string optional
- offers string optional
- phone string optional
- preferredName string optional
- pronouns string optional
- role string optional
- workingOn string optional
- slackPhotoUrl null | string required
- slackProfileLinkAt null | string (date-time) required
- slackUserId null | string required
- teamId string required
- userId null | string required
- photoUrl null | string required
- teamRole null | "admin" | "member" | "owner" required
- units object[] required
- kind "department" | "group" required
- name string required
- userId null | string required
- access null | object required
- total number required
users.participants
List the people who take part in programs
POST/api/v1/manage/users/participants
- Read
- Permission users.participants
const result = await shuffl.users.participants({});Request fields (1)
- programId string optional
Response object[]
The response is object[].
users.reportingLineProposal
Read the reporting lines Mello proposed that wait for review
POST/api/v1/manage/users/reportingLineProposal
- Read
- Permission users.reportingLineProposal
const result = await shuffl.users.reportingLineProposal();Request fields (none)
This operation takes no input.
Response null | object
The response is null | object.
users.assignManagers
Set the manager of several people at once
POST/api/v1/manage/users/assignManagers
- Write
- Permission users.assignManagers
- Needs a requestKey
- Needs confirm set to users.assignManagers
const result = await shuffl.users.assignManagers({
"assignments": [
{
"managerId": "<managerId>",
"personId": "<personId>"
}
],
"confirm": "users.assignManagers",
"requestKey": "a-new-unique-key"
});Request fields (3)
- assignments object[] required
- managerId null | string required
- personId string required
- confirm "users.assignManagers" required
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- changed number required
- unchanged number required
users.blockPair
Stop two people from being introduced to each other
POST/api/v1/manage/users/blockPair
- Write
- Permission users.blockPair
- Needs a requestKey
const result = await shuffl.users.blockPair({
"a": "<a>",
"b": "<b>",
"blocked": false,
"requestKey": "a-new-unique-key"
});Request fields (4)
- a string required
- b string required
- blocked boolean required
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- saved boolean required
users.participation
Opt a person in to or out of a program
POST/api/v1/manage/users/participation
- Write
- Permission users.participation
- Needs a requestKey
const result = await shuffl.users.participation({
"memberId": "<memberId>",
"optedIn": false,
"programId": "<programId>",
"requestKey": "a-new-unique-key"
});Request fields (5)
- memberId string required
- optedIn boolean required
- programId string required
- reason string optional
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- breakUntil null | string (date-time) required
- consentRevision number required
- createdAt string (date-time) required
- memberId string required
- optedIn boolean required
- present boolean required
- programId string required
- reason null | string required
- teamId string required
- updatedAt string (date-time) required
users.profile
Edit a person's profile as an administrator
POST/api/v1/manage/users/profile
- Write
- Permission users.profile
- Needs a requestKey
const result = await shuffl.users.profile({
"memberId": "<memberId>",
"profile": {},
"requestKey": "a-new-unique-key"
});Request fields (3)
- memberId string required
- profile object required
- asks string optional
- bio string optional
- interests string optional
- location string optional
- offers string optional
- phone string optional
- pronouns string optional
- role string optional
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- saved boolean required
users.proposeReportingLines
Ask Mello to propose managers for people without one; nothing changes until reviewed
POST/api/v1/manage/users/proposeReportingLines
- Write
- Permission users.proposeReportingLines
- Needs a requestKey
- Needs confirm set to users.proposeReportingLines
const result = await shuffl.users.proposeReportingLines({
"confirm": "users.proposeReportingLines",
"requestKey": "a-new-unique-key"
});Request fields (2)
- confirm "users.proposeReportingLines" required
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- Option 1 object optional
- proposal object required
- createdAt string (date-time) required
- id string required
- inferredBy "ai" | "rule" required
- lines object[] required
- status "proposed" required
- proposal object required
- Option 2 object optional
- status "not_enough_to_go_on" | "nothing_missing" required
- Option 1 object optional
users.reviewReportingLines
Approve chosen proposed reporting lines and close the proposal
POST/api/v1/manage/users/reviewReportingLines
- Write
- Permission users.reviewReportingLines
- Needs a requestKey
- Needs confirm set to users.reviewReportingLines
const result = await shuffl.users.reviewReportingLines({
"approve": [
"<approve>"
],
"proposalId": "<proposalId>",
"confirm": "users.reviewReportingLines",
"requestKey": "a-new-unique-key"
});Request fields (4)
- approve string[] required
- proposalId string required
- confirm "users.reviewReportingLines" required
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- approved number required
- rejected number required
users.save
Change someone's People directory record as an administrator: name, job title, manager, team, department or start date
POST/api/v1/manage/users/save
- Write
- Permission users.save
- Needs a requestKey
const result = await shuffl.users.save({
"departmentId": "<departmentId>",
"email": "<email>",
"expectedRevision": 0,
"groupIds": [
"<groupIds>"
],
"jobTitle": "<jobTitle>",
"managerId": "<managerId>",
"memberId": "<memberId>",
"name": "<name>",
"startDate": "<startDate>",
"timezone": "<timezone>",
"requestKey": "a-new-unique-key"
});Request fields (16)
- allowDuplicateEmail false | true optional
- departmentId null | string required
- email null | string required
- employmentType null | "contractor" | "full_time" | "intern" | "part_time" | "temporary" optional
- expectedRevision number required
- groupIds string[] required
- jobTitle null | string required
- lastDay null | string optional
- lastDayAnnounced false | true optional
- managerId null | string required
- memberId string required
- name string required
- originalStartDate null | string optional
- startDate null | string required
- timezone null | string required
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- department null | object required
- id string required
- name string required
- directory null | object required
- employmentType null | "contractor" | "full_time" | "intern" | "part_time" | "temporary" required
- jobTitle null | string required
- lastDay null | string required
- lastDayAnnounced boolean required
- managedAt null | string (date-time) required
- managedBy null | string required
- managerId null | string required
- memberId string required
- originalStartDate null | string required
- revision number required
- startDate null | string required
- teamId string required
- timezone null | string required
- updatedAt string (date-time) required
- groups object[] required
- hrTeam boolean required
- id string required
- kind "dynamic" | "list" required
- name string required
- onProfile boolean required
- source "directory" | "scim" | "shuffl" | "slack" required
- manager null | object required
- id string required
- name string required
- member object required
- active boolean required
- bot boolean required
- createdAt string (date-time) required
- email null | string required
- employeeNumber null | number required
- id string required
- name string required
- profile object required
- askMeAbout string[] optional
- asks string optional
- bio string optional
- interests string optional
- location string optional
- offers string optional
- phone string optional
- preferredName string optional
- pronouns string optional
- role string optional
- workingOn string optional
- slackPhotoUrl null | string required
- slackProfileLinkAt null | string (date-time) required
- slackUserId null | string required
- teamId string required
- userId null | string required
- department null | object required