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. 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.