Middleware Provisioning API
LinkedIn's Provisioning APIs allow Partners to create and configure developer applications on behalf of their Customers which is an initial step in managing and enabling their integrations.
Getting Started
Requesting Access
In order to access the specialized Provisioning APIs, reach out to a LinkedIn Partner Engineering representative to have a developer application configured with the required permissions.
All API requests require authorization .
Create Application
Use the following endpoint to create a child application:
POST https://api.linkedin.com/v2/provisionedApplications
Request Body Fields
Field | Description | Format | Required |
---|---|---|---|
uniqueForeignId | A unique ID that represents the child application being created, as seen from the parent/calling application. This value must be unique across all child applications that belong to the parent application. Attempting to create more than one child with the same uniqueForeignId value will result in a conflict error. Use your customer identifier for this value. | String | Yes |
name | Display name of the child application. This value will be shown to users in the OAuth 2.0 authorization dialog for 3-legged scenarios. Additionally, it will be used by LinkedIn as a reference value. Note: Usage of "LinkedIn" in name is no supported. |
String (max 50 chars) Format: "{ATS Name} - {Customer Name}" | Yes |
description | A brief description of the child application. This value is only used by LinkedIn administration and is not shown to end-users of the application. | String | Yes |
oauth2AuthorizedCallbackUrls | List of fully qualified OAuth 2.0 redirect URLs to allow. | String[] | No |
validJsSdkDomains | List of fully qualified JavaScript SDK domain names. | String[] (Remove trailing '/' from domains) | No |
sample request body
{
"description": "My favorite customer",
"name": "My ATS - My Customer",
"oauth2AuthorizedCallbackUrls": [
"https://www.foo.com/",
"https://www.bar.com/"
],
"uniqueForeignId": "07d5284a-d0a1-45a3-93c0-ac69c9c78",
"validJsSdkDomains": [
"https://www.foo.js",
"https://www.bar.js"
]
}
Response Code
A successful request will return a 201 Created
response code.
Response Body Fields
Field | Description | Format |
---|---|---|
key | URN representing the application that was created. | String |
credentials.client_id | Client ID value used during OAuth 2.0 token request flow. | String |
credentials.client_secret | Client Secret value used during OAuth 2.0 token request flow. May be up to 256 characters in length and contain non-alphanumeric characters. | String |
sample response
{
"credentials": {
"client_id": "1234567890",
"client_secret": "ABCDEFGHIJKL"
},
"key": "urn:li:developerApplication:234"
}
Update Application
Use the following endpoint to update a child application:
POST https://api.linkedin.com/v2/provisionedApplications/{developer application URN}
Note
This action will write over the existing list of Javascript SDK domain names with the list of domains in the request body of this POST call. As such, be sure to take note of the JS domains created with each child application.
Request Body Fields
Field | Description | Format | Required |
---|---|---|---|
validJsSdkDomains | List of fully qualified JavaScript SDK domain names. | String[] | No |
sample request body
{
"patch": {
"$set": {
"validJsSdkDomains": [
"https://www.foo.js",
"https://www.bar.js"
]
}
}
}
Response Code
A successful request will return a 204 No Content
response code.
Get Application
Use the following endpoint to get attributes of a child application:
GET https://api.linkedin.com/v2/provisionedApplications?q=credentialsByUniqueForeignId&uniqueForeignId={uniqueForeignId}
Request Parameter
Field | Description | Format | Required |
---|---|---|---|
uniqueForeignId | Unique ID of the child application supplied during the creation of the child application. | String | Yes |
Response Code
A successful request will return a 200 OK
response code.
sample response
{
"elements": [
{
"credentials": {
"client_id": "123abc456defga"
},
"uniqueForeignId": "Unique Foreign ID",
"name": "Test Application",
"description": "This is my test application",
"validJsSdkDomains": [
"http://linkedin.com",
"https://linkedin.com"
],
"key": "urn:li:developerApplication:1234567",
"oauth2AuthorizedCallbackUrls": [
"https://www.linkedin.com.com/oauth2/callback",
"http://www.linkedin.com/oauth2/callback"
]
}
]
Error Codes
The following error codes can be returned:
Error Code | Description |
---|---|
404: uniqueForeignId not found | In the situation where the requested foreign ID is not found to be associated with an application managed by the parent application making the request, an HTTP 404 response is returned. |
409: uniqueForeignId already exists | In the case where a create call is made and a uniqueForeignID value is provided that is already associated to a child application controlled by the parent calling application, an HTTP 409 - Conflict response code is returned. A parent application will not accept the creation of multiple tenant applications that share the same uniqueForeignId value. |
429: request limit exceeded | If the calling application has exceeded its call throttle limits, an HTTP 429 – Too Many Requests status code is returned. |