Java Client Library


Implementation of a Java client library to simplify the implementation of the Symphony REST API through higher level constructs and services.

To create a common Java library that provides the following abstractions and features.

  • SymphonyClient interface that represents a single point of access or session to the Agent API/POD. This interface also provides access to both Symphony client API implementations and feature services the library provides.

  • Authentication helpers to simplify management of tokens and required headers.

  • REST API Client implementation(s) that integrate into library native classes. Provides an abstraction layer as REST API will evolve over time.

  • Feature services: Chat, Presence, Room. These services provide higher level functions that are common in IM communications. E,g, Manage active chat sessions, automatically create chat sessions without initiating, detect presence changes, listeners (callbacks) for events.

  • MessageML parser. DOM parser with some helper methods to convert into text and traverse doc. (JSOUP implementation)

  • Extendable

This contribution is a direct outcome of implementing the Symphony REST API while developing the Help BOT (). It became obvious that the REST API would not have all the features necessary to support a functional implementation where events and session management are critical. At the same time, other developers within my organization were asking for the "Symphony API's", so they could start to develop BOTs. The fear of many developers going through the learning curve and reproduction of these feature level capabilities forced the development of a shared library, which can now be shared with the community.

Most modern unification collaboration networks maintain client SDK's to simplify the implementation of features. Examples are XMPP SMACK and Lync SDK. The hope is we can have a common set of Symphony client interfaces for Java to reduce the overhead and duplication of common requirements. These interfaces can be made agnostic to language implementation over time and a discussion should be conducted to start rationalizing this view.

Owner: Frank Tarsillo
Committers: Amit Joshi (Markit - New), Maurizio Pillitu


  • Complete first pass of basic client implementation

  • Document well defined interfaces and factories for extensions and consistency with other languages.

  • Look to gain support and additional committers from within community.

Current GIT:


Maurizio Pillitu


Frank Tarsillo

Due date