Sponsored Access API

What is Sponsored Access?

Symphony Sponsored Access allows Symphony partners to enable the users of their applications to collaborate on Symphony Messaging, by adding those companies and users to the Symphony network.

Users can leverage the Symphony Messaging Embedded Mode in order to chat from within the partner application.

Partners can use the Sponsored Access APIs to create accounts on Symphony Messaging for their application users, if they do not already belong to the Symphony network.

If a user’s company is not yet available on Symphony Messaging, a dedicated Symphony Messaging tenant can be created for that company before onboarding its users.

Prerequisites

Before they can use Sponsored Access APIs to add client companies, as well as add or disable users, partners must register with Symphony. Following registration, partners receive credentials to authenticate to these APIs.

If they want to offer a seamless login experience to Symphony Messaging, partners need to provide Symphony with their Identity Provider details. The recommended authentication method is SAML, although other authentication methods are also available (additional charges apply).

If you would like to register as a Symphony partner, create new users and embed Symphony Messaging within your application, please contact us.

Domains

In order to target the different APIs described below, the user should use the correct domain, depending on their environment:

Authentication

To be able to call this API, you first need to get an access token.

curl --request POST \
  --url https://us-auth.prod.symphony.com/oauth/token \
  --header 'content-type: application/json' \
  --data '{"client_id":"$client_id","client_secret":"$client_secret","audience":"https://api.symphony.com/partners","grant_type":"client_credentials"}'

To get your client_id and your client_secret, please contact Symphony.

In the response, you should get:

{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IkthaFZHSlZUOFRuSWNRamNrTW1FcSJ9.eyJodHRwczovL2F1dGguc3ltcGhvbnkuY29tL3BhcnRuZXJfaWQiOiJ5b3VyX3BhcnRuZXIiLCJpc3MiOiJodHRwczovL2Rldi13NHRlc2NvZS51cy5hdXRoMC5jb20vIiwic3ViIjoiS0pCSkpMdnd4ZkllZ0NRdjBCNm5lcGxZN25rYVNOam9AY2xpZW50cyIsImF1ZCI6Imh0dHBzOi8vYXBpLnN5bXBob255LmNvbS9wYXJ0bmVycyIsImlhdCI6MTY1NDI2MzMxMCwiZXhwIjoxNjU0MzQ5NzEwLCJhenAiOiJLSkJKSkx2d3hmSWVnQ1F2MEI2bmVwbFk3bmthU05qbyIsInNjb3BlIjoiY29tbXVuaXR5OmFjY291bnRzOm9uYm9hcmQiLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMifQ.BN5iW4sXeo4B3ecp0u3fj--tYhsVTZOWi_UgaPvHdS4PI2uopT-XfcBLCIb1PIXogshy8ZAQkwwQpiroBd9rcJDHW-ERsCWCsc6ruZKIHmvslAVF7AoLNN_GbqvvTgKLqbfTqdgNcyCg27oem6il8NhQDO0mu9ndOsJtdmwQ7Tczkla8uBoHiEO7_p1F17njxQYxpXbmG2Tfe_SUUmS0ec5vbV2-btKet3uMm5J8E8mockr8VrXLcu5hNxishELrQ6uCgmreit8R4EZNVIwK43CRnibCV7F8MQpiTkNJMYnVybwdqNOZFBzcuXRQIQHEmiW41xILuXOdPowCvBAS7w",
"token_type": "Bearer"
}

You can now use the access_tokento make authorized calls to the API. You should pass it as a Bearer token in the Authorization header.

Create company

A Sponsored Access partner can use this endpoint to sponsor a new company in Symphony.

As input, the partner must provide:

  • A name: The company name that will be visible in the user’s profile in the Directory and can be used during user search.

  • A vanityName: This will be used to construct the tenant publicUrl under which the user Symphony Messaging session will be launched. For example, if the vanity name is “coke”, the URL will be https://coke.on.symphony.com.

  • emailDomains: The list of email domains used by the users in that company. Only users with email addresses belonging to those domains can be added later on. To update the domain list, please contact your Symphony representative.

