Skip to main content
The employee (Employee) is the central API resource. It is a person’s record in a specific tenant: scalar fields and references to related entities. Fetch it as a list with GET /employees or one at a time with GET /employees/{employee_id}.

Fields

Identifiers are UUID strings, timestamps are RFC 3339 in UTC, and calendar dates are YYYY-MM-DD. Absent values are present in the response (an empty string or null) rather than dropped from the object. Ignore unfamiliar fields and enum values — the response shape grows additively.
The person, department, job_title, and manager fields are separate entities, available only on request via expand. The base response does not include them, only the *_id references. How to traverse these relationships is on the Employee graph page.

person (expand=person)

department and job_title

Both objects are minimal references: id + title. There are no other fields (department head, hierarchy, headcount) in them.

manager (expand=manager)

A reference to the manager: id + full_name. This object is deliberately narrow — to get the manager’s full profile, request GET /employees/{manager.id} with your key, so permissions and field redaction apply to it.

Access model

Even with the employees:read scope, a key does not see everything. Effective access is the intersection of the key’s scopes and the key owner’s permissions. A scope is necessary but not sufficient: employees and fields unavailable to the owner’s permission profile stay invisible to the key. Fields the owner is not allowed to see (for example the IIN) are dropped from the response, and their keys are listed in redacted_fields in object.field form. So, with expand=person but without the permission for the IIN:
A field being absent from redacted_fields and an empty value are different things. A field in redacted_fields means “hidden by permissions”; an empty value with no entry in redacted_fields means “no data.” Do not confuse them when syncing.
A single record is indistinguishable by reason of unavailability: “does not exist,” “no access,” and “draft/deleted” all return the same 404 EMPLOYEE_NOT_FOUND. The response code cannot tell you whether an employee hidden from you exists.

Next

Employee graph

Employee relationships and traversal via expand.

Statuses and lifecycle

EmployeeStatus values and transitions.

Pagination

Paging through lists and incremental sync.