==========
Thrift API
==========

There is already an API for OpenScape Xpert in the form of the :download:`CTI Interface <../../../Documents/OSX_CTI_Interface_Description_V7_Issue1.pdf>`, however it has been deprecated in favour of one based on Thrift for several reasons.

Ease of use
===========

At the base of the Turret API is the :download:`TurretApi.thrift <../../../../Turret/Tip/Api/thrift/TurretApi.thrift>` interface definition file.
This defines what actions are possible for the 3rd party applications in a language agnostic way.
From it the thrift compiler can generate the boilerplate code which handles most of the networking, serialization/deserialization of objects, remote procedure calls. See :ref:`genbindings`

This way the 3rd party can use programming languages without implementing the CTI protocol simply by generating the language specific files from the interface.

Security
========

Thrift also provides the possibility to use SSL for encrypted communication which is important in this day and age. See :ref:`encryption`


Limitations
===========

 * The turret supports only one 3rd party client connection at a given time, but it can notify multiple servers. See :ref:`turretclient`
 * The programming language used with Thrift might have some further limitations. You can refer to the `thrift language and feature matrix. <http://thrift.apache.org/docs/Languages>`_