REST call to create a company:

curl -X 'POST' \
  'https://community.symphony.com/api/v2/companies' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer {access_token}' \
  -d '{
  "name": "Lyondell",
  "vanityName": "lyondell",
  "emailDomains": [
    "lyondell.com"
  ]
}'

Response you should get:

{
  "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
  "createdAt": "2023-12-22T08:53:39.269539Z",
  "updatedAt": "2023-12-20T10:59:54.516494Z",
  "name": "Lyondell",
  "vanityName": "lyondell",
  "emailDomains": [
    "lyondell.com"
  ],
  "publicUrl": "https://lyondell.on.symphony.com",
  "state": "STARTED"
}

Success

If successful, a dedicated Symphony Messaging tenant will be created for that company and will become accessible under the tenant publicUrl derived from the vanityName field.

If a user leverages the Symphony Messaging channels (Web, Desktop, Mobile), they will need to log in by accessing the tenant publicURL directly in the browser, desktop or mobile application.

If a user leverages Embedded Mode, the partner needs to load Embedded Mode using that tenant publicUrl.

Failure

Company creation will fail in the following cases:

  • There is already a company in the Directory with users having email addresses with domains belonging to the provided list of email domains.

  • There is already a company in the Directory with the same company name.

  • There is already a company in the Directory with the same vanityName.

  • If the conflicting company has been onboarded by the same partner and the list of email domains is different, an error will be thrown. In that case, the partner needs to amend the list of email domains for the company before adding users.

In case of failures, to verify whether the users of that company already have a Symphony Messaging account or not, you can call the following endpoint: https://loginservice.symphony.com/webcontroller/podLoginInformation?emailAddress={%email%}&fs=advanced

*where {%email%} needs to be replaced by the user’s email address.

If users do not have an account, you are encouraged to reach out to [email protected] or to your Symphony representative so they can help you onboard the users.

Create company

post

The creation of a company in Symphony is done in asynchronously in the background. When this call returns the state of the company will be STARTED. Please allow approximately 20 min for the company to be fully provisioned. To verify the current status of the company you can poll the 'retrieve company' endpoint using the returned id.

Authorizations
Body
idstringRead-onlyOptional

Unique identifier

Example: e176c55e-6e49-4819-b982-12e0535db5f0
createdAtstring · date-timeRead-onlyOptional

Creation date

Example: 2023-12-22T08:53:39.269539Z
updatedAtstring · date-timeRead-onlyOptional

Last update date

Example: 2023-12-20T10:59:54.516494Z
namestring · min: 2 · max: 100Required

Name of the company

Example: Lyondell
vanityNamestring · min: 2 · max: 63Required

Vanity name of the company will generate the public url of the tenant

