Create and Configure Customer Application
Tip
If you have completed development for Recruiter System Connect, the following steps are similar with minor changes.
- Requirements
- Provisioning Customers
- Display the ATS Integration Configuration Plugin
- Sync Integration Configurations
Requirements
- Provide the ability for customer's to enable / disable LinkedIn Easy Apply for all jobs at the account level with LinkedIn's Job Terms & Conditions language.
- Provide the ability for customer's to enable / disable LinkedIn Easy Apply at the individual job level with LinkedIn's Job Terms & Conditions language.
- Display ATS Integration Configuration Plugin for LinkedIn Recruiter users to enable Apply Connect widgets and Applicant Notifications.
Provision Customers
The Provisioning API allows you to create API keys for each of your customers, complete configuration details found here. Please note that you will need to store a unique API key and a LinkedIn Developer Application id for each of your customers. For existing customers of Job Postings, Recruiter System Connect, or Apply with LinkedIn you will be using their existing API keys.
Note
All API requests require authorization.
Create Enablement Toggle
In your application’s settings, provide a toggle that allows your customers to opt in or out of LinkedIn Easy Apply for their jobs at both the account / global and individual job level. The following language needs to appear directly next to or below the toggle (in a font size and color that will be noticeable to your customers): "By posting your job to LinkedIn, you agree to LinkedIn’s Jobs Terms & Conditions. Learn more about using LinkedIn Easy Apply". Customers should, by default, be opted in to LinkedIn Easy Apply and the toggle should be readily available to them in an appropriate location within your settings.
Display ATS Integration Configuration Plugin
Display the ATS Integration configuration plugin, this allows LinkedIn Recruiter customers to enable additional features of Apply Connect, including the profile plugin and Applicant Notifications.
<script type="text/javascript" src="https://platform.linkedin.com/xdoor/scripts/in.js">
api_key: {customer_api_key}
extensions: ATSIntegrationWidget@https://platform.linkedin.com/rsc/extensions/onboarding-widget
</script>
<script type="IN/ATSIntegrationWidget"
data-supported-bundled-integration-types="APPLY_CONNECT"
data-onintegrate="handleIntegrations"
data-allow-hear-back-signal=true/false
data-width="{width}">
</script>
<script>
/**
* This callback should:
* 1) Store the customer's integration in your ATS. These values are used throughout the Middleware Platform's API.
* 2) Tell your server to create and configure customer integrations via the Middleware Platform using this data.
* @param {Object[]} integrations
* @param {string} integrations[].integrationContext
* @param {string} integrations[].integrationType
* @param {string} integrations[].tenantType
*/
function handleIntegrations(integrations) {
//Your code here
}
</script>
Integration Enums
The value for data-supported-bundled-integration-types
should be based on the integrations as indicated below:
Enum | Description | Required |
---|---|---|
APPLY_CONNECT | Used for the Apply Connect integrations only | Yes |
Plugin Load
The plugin will load based on the data-width
and data-supported-bundled-integration-types attributes
you specify. Use the latter attribute to declare which integrations you support.
Sync Customer Integration
After a customer requests the bundle to configure their integration you will make a sync request to the atsIntegrations endpoint with the provided values.
POST https://api.linkedin.com/v2/atsIntegrations?ids[0].integrationContext={integrationContext}&ids[0].integrationType={integrationType}&ids[0].tenantType={tenantType}&ids[0].dataProvider=ATS
Note
Creating integrations must be done server-side and in real-time.
Please submit batch calls grouped with no more than 100 records and a minimum delay of one-second between calls.
For each id part specified in the request:
- Use the customer's integration context obtained from the plugin as the value of
id[i].integrationContext
The format will be "urn:li:organization:{id}".
- Use the integration type obtained from the plugin as the value of
id[i].integrationType
- Use the tenant type obtained from the plugin as the value of
id[i].tenantType
- Use "ATS" as the value of
id[i].dataProvider
Request Body Fields
Field | Description | Format | Required |
---|---|---|---|
integrationName | Customer-facing name for the integration. | string | Yes |
Sample Request
Headers:
Authorization: Bearer {token}
x-restli-method: batch_partial_update
Request Body:
{
"entities": {
"integrationContext=urn:li:organization:1234&integrationType=APPLY_CONNECT&tenantType=JOBS&dataProvider=ATS": {
"patch": {
"$set": {
"integrationName": "My Customer's LinkedIn Apply Connect Integration"
}
}
}
}
}
Sample Response
A successful request will return a 200 OK
response code, and you will find the status of each entity in the response body.
Sample Response Body
{
"errors": {},
"results": {
"integrationType=APPLY_CONNECT&tenantType=JOBS&dataProvider=ATS&integrationContext=urn%3Ali%3Aorganization%3A1234": {
"status": 204
}
}
}
Note
Be sure to check the response for error statuses corresponding to individual entities you submit.