Docs

Docs

x-cpod-domain: people

People

Human identities and the groups they belong to.

Try in explorer client.people

Person

A human identity in the enterprise.

REST path/api/v1/people/persons
Operations
listgetcreateupdatedeactivatedelete
SDK
// list — returns only your records; add filters/search:
await client.people.persons.list()

// create:
await client.people.persons.create({
  id: "rec_01HXEXAMPLE",
  tenant_id: "example tenant_id",
  created_at: "2026-01-01T00:00:00Z",
  updated_at: "2026-01-01T00:00:00Z",
  app_id: "example app_id",
  created_by: "rec_01HXEXAMPLE",
})
FieldTypeDescription
id*uuidServer-assigned ULID with type prefix (e.g. per_…).
tenant_id*stringTenant scope — auto-stamped from the caller's JWT.
app_idstringApp scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present.
created_at*date-timeServer stamp.
updated_at*date-timeServer stamp; updated on every patch.
created_byuuidPerson id from the caller's JWT (sub).
updated_byuuidPerson id from the last writer's JWT (sub).
sourcestringProvenance tag — defaults to 'edm'.
source_typeenumWhere the write originated. Defaults to 'api'.frontendbackendserversystemapi
is_deletedbooleanSoft-delete flag. Excluded from default list queries.
deleted_atdate-timeStamped when soft-deleted; null otherwise.
deleted_byuuidPerson id who soft-deleted; null otherwise.
schema_versionnumberDocument schema version. Bumped on incompatible writes.
external_idstringExternal system identifier, such as an Active Directory Object GUID or HR system employee record ID.
emailemailPrimary work email address. Must be unique across all active Persons in the tenant.
display_namestringFull display name as shown in the UI and API responses.
first_namestringGiven (first) name.
last_namestringFamily (last) name.
employee_idstringHR system employee identifier (e.g. Workday, BambooHR). Null for contractors, vendors, and service accounts.
typestringClassification of the person's relationship to the enterprise. 'service_account' represents a non-human identity whose owner is tracked here.
statusstringCurrent employment or engagement status. 'terminated' and 'suspended' persons must have their access entitlements reviewed.
departmentstringOrganizational department or business unit name, as sourced from the HR system or directory.
titlestringJob title.
locationjsonPrimary work location for this person.
manager_iduuidUUID of the Person who is this person's direct manager. Null for top-level executives or service accounts.
identitiesjsonLinked external identity provider records for this person (e.g. Active Directory, Okta, Google Workspace). One person may have identities across multiple provid
start_datedate-timeDate on which this person started their engagement with the enterprise (hire date, contract start date, etc.).
end_datedate-timeDate on which this person's engagement ended or is scheduled to end. Null if still active.
timezonestringIANA timezone identifier for this person's primary working location (e.g. 'America/New_York').
working_hoursjsonTypical working hours for this person in their local timezone.
cost_center_iduuidUUID of the CostCenter to which this person's headcount cost is attributed.

Group

A set of Persons or Groups. Self-referential.

REST path/api/v1/groups
Operations
listgetcreateupdatedelete
SDK
// list — returns only your records; add filters/search:
await client.people.groups.list()

// create:
await client.people.groups.create({
  id: "rec_01HXEXAMPLE",
  tenant_id: "example tenant_id",
  created_at: "2026-01-01T00:00:00Z",
  updated_at: "2026-01-01T00:00:00Z",
  app_id: "example app_id",
  created_by: "rec_01HXEXAMPLE",
})
FieldTypeDescription
id*uuidServer-assigned ULID with type prefix (e.g. per_…).
tenant_id*stringTenant scope — auto-stamped from the caller's JWT.
app_idstringApp scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present.
created_at*date-timeServer stamp.
updated_at*date-timeServer stamp; updated on every patch.
created_byuuidPerson id from the caller's JWT (sub).
updated_byuuidPerson id from the last writer's JWT (sub).
sourcestringProvenance tag — defaults to 'edm'.
source_typeenumWhere the write originated. Defaults to 'api'.frontendbackendserversystemapi
is_deletedbooleanSoft-delete flag. Excluded from default list queries.
deleted_atdate-timeStamped when soft-deleted; null otherwise.
deleted_byuuidPerson id who soft-deleted; null otherwise.
schema_versionnumberDocument schema version. Bumped on incompatible writes.
namestringCanonical name of the group. For AD-sourced groups, this is the sAMAccountName or distinguished name. Should be unique within a given source.
typestringClassification of the group's purpose. 'ad_group' groups are typically synced from Active Directory or Azure AD. 'custom' groups are manually created in cPod.
descriptionstringHuman-readable description of the group's purpose.
owner_iduuidUUID of the Person responsible for this group. The owner is the authoritative approver for membership changes.
membersjsonCurrent membership list for this group. Each entry links a Person to this group with an optional role.
parent_group_iduuidUUID of the parent Group, enabling group hierarchies (e.g. a team nested inside a department group). Null for top-level groups.
display_namestringHuman-friendly name shown in cPod (SCIM owns the canonical name).
kindenumClassification of the group's purpose.departmentteamcohortsquadcommitteead_groupdistribution_listcustom
sourceenumSystem of record the group was sourced from.manualactive_directoryazure_adoktascim
tagsjsonFree-form labels applied to the group (e.g. 'engineering', 'on-call').