Example: lyondellPattern: [a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?
emailDomainsstring[] · min: 1 · max: 10Required

List of email domains with which users can be registered to the tenant

Example: ["lyondell.com"]
publicUrlstringRead-onlyOptional

The Symphony public url of the company

Example: https://lyondell.on.symphony.com
statestring · enumRead-onlyOptional

The state of the company to indicate if the creation is completed

Example: STARTEDPossible values:
errorMessagestringRead-onlyOptional

Message providing additional information about the company creation error

Example: Please contact Symphony support by providing the X-Trace-Id = KUfkYm
Responses
202
Accepted
application/json
post
POST /api/v2/companies HTTP/1.1
Host: community.uat.symphony.com
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 75

{
  "name": "Lyondell",
  "vanityName": "lyondell",
  "emailDomains": [
    "lyondell.com"
  ]
}
202

Accepted

{
  "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
  "createdAt": "2023-12-22T08:53:39.269539Z",
  "updatedAt": "2023-12-20T10:59:54.516494Z",
  "name": "Lyondell",
  "vanityName": "lyondell",
  "emailDomains": [
    "lyondell.com"
  ],
  "publicUrl": "https://lyondell.on.symphony.com",
  "state": "STARTED",
  "errorMessage": "Please contact Symphony support by providing the X-Trace-Id = KUfkYm"
}

Create users

A Sponsored Access partner can use this endpoint to provision new users in Symphony Messaging under an existing sponsored company.

As input, the partner must provide:

  • A companyId (as a query parameter of the request): The companyId can be obtained by calling the Retrieve companies API.

  • An array of user information (in the body of the request). It is recommended to provide a maximum of information in order to facilitate user search in the Directory.

REST call to create users:

curl -X 'POST' \
  'https://community.symphony.com/api/v2/companies/e176c55e-6e49-4819-b982-12e0535db5f0/users' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer {access_token}' \
  -d '[
  {
    "email": "[email protected]",
    "firstName": "John",
    "lastName": "Smith",
    "displayName": "John Smith",
    "active": false,
    "phoneNumber": "true",
    "department": "Order Processing",
    "title": "Mr.",
    "location": "Sophia Antipolis"
  }
]'

Response you should get:

[
  {
    "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
    "createdAt": "2023-12-22T08:53:39.269539Z",
    "updatedAt": "2023-12-20T10:59:54.516494Z",
    "symphonyUserId": 695234946138125,
    "email": "[email protected]",
    "firstName": "John",
    "lastName": "Smith",
    "displayName": "John Smith",
    "active": true,
    "phoneNumber": "+33 1 09 75 83 51",
    "department": "Order Processing",
    "title": "Mr.",
    "location": "Sophia Antipolis",
    "status": 201
  }
]

Create users

post

Create users in a given company. Up to 20 users can be created in one API call.

Authorizations
Path parameters
companyIdstringRequired

Id of the company

Example: e176c55e-6e49-4819-b982-12e0535db5f0
Body
idstringRead-onlyOptional

Unique identifier

Example: e176c55e-6e49-4819-b982-12e0535db5f0
createdAtstring · date-timeRead-onlyOptional

Creation date

Example: 2023-12-22T08:53:39.269539Z
updatedAtstring · date-timeRead-onlyOptional

Last update date

Example: 2023-12-20T10:59:54.516494Z
symphonyUserIdinteger · int64Read-onlyOptional

Symphony user id

Example: 691867691778058
statusinteger · int32Read-onlyOptional

Individual http status code

Example: 201
emailstringRequired

User's email address

Example: [email protected]
firstNamestringRequired

User's first name

Example: John
lastNamestringRequired

User's last name

Example: Smith
displayNamestringOptional

User's display name, if not provided it is a concatenation of the first name and the last name

Example: John Smith
activebooleanOptional

User's phone number

Example: false
phoneNumberstringOptional

User's status on Symphony

Example: true
departmentstringOptional

User's department

Example: Order Processing
titlestringOptional

User's title

Example: Mr.
locationstringOptional

User's location

Example: Sophia Antipolis
Responses
201
All users are successfully created.
application/json
post
POST /api/v2/companies/{companyId}/users HTTP/1.1
Host: community.uat.symphony.com
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 214

[
  {
    "email": "[email protected]",
    "firstName": "John",
    "lastName": "Smith",
    "displayName": "John Smith",
    "active": false,
    "phoneNumber": "true",
    "department": "Order Processing",
    "title": "Mr.",
    "location": "Sophia Antipolis"
  }
]
[
  {
    "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
    "createdAt": "2023-12-22T08:53:39.269539Z",
    "updatedAt": "2023-12-20T10:59:54.516494Z",
    "symphonyUserId": 695234946138125,
    "email": "[email protected]",
    "firstName": "John",
    "lastName": "Smith",
    "displayName": "John Smith",
    "active": true,
    "phoneNumber": "+33 1 09 75 83 51",
    "department": "Order Processing",
    "title": "Mr.",
    "location": "Sophia Antipolis",
    "status": 201
  },
  {
    "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
    "createdAt": "2023-12-22T08:53:39.269539Z",
    "updatedAt": "2023-12-20T10:59:54.516494Z",
    "symphonyUserId": 691867691778059,
    "email": "[email protected]",
    "firstName": "Adele",
    "lastName": "Vance",
    "displayName": "Adele Vance",
    "active": true,
    "phoneNumber": "+33 1 09 75 83 51",
    "department": "Order Processing",
    "title": "Mr.",
    "location": "Sophia Antipolis",
    "status": 201
  }
]

Update user status

A Sponsored Access partner can use this endpoint to disable or re-enable a user.

As input, the partner must provide:

  • A companyId (as a query parameter of the request): The companyId can be obtained by calling the Retrieve companies API.

  • A userId (as a query parameter of the request): The userId can be obtained by calling the Get company users API.

  • A user active status indicator (in the body of request).

Once disabled, the user is no longer associated with the partner, and can no longer log in to Symphony. The user’s chats, however, are kept in order to meet any compliance requirements.

REST call to disable a user:

curl -X 'PATCH' \
  'https://community.symphony.com/api/v2/companies/e176c55e-6e49-4819-b982-12e0535db5f0/users/5bec2e8b-da45-46c7-9370-5669de1b1a78' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer {access_token}' \
  -d '{
  "active": false
}'

Update user status

patch

Enable or disable a specific user account.

Authorizations
Path parameters
companyIdstringRequired

Id of the company

Example: e176c55e-6e49-4819-b982-12e0535db5f0
userIdstringRequired

Id of the user

Example: 5bec2e8b-da45-46c7-9370-5669de1b1a78
Body
activebooleanRequired

Active

Responses
200
User status successfully updated
application/json
patch
PATCH /api/v2/companies/{companyId}/users/{userId} HTTP/1.1
Host: community.uat.symphony.com
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "active": true
}

