Explore Employee data API

Understand the basic concepts of employee data API in Bob

Overview

Bob's Public APIs and Webhooks offer developers a programmatic way to access employee data efficiently. Using the REST API and Webhooks, you can communicate with Bob and leverage employee data for various business needs.

People's data fields

Bob comes with a predefined set of fields, tables, and categories that cover Bob's functionality, which is referred to as out-of-the-box (OOTB).

Any new Fields, Tables, or Categories added by users are called "custom fields," "custom tables," and "custom categories," allowing for further customization based on specific requirements.

Both OOTB and Customized data fields can be accessed via the Public API.

To learn more about customizing the employee data, see Set up People's data fields ↗.

Employee data modeling

The Employee Data API organizes data into Categories, which group related fields and tables.

Fields can be either:

  • Non-historical : These are the standard data fields that hold a single value.
    • Fields can be of any of the supported data types.
    • Existing fields can be customized.
    • Users can create new custom fields.
  • Historical : Fields that have an 'effective date'.
    • Historical fields can store several values, each with an effective date.
    • Based on the current date, the values with a current effective date are considered the 'current value' for this field.
    • Existing historical fields can be customized.
    • Users can create new custom fields.
  • Calculated (read-only): Dynamically generated values based on other fields.
    • For example, Full Name is actually calculated based on First name + Middle name + Last name.
    • When editing the employee data from the UI, calculated fields are grayed out and cannot be updated.
    • Calculated fields can not be customized or created by users.
    • Cannot be mapped to third-party fields when setting up integrations.

Columns are fields within tables that store more multi-record data and can be either:

  • Historical tables: These are out-of-the-box tables that track changes over time. Each row has an 'effective date'. Based on the current date, rows with the current effective date are considered the current data of the employee (green dot in UI) and can be retrieved when using the Employee Search API. Historical tables can be:
    • Single current: The 'effective date' is the only key. For example, the Work table.
    • Multi current: Tables with a secondary key (in addition to the 'effective date') can have a few' current' rows. For example, Variable Pay table with the key:Effective date + Variable type.
  • Non-historical Tables: Do not have an 'effective date'.

📘

Note:

Calculated fields, and historical tables and columns cannot be created by the user or via the Public API.

Data access via the Public API

The following tables will help you determine which fields and tables can be accessed via the Public API and which endpoints you need to use for each.

Data typeDescriptionRelevant Relevant endpointsIncluded in fields metadataCan be customized by the user
FieldsEmployee fields can be of any supported data types. All OOTB fields.
Historical tables' 'current' values.
People data +
Fields Metadata
YesYes
Historical fieldsFields with an 'effective date'.'Disability Status'People data Yes
(current value only)
Yes
Calculated FieldsFields calculated based on existing fieldsFor example:
Full Name
People data +
Fields Metadata
YesNo
Lists List items can be a value of a field. The list item can be a backend-id or the display value. All fieldsPeople data +
Fields Metadata
NoYes
Historical Tables:
Single current
Single row with the 'current effective date'Work
Employment
Payroll/Salary
Lifecycle
People dataYesNo
Historical Tables:
Multi current
Multiple rows can be active based on the 'effective date' and additional keys.Variable PayPeople dataYesNo
Non-historical tablesTables that can have duplicate rowsCustom Tables + Actual Payments,
Bank Accounts,
Training, Equity, Deduction,
Entitlement,
People data + Fields Metadata +
Employee Tables (besides Entitlement and Deduction)
Yes
(besides Actual Payment)
Yes

📘

Notes:

Actual Payments: The Actual Payments table's fields are included in the fields metadata, however, this is a non-historical table that cannot be retrieved using the People data endpoints. You should use the dedicated Employee Table endpoint for this table.

  1. Non-historical tables: Not all non-historical tables have an endpoint which allows to read all records. For these tables you can use the People data endpoints (e.g. Search) in order to fetch the 'current' row's data: Entitlement, Deduction, Address.
  2. Workforce planning data: Some of the sections in employee's data are part of the Workforce planning module (e.g. Positions and Jobs), and should be accessed via the Workforce Planning endpoints rather than the People's data API.

Public API

Metadata endpoints

The metadata endpoints provide access to fields and list properties.

TypeDescriptionsAPI Endpoints
Fields metadataUse this endpoint to obtain the properties of fields and historical-tables. The metadata returns all the fields that are considered the 'current' data of the employeeGet all employee fields
Create a new field
Update an existing field
Delete an existing field.
Lists metadataUse these endpoints to obtain and manage the properties of listsGet all company lists
Get a specific company list by name
Add a new item to an existing list
Add a new item to an existing list

