HRIS: why employees or fields are missing (without an error)

Edited

Your customer sees an employee or a field in their HR system, but the Apideck response leaves it out or returns it empty, with a normal 200 response. This almost always has one of four causes. Check them in this order.

1. The connected user or credential can't see it

Most HR systems return only what the user, API key or app that connected is allowed to see. They don't send an error for the rest: they return fewer employees or leave fields empty. Apideck can only return what the provider sends.

Provider

What controls it

BambooHR

The API key has the access level of the user who created it. With Employee or Manager access you get fewer employees and fields. Use an account owner or full-access user.

Personio

The API credential's Readable employee attributes list. Attributes not on it come back empty. You can add attributes later without creating a new credential.

HiBob (service user)

The service user's permission group: which sections it can view (for example Lifecycle for employment status) and which employees the group includes. See HiBob: Missing or Incorrect Employee Fields Due to Service User Permissions.

HiBob (OAuth)

The data access approved when the app was installed. Changing it requires uninstalling and reinstalling.

Workday

The integration system user's security groups and domains. Data outside its scope is left out. See Workday: companies or departments return 403.

SAP SuccessFactors

The API user's permissions for each entity, and the modules enabled on the instance.

AFAS

The App Connector's user group rights, and the GetConnectors imported for Apideck.

The fix is on the customer's side: widen the access, then call the API again. For most providers there's no need to reconnect.

2. Terminated or inactive employees aren't included

Some providers return only active employees by default. Use filter[employment_status] where the connector supports it, for example filter[employment_status]=terminated. A few connectors need a provider-specific option instead; these are listed in the notes for the Employees operations in the HRIS API reference.

3. The list returns fewer fields than the employee detail

GET /hris/employees often returns a shorter version of each employee than GET /hris/employees/{id}. If a field is empty in the list, fetch the employee itself. See Why GET /employees and GET /employees/{id} return different fields.

4. Not all pages were fetched

A list returns one page at a time. Follow meta.cursors.next until it's empty. See How Pagination, Filtering, and Sorting Work.

How to tell which one it is

  1. Look at the provider's own response. Add raw=true to the request. This adds _raw to the response, holding what the provider itself returned. If the employee or field is missing there too, it's the provider's access settings (cause 1 or 2), not Apideck.

  2. Compare with Apideck's response. If it's in _raw but not in the Apideck response, the field may not be mapped for that connector. Check its coverage, or pick it up with a Field Mapping.

  3. Check for warnings. Look at meta.warnings in the response. Apideck adds a warning there when a secondary request for extra data (such as a manager lookup) failed. Permission limits at the provider usually don't produce a warning.

Related

Contact Apideck support through the Customer Portal (the Requests link at the top of this help center), your Slack channel with us, or support@apideck.com. Include the consumer ID, the connector and one employee ID that's missing data.

Was this article helpful?

Sorry about that! Care to tell us more?

Thanks for the feedback!

There was an issue submitting your feedback
Please check your connection and try again.