No content

Search companies

A Sponsored Access partner can use this endpoint to retrieve the list of companies it has sponsored.

curl -X 'GET' \
  'https://community.symphony.com/api/v2/companies' \
  -H 'accept: application/json'
  -H 'Authorization: Bearer {access_token}' 

Response you should get:

[
  {
    "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
    "createdAt": "2023-12-22T08:53:39.269539Z",
    "updatedAt": "2023-12-20T10:59:54.516494Z",
    "name": "Lyondell",
    "vanityName": "lyondell",
    "emailDomains": [
      "lyondell.com"
    ],
    "publicUrl": "https://lyondell.on.symphony.com",
    "state": "COMPLETED"
  }
]

Search companies

get

Retrieve a company or the complete list of companies.

If the 'vanityName' is passed as a query parameter the company matching this name is returned.

If no query parameter is passed, the complete list of companies is returned.

Authorizations
Query parameters
vanityNamestring · min: 2 · max: 150Optional

Vanity name of the company

Example: lyondell
Responses
200
OK
application/json
get
GET /api/v2/companies HTTP/1.1
Host: community.uat.symphony.com
Authorization: Bearer JWT
Accept: */*
200

OK

[
  {
    "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
    "createdAt": "2023-12-22T08:53:39.269539Z",
    "updatedAt": "2023-12-20T10:59:54.516494Z",
    "name": "Lyondell",
    "vanityName": "lyondell",
    "emailDomains": [
      "lyondell.com"
    ],
    "publicUrl": "https://lyondell.on.symphony.com",
    "state": "STARTED",
    "errorMessage": "Please contact Symphony support by providing the X-Trace-Id = KUfkYm"
  }
]

Retrieve company

A Sponsored Access partner can use this endpoint to retrieve a sponsored company’s information.

As input, the partner must provide:

  • A companyId (as a query parameter of the request): The companyId can be obtained by calling the Retrieve companies API.

curl -X 'GET' \
  'https://community.symphony.com/api/v2/companies/e176c55e-6e49-4819-b982-12e0535db5f0' \
  -H 'accept: application/json'
  -H 'Authorization: Bearer {access_token}'

Response you should get:

{
  "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
  "createdAt": "2023-12-22T08:53:39.269539Z",
  "updatedAt": "2023-12-20T10:59:54.516494Z",
  "name": "Lyondell",
  "vanityName": "lyondell",
  "emailDomains": [
    "lyondell.com"
  ],
  "publicUrl": "https://lyondell.on.symphony.com",
  "state": "COMPLETED"
}

Retrieve company

get

Retrieve the details of a company, including the creation status.

When the status is COMPLETED the company is ready to be used, and users can be created on it.

If the state is not STARTED or COMPLETED, please contact Symphony for support.

Authorizations
Path parameters
companyIdstringRequired

Id of the company

Example: e176c55e-6e49-4819-b982-12e0535db5f0
Responses
200
OK
application/json
get
GET /api/v2/companies/{companyId} HTTP/1.1
Host: community.uat.symphony.com
Authorization: Bearer JWT
Accept: */*
200

