Provision Customer Hiring Contracts API
To manage jobs or campaigns like the P4P Job Campaign, there must be a customer contract created and associated with each child application. This "customer" contract is a child contract of the financial contract a partner signs to provision their Production dashboard with LinkedIn. The "financial (or parent)" contract here is the instance that is associated with the partner's parent Developer Application during self-provisioning activities by calling atsIntegrations
API as in Update Customer Integrations.
This provisionedHiringContracts
API is introduced to automate the provisioning of the customer/child contract under certain circumstances like managing campaigns of Partner P4P. Previously, all child contract provisioning had to be manually done by LinkedIn POC. With this API, one can self-serve creating & associating customer contracts almost in real time after creating a child Developer Application via Provisioning API. Please note that these customer contracts CANNOT be used to manage paid jobs such as Promoted Job Posting. All customer contracts created by this API share a total budget with the financial contract, so they are not meant to be managed independently.
API Overview
Use the /provisionedHiringContracts
API to setup a customer contract. The API only supports the PARTNER_P4P
type now which goes into the request body. There will be always a 1-to-1 mapping between a child Developer Application and a customer contract, and you will need to provide the child Developer Application information by providing the access token of the application. Upon success, one will get the contract
ID in a response which he or she can use to manage the P4P Job Campaign.
API Authorization
All requests below require access tokens obtained via the OAuth2.0 Client Credentials flow. You MUST use the token from the child Developer Application you want to setup a contract for.
Important
We strongly recommend to use same access token for all concurrent and consecutive calls. An access token has a lifespan of 30 mins. Only on expiry of the existing token should a new token should be generated.
Setup Contract
action=setup
supports creation and provisioning of a new customer contract. Only 1 contract can be populated per call. Please use the following example to submit a request.
Setup Contract Sample Request
POST https://api.linkedin.com/rest/provisionedHiringContracts?action=setup
X-RestLi-Protocol-Version: 2.0.0
LinkedIn-Version: 202403
Authorization: Bearer {access_token}
Note
- You must use the {access_token} from the child Developer Application you want to setup a contract and manage campaigns for the specific customer.
- This is a versioned API.
Linkedin-Version
is required to provide to specify the right version to call.
Sample Request Body
{
"contractType":"PARTNER_P4P"
}
Sample Response Body
{
"key": "urn:li:developerApplication:12345",
"contract": "urn:li:contract:67890",
"contractType": "PARTNER_P4P"
}
API Request Schema
Field | Description | Type | Required |
---|---|---|---|
contractType | The type of the contract that is to be provisioned for the customer. The available types are: PARTNER_P4P . |
String | Yes |
API Response Schema
Field | Description | Type | Required |
---|---|---|---|
key | Unique id (urn) per company. | String (DeveloperApplicationUrn ) |
Yes |
contract | Unique id generated per key. | String (ContractUrn ) |
No |
contractType | The type of the contract that is to be provisioned for the customer. | String | No |
API Error Details
Response Code | HTTP Status | Message | Description | Resolution |
---|---|---|---|---|
1000 | 400 | The developer application is not found. | The token used to send the request is invalid. | Please check the developer application token used in the API. |
1001 | 409 | {key} already has a contract: {contractUrn}. | The customer dev app provided already has a contract assigned to it. | No action needed. |
1002 | 400 | The contract type is not supported. | The contract type used in the request body is invalid. | Please ensure a valid contractType is used. |
2000 | 500 | Internal Server Error. | There was some server error in setting up the customer. | Please reach out to LinkedIn support with details such as X-LI-UUID and sample request & response. |