Download OpenAPI specification:
This application handles dynamic and potentially long-running queries with a robust and scalable infrastructure. The flow includes authentication, queuing, data processing, and asynchronous communication back to the client.
Dev Base Url: wss://ws-dev.iiris.com
Prod Base Url: wss://ws.iiris.com
The authentication mechanism of the Entity Data API utilizes AWS Cognito as the underlying authentication service. AWS Cognito provides a robust and secure user authentication and authorization solution that integrates seamlessly with various applications and platforms. In the context of the Entity Data API, the authentication process involves creating an access token using the Cognito authentication endpoint, client credentials, and scope.
Access Token: An access token is a credential that is used to authenticate and authorize access to protected resources. In the context of the Entity Data API, the access token is generated by AWS Cognito and serves as proof of the user's identity and permissions. It acts as a bearer token, allowing the user to access the Entity Data API's protected resources.
Cognito Auth Endpoint: The Cognito authentication endpoint is the URL provided by AWS Cognito that developers can use to authenticate users and obtain access tokens. This endpoint handles the authentication process, verifies user credentials, and issues access tokens upon successful authentication.
Dev Auth Endpoint: https://idp.dev.iris.informa.com/oauth2/token
Prod Auth Endpoint: https://idp-internal.iris.informa.com/oauth2/token
Client Credentials: The client credentials refer to the unique identifier and secret associated with the client application that is integrating with the Entity Data API. These credentials are typically generated when the client application is registered with AWS Cognito. They serve as the client's authentication credentials when requesting an access token from the Cognito authentication endpoint. These credentials will be shared with partners separately.
The authentication mechanism of the Entity Data API using AWS Cognito follows these steps:
The client application initiates the authentication process by sending a request to the Cognito authentication endpoint, providing the necessary parameters, including the client credentials and desired scope. AWS Cognito verifies the client credentials and scope, ensuring that the client application is authorized to request an access token with the specified permissions. Upon successful verification, AWS Cognito generates an access token, which is returned as a response to the client application. The client application receives the access token and includes it in subsequent requests to the Entity Data API as an authorization header. This access token acts as proof of the client's authentication and authorization, allowing access to the protected resources. The Entity Data API validates the access token by verifying its authenticity, checking its expiration, and ensuring that it has the required permissions to access the requested resources.
The Entity Data route provides a flexible and dynamic interface for retrieving data from various logical tables. This approach allows clients to specify multiple parameters and operators for efficient data retrieval.
Below is a summary of the logical tables and their corresponding physical table names, along with the available operators for filtering:
| Logical Name | Physical Table Name |
|---|---|
| Messages | unified_messages_signal |
View Columns
|
|
| ContentViews | unified_contentview |
View Columns
|
|
| DataPrivacyFlags | unified_data_privacy_flagged |
View Columns
|
|
| Audience | unified_audience |
View Columns
|
|
| BadgeScan | unified_badgescan_signal |
View Columns
|
|
| SearchHistory | unified_searchhistory_signal |
View Columns
|
|
| MeetingInvites | unified_meetinginvites_signal |
View Columns
|
|
| ContentDownload | unified_contentdownload_signal |
View Columns
|
|
| Favourites | unified_favourites_signal |
View Columns
|
|
| ObjectViews | unified_object_views_signal |
View Columns
|
|
| OtherFavourites | unified_other_favourite_signal |
View Columns
|
|
| AccountActivity | unified_audience_account_activity_signal |
View Columns
|
|
| Subscription | unified_subscription_signal |
View Columns
|
|
| Leads | unified_leads_signal |
View Columns
|
|
| Consent | unified_consent_signal |
View Columns
|
|
| Session | unified_session_signal |
View Columns
|
|
| Transaction | unified_transaction_signal |
View Columns
|
|
| Preference | unified_preference_signal |
View Columns
|
|
| ProductPurchase | unified_productpurchase_signal |
View Columns
|
|
| Registration | unified_registration_signal |
View Columns
|
|
| SubscriptionExtension | unified_subscription_extension_signal |
View Columns
|
|
| Extension | unified_audience_extension_signal |
View Columns
|
|
| LastEngagedProduct | unified_last_engaged_signal_product_union |
ViewColumns
|
|
| LastEngaged | unified_last_engaged_signal_union |
ViewColumns
|
|
| Emailactivity | unified_emailactivity_signal |
ViewColumns
|
These operators can be used in the request body for filtering conditions. Each operator allows you to specify the relationship between a field and its value during data retrieval operations. Make sure to choose the appropriate operator that reflects the comparison you want to perform in your query.
WebSocket Endpoint:
dev- wss://ws-dev.iiris.com
prod - wss://ws.iiris.com
Include the authorizationToken as a query parameter for authentication.
Example Connection URL:wss://ws-dev.iiris.com?authorizationToken=Bearer <your_token>
Replace <your_token> with a valid authorization token.
/connectauthorizationToken must be provided as a query parameter.200 OK: Connection successfully established.
401 Unauthorized: Invalid or missing authorizationToken.
authorizationToken is invalid or missing in the query parameters.403 Forbidden: The authorizationToken has expired.
authorizationToken has expired, and the connection cannot be established.500 Internal Server Error: An unexpected error occurred on the server.
/getEntityDataThe Entity Data route provides a flexible and dynamic interface for retrieving data from various logical tables. This approach allows clients to specify multiple parameters and operators for efficient data retrieval.
application/jsonThe request body is a JSON object that must include the following fields:
verbose (optional, default "N"):
Indicates whether detailed information should be included in the response.
"Y": Returns verbose data with detailed fields. (Returns intermediate messages from real-time updates.) "N": Returns basic data with minimal fields. (Returns only streamed response data.)compress (optional, default "N"):
Specifies whether the response should be compressed.
"Y": The response will be compressed to reduce payload size. "N": The response will not be compressed.use_case (required):
A string representing the context or purpose of the request (e.g., "marketing_campaign").
campaign_id (optional):
A string representing the campaign ID (e.g., "ABC123"). If not provided, the field can be null.
filters (required):
An object containing dynamic criteria for filtering the data. The filter object must include:
logic (string): Defines the logic to apply between conditions (e.g., "AND", "OR").conditions (array): An array of filter conditions, where each condition is an object containing:field (string): The field to filter on (e.g., "Audience.domain_type").operator (string): The operator to use for filtering (e.g., "Equals To", "Like").value (string): The value to compare the field against.operation (required):
A string defining the operation type (e.g., "export" or "count").
export is chosen, the response will include detailed data records. count is chosen, the response will return only the total number of records without the data details.Below is an example of a request message sent via WebSocket:
{
"action": "getEntityData",
"queryStringParameters": {
"verbose": "Y",
"compress": "N",
"use_case": "marketing_campaign",
"campaign_id": "ABC123",
"filters": {
"logic": "AND",
"conditions": [
{
"field": "Audience.domain_type",
"operator": "Equals To",
"value": "External"
},
{
"field": "Audience.company_name",
"operator": "Like",
"value": "%A"
}
]
},
"operation": "export"
}
}
500 Internal Server Error will be returned.
{
"Response Chunk 149/149": {
"connectionID": "BjffodzCDoECI2A=",
"requestId":"BjffodzCDoEabcd=",
"data": [
{
"iiris_td_person_id": "23-*****",
"email": "*****@****.ky",
"email_domain": "****.ky",
"domain_type": "External",
"email_hashed": "********",
"first_name": "Gaone",
"local_firstname": "",
"last_name": "Dube",
"local_lastname": "",
"company_name": "CIMA",
"local_companyname": "",
"company_size": "",
"company_type": "",
"industry": "",
"job_level": "",
"job_title": "",
"job_function": "",
"mobile_phone": "",
"other_phone": "",
"country": "United States of America (the)",
"province": "",
"city": "",
"postal_code": ".",
"address": "",
"facebook_id": "",
"instagram_id": "",
"linkedin_id": "",
"twitter_id": "",
"snapchat_id": "",
"entitlement_tag_ids": "*****",
"audience_profile": "Known",
"first_party_tracking_id": "[]",
"third_party_tracking_id": "[]",
"updated_timestamp": 1680193073,
"inserted_timestamp": 1680193073,
"last_engaged_timestamp": 1680193073,
"time": 1701813600
}
}
]
}
}
200 OK: Request successfully initiated.
"Request initiated successfully. You will receive connection ID shortly."500 Internal Server Error: An unexpected error occurred on the server.
"Internal Server Error: Unable to process the request."No Data Found (Final Response, optional based on query result):
"No data found for the given query."The Incremental Pull feature in the EntityData API allows you to fetch only the latest records based on a previously executed query. For example, if you have already streamed records for the past 60 days using the EntityData API, and after 10 days you re-execute the same query with a specific parent_request_id, the API will return only the records for the last 10 days. This helps in efficiently retrieving new or updated data without fetching all the records again.
Below is an example of a request message sent via WebSocket:
{
"action": "getEntityData",
"queryStringParameters": {
"parent_request_id":"HT-6mGAIDoEEkRA=",
"verbose": "Y",
"compress": "N",
"use_case": "marketing_campaign",
"campaign_id": "ABC123",
"filters": {
"logic": "AND",
"conditions": [
{
"field": "Audience.domain_type",
"operator": "Equals To",
"value": "External"
},
{
"field": "Audience.company_name",
"operator": "Like",
"value": "%A"
}
]
},
"operation": "export"
}
}
parent_request_id is provided, the API will return "Parent request ID not found. Please provide a valid request ID.""No new data available for this parent request id: HT-6mGAIDoEEkRA="/disconnectDisconnects the WebSocket connection and closes the active session.
disconnect.200 OK: Disconnect successful.
"Connection closed successfully."500 Internal Server Error: An error occurred while attempting to disconnect.
"Internal Server Error: Unable to close the connection."After streaming the data, all records are stored in the stream_data table for audit purposes. The table includes a column last_updated_date.
Note:-
archive/{parent_request_id}/{date}/result.