Standard services

The following table introduces the standard services of Unica Content Integration. Hence, none of the service names listed herein should be used for any custom service implementation. Content Integration SDK provides standard interfaces and types to implement these standard services. These interfaces and types are discussed in more detail in subsequent sections.

Table 1. Standard services and their description
Standard service name Description
simple-search

Simple search service responds to the content search requests received by Content Integration Framework. This service accepts the search query string along with required result pagination details. Based on the success of search operation, it returns the search result for given search query and according to the required pagination. This is a mandatory service for the plugin.

list-folders This is an optional service. Folder is a general term used to represent a container object used in target system to hierarchically organize the contents. This service is invoked to render the list of folders & sub-folders to facilitate navigation through such hierarchically organized contents.
Note: list-folders and list-contents are correlated services. Implementation for both services must exist for content navigation to function properly.
list-contents This is an optional service. This service is invoked for listing the contents belonging to a particular folder.
Note: list-folders and list-contents are correlated services. Implementation for both services must exist for content navigation to function properly.
get-content-details Implementation of this service is useful for retrieving the details of an individual content. Contents obtained using simple-search & list-contents services are referenced further in other Unica products. Users might want to see the details of already referenced content at later point of time. Therefore, we encourage to implement this service to facilitate users to see the content details on demand.
get-object-schema This is an optional service. Object schema in simple terms refers to the meta information about the properties or attributes present in the given type of object. Implementation of this service is useful for -
  • allowing Centralized Offer Management users to map Offer attributes with content attributes
  • creating Custom Actions in Centralized Offer Management
  • letting Journey users create Entry sources by leveraging attribute mapping between Data Definitions & Content/Object received from respective external system
