TriNet to JSM Assets
TriNet to JSM Assets: Technical Integration Guide
This guide provides step-by-step instructions for configuring OnLink to retrieve People data from the TriNet API and synchronize it with JSM Assets. It covers prerequisites, OAuth 2.0 authentication, API request configuration, pagination, response validation, field mapping, import verification, and optional filtering.
Overview
OnLink retrieves TriNet API responses and maps each record to an object type in JSM Assets. The configuration uses key: to identify records and map: statements to populate Assets attributes. This guide uses the TriNet People API as an example; the same process applies to other resources when you select the appropriate endpoint and update the field mappings.
Follow these steps:
Create or confirm the target JSM Assets schema and object type.
Prepare a TriNet OAuth application and credentials.
Configure an OnLink Assets Data Source and authenticate it with TriNet.
Configure the API method, endpoint, response path, and pagination.
Fetch sample data and map TriNet fields to Assets attributes.
Preview the result, correct any issues, and run the import.
Prerequisites
A JSM Assets schema and object type for the data you want to import.
OnLink installed and available from Manage your apps.
A TriNet OAuth application with a Client ID, Client Secret, Refresh Token, and access to the required API endpoints.
Permission in JSM Assets to configure data sources, mappings, and imports.
The TriNet API endpoint URL for the object type you plan to import.
Supported TriNet object types
This guide uses the TriNet People API as the example resource. To import another resource, such as time off, select its API endpoint, configure any required parameters, and map the returned JSON fields to the corresponding Assets attributes. Refer to the TriNet API documentation for resource-specific details.
1. Prepare TriNet credentials
Before configuring OnLink, create or obtain a TriNet OAuth 2.0 application with permission to access the endpoint and data you plan to import. Confirm the required scopes and authentication requirements in the TriNet authentication documentation.
Work with your TriNet administrator to create the OAuth application and collect the Client ID, Client Secret, and Refresh Token. Keep these values secure and do not include them in page content, scripts, or screenshots.
2. Configure the OnLink data source
In OnLink, add an Assets Data Source.
For the source documentation, enter the TriNet People API documentation URL.
Select Add, then select Parse to load the API definition.
Open the authentication settings and configure the OAuth values described below.
On the authentication page, select the OAuth configuration and enter the credentials from your TriNet OAuth application. Use the following values:
Enter the Token URL, for example,
https://secure.trinet.com/oauth2/token/.Enter the Client ID.
Enter the Client Secret.
Enter the Refresh Token.
Set the scope to
people. For additional scopes, refer to the TriNet permissions documentation.Save the authentication settings.
3. Configure the API request
Configure a GET request to retrieve records from the selected TriNet endpoint. The example below uses the People API. For another resource, replace the endpoint and update the response data path if the response structure differs.
Set Method to
GETto retrieve People records.Set URL to
https://api.trinet.com/core/companies/{company_id}/people, replacing{company_id}with your TriNet company ID.Set Response data path to
data.data. The firstdatais the response wrapper and the seconddatais the array of People records.Leave other settings at their defaults unless the endpoint requires query parameters.
GET https://api.trinet.com/core/companies/{company_id}/peopleThe People API supports expansion of related objects. To include department and manager details in the response, add includes=department,manager to the request query parameters.
4. Retrieve and inspect sample data
Save the data source configuration and select Get Data to retrieve sample records from TriNet. Use the response to verify the endpoint, response data path, pagination structure, and exact field paths before creating the import mappings.
Sample response structure
{
"data": {
"data": [
{
"banks": {
"object": "/meta/ref/list",
"ref_object": "/core/banks",
"url": "https://api.zenefits.com/core/people/2/banks"
},
"city": "San Francisco",
"company": {
"object": "/meta/ref/detail",
"ref_object": "/core/companies",
"url": "https://api.zenefits.com/core/companies/1"
},
"country": "USA",
"date_of_birth": null,
"department": {
"object": "/meta/ref/detail",
"ref_object": "/core/departments",
"url": "https://api.zenefits.com/core/departments/9"
},
"employments": {
"object": "/meta/ref/list",
"ref_object": "/core/employments",
"url": "https://api.zenefits.com/core/people/2/employments"
},
"first_name": "John",
"preferred_name": "Jono",
"id": "105024",
"employee_number": "1",
"last_name": "Doe",
"location": {
"object": "/meta/ref/detail",
"ref_object": "/core/locations",
"url": "https://api.zenefits.com/core/locations/2"
},
"manager": {
"object": "/meta/ref/detail",
"ref_object": "/core/people",
"url": null
},
"object": "/core/people",
"postal_code": "94111",
"state": "CA",
"status": "active",
"street1": "101 1st St.",
"street2": "Apartment 400",
"subordinates": {
"object": "/meta/ref/list",
"ref_object": "/core/people",
"url": "https://api.zenefits.com/core/people/2/subordinates"
},
"title": "CEO",
"work_email": "johndoe@example.com",
"personal_email": "johndoe@gmail.com",
"work_phone": null,
"personal_phone": "(650) 555-1234",
"gender": "M",
"personal_pronoun": "he",
"photo_url": "https://secure.zenefits.com/file/0om8dpTQfGxCpMum2zAn",
"photo_thumbnail_url": "https://secure.zenefits.com/file/0om8dpTQfGxCpMum2zAn",
"federal_filing_status": "married",
"social_security_number": "123456789",
"is_admin": True,
"is_full_admin": True
},
{
"banks": {
"object": "/meta/ref/list",
"ref_object": "/core/banks",
"url": "https://api.zenefits.com/core/people/3/banks"
},
"city": "San Francisco",
"company": {
"object": "/meta/ref/detail",
"ref_object": "/core/companies",
"url": "https://api.zenefits.com/core/companies/1"
},
"country": "USA",
"date_of_birth": null,
"department": {
"object": "/meta/ref/detail",
"ref_object": "/core/departments",
"url": "https://api.zenefits.com/core/departments/8"
},
"employments": {
"object": "/meta/ref/list",
"ref_object": "/core/employments",
"url": "https://api.zenefits.com/core/people/3/employments"
},
"first_name": "Jane",
"preferred_name": "Jane",
"id": "105026",
"employee_number": "2",
"last_name": "Doe",
"location": {
"object": "/meta/ref/detail",
"ref_object": "/core/locations",
"url": "https://api.zenefits.com/core/locations/2"
},
"manager": {
"object": "/meta/ref/detail",
"ref_object": "/core/people",
"url": "https://api.zenefits.com/core/people/2"
},
"object": "/core/people",
"postal_code": "94111",
"state": "CA",
"status": "active",
"street1": "101 1st St.",
"street2": "Apartment 400",
"subordinates": {
"object": "/meta/ref/list",
"ref_object": "/core/people",
"url": "https://api.zenefits.com/core/people/3/subordinates"
},
"title": "Cofounder and CTO",
"work_email": "janedoe@example.com",
"personal_email": "janedoe@gmail.com",
"work_phone": null,
"personal_phone": "(650) 555-4321",
"gender": "",
"personal_pronoun": null,
"photo_url": "https://secure.zenefits.com/file/0om8dpTQfGxCpMum2zAn",
"photo_thumbnail_url": "https://secure.zenefits.com/file/0om8dpTQfGxCpMum2zAn",
"federal_filing_status": "married",
"social_security_number": "123456798",
"is_admin": True,
"is_full_admin": False
}
],
"next_url": "https://api.zenefits.com/core/people?starting_after=2",
"object": "/meta/list",
"url": "https://api.zenefits.com/core/people"
},
"error": "null",
"object": "/meta/response",
"status": 200
Configure pagination
TriNet API responses can be paginated. Configure OnLink to follow the next_url value so the import retrieves all available records.
Inspect the sample response and confirm that the pagination link is returned in
data.next_url.In the pagination settings, configure the next-page URL or continuation field to use
data.next_url.Save the pagination settings and select Get Data to confirm that records from subsequent pages are included.
For endpoint-specific behavior, refer to the TriNet pagination documentation.
5. Create the Assets import and configure field mappings
After the connection is established, create the Assets import by following the JSM Assets Data Synchronization guide.
Use the fetched sample response to identify the exact TriNet JSON field paths, then map those fields to the corresponding JSM Assets attributes. Define a stable, unique value with the key: mapping so OnLink can match existing objects and update them instead of creating duplicates.
Mapping | Purpose |
|---|---|
| Uses the TriNet People |
| Maps the TriNet member |
| Maps the TriNet member |
| Maps the TriNet member |
| Maps the TriNet member |
| Maps the TriNet member |
| Maps the TriNet member |
Mapping guidance
Define one stable, unique
key:mapping, such askey:employee_number=Employee Number, so OnLink can match records during subsequent synchronizations.Add a
map:statement for each TriNet field that you want to store in the target Assets object type.Compare the TriNet sample JSON with the Assets object type attributes before running an import.
If a value is nested in the JSON response, inspect the sample output carefully and use the field path supported by the OnLink mapping configuration.
6. Validate and run the import
Select Get Data to preview the records returned by TriNet.
Confirm that the response contains the expected records and fields.
Verify that each mapping points to the correct JSON field and Assets attribute.
Confirm that the key field is present and unique in every record so existing objects can be updated reliably.
Run the import only after the preview and mappings are correct.
Optional filtering
Use query parameters to limit the records returned by the selected TriNet endpoint. Confirm that the endpoint supports the parameter before adding it to the OnLink request.
For example, to retrieve only active workers, add status=active as a query parameter. Select Get Data again and confirm that every returned record meets the intended filter.
Before saving the data source, review the endpoint, OAuth configuration, response data path, pagination settings, field mappings, and query parameters. Save the configuration only after the preview returns the expected records and the key and mapped attributes are correct.