OK

{
  "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
  "createdAt": "2023-12-22T08:53:39.269539Z",
  "updatedAt": "2023-12-20T10:59:54.516494Z",
  "name": "Lyondell",
  "vanityName": "lyondell",
  "emailDomains": [
    "lyondell.com"
  ],
  "publicUrl": "https://lyondell.on.symphony.com",
  "state": "STARTED",
  "errorMessage": "Please contact Symphony support by providing the X-Trace-Id = KUfkYm"
}

Update company

A Sponsored Access partner can use this endpoint to add new email domains to an existing company.

curl -X 'PATCH' \
  'https://community.symphony.com/api/v2/companies/e176c55e-6e49-4819-b982-12e0535db5f0' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer {access_token}'
  -d '{
  "emailDomains": [
    "lyondell.com"
  ]
}'

Success

In response you should get code HTTP 200.

Failure

When there already is a company in the Directory with users who have email addresses with domains belonging to the provided list of email domains.

Update company

patch

Update company to add additional email domains.

Authorizations
Path parameters
companyIdstringRequired

Id of the company

Example: e176c55e-6e49-4819-b982-12e0535db5f0
Body
emailDomainsstring[] · min: 1 · max: 10Required

List of email domains with which users can be registered to the tenant

Example: ["lyondell.com"]
Responses
200
Company email domains successfully updated
patch
PATCH /api/v2/companies/{companyId} HTTP/1.1
Host: community.uat.symphony.com
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 33

{
  "emailDomains": [
    "lyondell.com"
  ]
}

No content

Retrieve company users

A Sponsored Access partner can use this endpoint to retrieve the list of users of a company it has sponsored.

As input, the partner must provide:

  • A companyId (as a query parameter of the request): The companyId can be obtained by calling the Retrieve companies API.

The users are returned in paging mode. If the company has large number of users, multiple API calls need to be made to retrieve the full list of users. To retrieve the users on different pages, the partner must provide:

  • A currentPage (as a query parameter of the request): This is the page number. To see the total number of pages, partners can make a REST call such as the one below.

  • A pageSize (as a query parameter of the request): To specify how many users to be displayed on the page.

REST call to retrieve the list of users:

curl -X 'GET' \
  'https://community.symphony.com/api/v2/companies/e176c55e-6e49-4819-b982-12e0535db5f0/users' \
  -H 'accept: application/json'
  -H 'Authorization: Bearer {access_token}'

In response, you should get the paging information (total number of users, current page and page size), and a list of users as below:

{
  "total": 150,
  "pageSize": 100,
  "currentPage": 1,
  "users": [
    {
      "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
      "createdAt": "2023-12-22T08:53:39.269539Z",
      "updatedAt": "2023-12-20T10:59:54.516494Z",
      "symphonyUserId": 691867691778058,
      "email": "[email protected]",
      "firstName": "John",
      "lastName": "Smith",
      "displayName": "John Smith",
      "phoneNumber": "+33 1 09 75 83 51",
      "department": "Order Processing",
      "title": "Mr.",
      "location": "Sophia Antipolis"
    },
    ...
  ]
}