resource-loader This service is useful when direct download of the content from target system is not feasible. This service is not mandatory and should be implemented only when following challenges are encountered:
  • If no direct web link exists to download the contents

    Contents returned by the simple-search and list-contents services must include an absolute URL to the respective content so that Content Integration client can download it directly over the web. If no such direct web link to the content is present, then it is necessary to implement the resource-loader service by overriding the default implementation provided by Content Integration Framework. For example, if the contents are maintained in a database table, then the simple-search and list-contents services will fetch records from the database. Since the items are loaded from the database, there may not be any URL directly pointing to each record. In such case, the resource-loader service can make use of the content identifier to locate and provide the appropriate data whenever content download is requested. All content download requests will go through the Content Integration Framework, which will delegate the downloading task to the resource-loader service by providing it the content URL and its identifier.

  • If web links to the contents are protected

    Certain systems may not provide anonymous access to the contents despite of the availability of direct web links. In such cases, access is generally provided only after supplying required authentication details. By default, Content Integration Framework registers an out of the box implementation of resource-loader service for each plugin. This default implementation makes use of the real content URL to download the content from remote system by supplying appropriate authentication details subject to the configurations in Unica Platform. (For more information on system onboarding configurations, see Unica Content Integration Administrator's Guide).

    Alternatively, plugins can override the default resource-loader implementation to alter the content downloading behavior (using content URL or content identifier). If the resource-loader service is overridden using RESTful approach, Content Integration Framework will continue to take care of supplying authentication details based on the Platform configuration.

    Note: Content must be made anonymously accessible if it is expected to be seen/accessed by the external audience. In such case, usage of resource-loader service is not encouraged in production systems. Usage of resource-loader service can be turned off any time by setting the Anonymous Content property to Yes in Platform configuration. Likewise, it can be turned on by setting the same property to No.
list-category-folders This is an optional service. Some systems might organize contents/entities into different folders. Likewise, content categories might also be organized in folders. Implementation of this service helps to navigate folders for selecting desired content category. The list-content-categories service mentioned further in this section receives the ID of desired folder to list the categories from.
list-content-categories Content can be logically categorized by its natural classification. For example, Digital content can be categorized into Images, Documents, Multimedia (audios and videos), Archives etc. Similarly, E-commerce products can be categorized into several broad categories, such as Electronics, Healthcare, Books, Furniture etc. Content Integration Framework allows following ways of conveying such content categorization to facilitate searching contents within specific category.
  • supportedContentTypes service parameter

    A standard service level parameter, supportedContentTypes, can be used to statically supply a dictionary of supported content types under simple-search service declaration.

  • getSupportedContentTypes() method in search service implementation

    getSupportedContentTypes() method can be overridden to dynamically generate a map of supported content types, wherein key serves as the category identifier and value serves for the label displayed on the UI. This method is executed during the application startup, hence no remote API call can be made using Content Integration Framework’s capabilities since application might be in partially initialized state when this method is invoked.

  • list-content-categories service

    Optionally, list-content-categories service can be implemented to address the limitation of getSupportedContentTypes() method. It enables remote API calls to be made for fetching the content categories even more dynamically. If implemented, this service overrides the earlier mentioned approaches. Content Integration Framework invokes this service whenever content search popup is rendered.

get-content-category-details This is an optional service. This service helps to retrieve details of a specific content category using its identifier. It is advised to implement this service if list-content-categories is implemented for dynamically fetching categories from remote system or categories are listed using folder hierarchy.

This service need not be implemented if categories are maintained using supportedContentTypes parameter to simple-search service or getSupportedContentTypes() method in simple-search service.

get-cognitive-analysis This is an optional service. If implemented, it is used to fetch cognitive details associated with the given image, subject to the "Preferred cognitive service provider" configuration in Unica Platform.
Object extension service This is an optional service. This standard service does not mandate any standard service name. There can be more than one object extension services. The core purpose of any object extension service is to enhance the capability of any object (such as Offer in Centralized Offer Management) by leveraging the attribute mapping feature. Centralized Offer Management leverages object extension services by means of Custom Actions in Offers.
Note: Object extension and get-object-schema are correlated services. Implementation of get-object-schema service is mandatory for object extension feature to function properly. get-object-schema service is expected to support schema generation for the contents in the context of Content Integration capabilities in Centralized Offer Management. In case of object extension capability, get-object-schema service is additionally expected to support the schema generation for the object returned by the respective object extension service. get-object-schema service accepts the type/category of the object/content to generate the schema for. In case of object extension service, it receives the type in {service-name}.request & {service-name}.response format. For example, if fetch-additional-attributes is the name given to the object extension service, then get-object-schema receives fetch-additional-attributes.request & fetch-additional-attributes.response as the type of object whenever schema for fetch-additional-attribute service’s request & response objects is required.
Object event interpreter service (Webhook)

This is an optional service. Unlike the services listed above, this is in fact an inbound RESTful service. If implemented, it lets the plugin expose webhooks in Content Integration to be able to receive content lifecycle events from the respective content repository. The core responsibility of this service is to help Content Integration Framework interpret the semantics associated with incoming event so that Content Integration Framework can process the event accordingly.

Incoming content events are relayed to Centralized Offer Management for automatically synchronizing Offers using associated content details. It leverages the attribute mapping feature to synchronize Offers automatically.

There is no standard name for this service. Plugin can choose any appropriate name.

Likewise, Unica Journey can also use Webhooks for syndicating Entry Sources.

Object event interpreter service (Kafka listener)

This is an optional service. This service adds listener(s) to the Kafka topic(s) for handling object events coming via Kafka.

There is no standard name for this service. Plugin can choose any appropriate name.

Events received either via Webhook or Kafka are used for automatically synchronizing/update various objects in Unica products, such as Offers in Centralized Offer Management, and user Journeys in Unica Journey. Auto synchronization happens entirely based on the attribute mappings facilitated by get-object-schema service.

Kafka message publisher service

This is an optional service. There is no standard name for this service. Plugin can choose any appropriate name. This service allows plugins to publish messages (JSON and/or Avro) onto Kafka topic(s).

Content Integration Framework does not directly invoke this service. Plugin can treat it as custom service and invoke it wherever required. There are no special semantics associated with any Kafka publisher service. Single Kafka publisher service can publish same message in different supported formats onto different topics. Plugin can have more than one publisher service if different messages need to be sent onto different topics.

Standard collaboration services – Collaboration services facilitate integration with external collaboration systems such as Slack, Microsoft Teams etc. Unica Plan leverages such services to integrate its Message Board with desired collaboration systems. Content Integration Framework provides out of the box integration with Slack. Content Integration Framework allows integrating with any other similar system by means of these service implementations.

collaboration.create-channel This is a mandatory service. It is used for creating a communication channel in respective collaboration system. All subsequent collaborative operations happen using the same channel. For example, addition of members/collaborators to the channel, removal of members from channel, posting messages etc.
collaboration.update-channel This is a mandatory service. It is used for updating details of existing collaboration channel. As of current release, it is used mainly for renaming a channel.
collaboration.get-channel-details This is a mandatory service. It is used for fetching details of already known channel using its unique identifier.
collaboration.add-members-to-channel This is a mandatory service. It is used for adding new members/collaborators to an existing collaboration channel.
collaboration.remove-members-from-channel This is a mandatory service. It is used for removing existing members/collaborators from already created channel.
collaboration.post-message-to-channel This is a mandatory service. It is used for posting a new message to existing collaboration channel.