To learn more, see Metadata endpoints.

Employee data endpoints

The endpoints that provide access to the employee data include:

TypeDescriptionAPI Endpoints
Get people dataProvide access to out-of-the-box fields, custom fields and current values of historical tablesSearch for employees
Read company employee fields by employee
Read the public profile of active employees
Create Use this endpoint to create an employee and get it's details backCreate company employee
Update Update specific fields in an employee's record and change the employee's statusCreate company employee
Terminate
Revoke access
Invite
set start date
AvatarManage avatar image filesUpload avatar
Read avatar by email
Read avatar by ID
EmailUpdate the employee's work email addressUpdate the employee's email

OOTB tables endpoints

The out-of-the-box tables in Bob are designed to support employee employment and lifecycle flows. The table below outlines which tables are accessible and highlights any limitations for specific tables.

TableDescriptionActions & LimitationsAPI Endpoints
LifecycleAutomatically reflects the employee’s lifecycle based on user actions in Bob, such as rehiring, placing or returning from leave, and employee termination. To learn more, check out the lifecycle status in Bob .The changes are logged as Lifecycle entries and impact employee status. Entries cannot be added/removed by users.Get, bulk get
WorkReflects the employee’s work history.Changes in the Lifecycle influence the Work status.Get, bulk get, create, update, and delete
EmploymentCaptures the employee’s employment history, including job terms and working patterns.Get, bulk get, create, update, and delete
Payroll (Salary)Captures the employee’s salary terms and history.Get, bulk get, create, and delete
Payroll
(Variable Pay)
Part of Payroll tables; includes variable payments information.Get, create, and delete
Payroll
(Actual Payments)
Part of Payroll tables; stores actual payments made.Non-historical table. Search functionality only
Payroll (bank accounts)Part of Payroll tables; stores bank account details.Non-historical table.Get, create, update, and delete.
Payroll (Equity)Part of Payroll tables.Non-historical table.Get, Create, update, and delete.
TrainingPart of the Training category.Non-historical table.Get, create, and delete.

The Employee Tables API reference lists the Public API endpoints.

Custom tables endpoints

The table below outlines how to access custom in Bob:

TypeDescriptionAPI Endpoints
Custom tables metadataUse these endpoints to obtain the properties of custom tablesRead metadata of custom tables defined
Read metadata for specific custom table
Get entriesRead all the entries of a custom tableRead entries
Create, Update, and Delete entriesCreate new custom table entry
Update custom table entry
Delete custom table entry

For the complete reference guide, see Custom Tables

Employee webhook events

Bob allows you to subscribe to system events by providing a webhook URL as a listener. When an event occurs, Bob will call this listener and send details in the event's payload.

Each webhook event sends information specific to the event, and the listener can then make an API call to retrieve additional data as needed for further context.

Employee webhook events include:

  • Creating and updating the employee profile.
  • Changes to the employee's lifecycle.
  • Updating employee tables.

A common use case for subscribing to Bob's webhook events is to keep external systems, like payroll or identity management tools, in sync with Bob. When an employee profile is updated, the Webhook event serves as a notification to the connected system, prompting it to call Bob's API to retrieve all relevant details. This ensures data consistency across platforms without manual input, automating updates efficiently.

To learn more, see Getting started with Webhooks.

For the reference guide, see Webhook Events.

Permissions

Categories are the primary unit for assigning permissions to access fields and tables. Each category is identified by a unique category ID, which varies between out-of-the-box categories and user-defined categories. To learn more about each category, see People's data fields glossary.

When using the Bob API, you need to authenticate with a Service User and assign the relevant permissions:

  • Service Users: API service users in Bob allow you to access APIs in Bob. Multiple service users can be created, each with unique permissions, depending on the API you want to access.
  • Permissions: are always assigned to categories rather than individual fields.
  • Permission groups: Give you control over what information and functionalities each service user can access.

To learn more, see Categories and permissions.

Lists

Fields can be linked to a list, which holds string item values. Lists can be out-of-the-box or custom (defined by the user). All lists and their values can be retrieved using the lists metadata API.

List items backend-IDs
Each list item has a backend ID, which represents the id of the item in the list as stored in the database. The id can be a text (for out-of-the-box lists) or a number (for custom lists). In order to view the string value of the list item, you should convert it to human-readable format.

To learn more, see Fields and lists metadata.

Related resources