Retrieve company users

get

Retrieves users of a given company. Results are paginated by user creation date.

An initial query should be done without specifying any paging query parameters to retrieve the total number of rows.

Page size is configurable, with a maximum size of 100 users.

Authorizations
Path parameters
companyIdstringRequired

Id of the company

Example: e176c55e-6e49-4819-b982-12e0535db5f0
Query parameters
currentPageinteger · int32Optional

Current page

Default: 0Example: 5
pageSizeinteger · int32 · min: 1 · max: 100Optional

Page size

Default: 100Example: 50
Responses
200
OK
application/json
get
GET /api/v2/companies/{companyId}/users HTTP/1.1
Host: community.uat.symphony.com
Authorization: Bearer JWT
Accept: */*
{
  "total": 150,
  "pageSize": 1,
  "currentPage": 10,
  "users": [
    {
      "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
      "createdAt": "2023-12-22T08:53:39.269539Z",
      "updatedAt": "2023-12-20T10:59:54.516494Z",
      "symphonyUserId": 691867691778058,
      "email": "[email protected]",
      "firstName": "John",
      "lastName": "Smith",
      "displayName": "John Smith",
      "phoneNumber": "+33 1 09 75 83 51",
      "department": "Order Processing",
      "title": "Mr.",
      "location": "Sophia Antipolis"
    }
  ]
}

Retrieve user

A Sponsored Access partner can use this endpoint to retrieve the detail of a single user of a company it has sponsored.

As input, the partner must provide:

  • A companyId (as a query parameter of the request): The companyId can be obtained by calling the Retrieve companies API.

  • A userId (as a query parameter of the request): The userId can be obtained by calling the Get company users API.

curl -X 'GET' \
  'https://community.symphony.com/api/v2/companies/e176c55e-6e49-4819-b982-12e0535db5f0/users/5bec2e8b-da45-46c7-9370-5669de1b1a78' \
  -H 'accept: application/json'
  -H 'Authorization: Bearer {access_token}'

In response you should get:

{
  "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
  "createdAt": "2023-12-22T08:53:39.269539Z",
  "updatedAt": "2023-12-20T10:59:54.516494Z",
  "symphonyUserId": 695234946138125,
  "email": "[email protected]",
  "firstName": "John",
  "lastName": "Smith",
  "displayName": "John Smith",
  "active": true,
  "phoneNumber": "+33 1 09 75 83 51",
  "department": "Order Processing",
  "title": "Mr.",
  "location": "Sophia Antipolis",
  "status": 201
}

Retrieve user

get

Retrieves a user of a given company by providing the user id.

Authorizations
Path parameters
companyIdstringRequired

Id of the company

Example: e176c55e-6e49-4819-b982-12e0535db5f0
userIdstringRequired

Id of the user

Example: 5bec2e8b-da45-46c7-9370-5669de1b1a78
Responses
200
OK
application/json
get
GET /api/v2/companies/{companyId}/users/{userId} HTTP/1.1
Host: community.uat.symphony.com
Authorization: Bearer JWT
Accept: */*
{
  "id": "e176c55e-6e49-4819-b982-12e0535db5f0",
  "createdAt": "2023-12-22T08:53:39.269539Z",
  "updatedAt": "2023-12-20T10:59:54.516494Z",
  "symphonyUserId": 695234946138125,
  "email": "[email protected]",
  "firstName": "John",
  "lastName": "Smith",
  "displayName": "John Smith",
  "active": true,
  "phoneNumber": "+33 1 09 75 83 51",
  "department": "Order Processing",
  "title": "Mr.",
  "location": "Sophia Antipolis",
  "status": 201
}

Last updated

Was this helpful?