Get Started
To synchronize data between two tools, Unito relies on connectors. Many are already available in our public catalog, but you may also decide to build one to cater to your exact needs.
What is a connector?
A connector is an intermediary between Unito and an external provider. More precisely, it is a translator. It ensures Unito will be able to operate on the provider's data without having to speak its unique language. Connectors translate these requests into something their provider will understand, and then translate that back into a response compliant with the specification.
- Unito sends connectors requests following the specification.
- Connectors translate requests according to their provider's API.
- Connectors forward translated requests to their provider.
- Connectors translate provider's responses following the specification.
- Connectors reply to Unito with the specification-compliant response.
A connector is an HTTP server
Technically speaking, a connector is a simple HTTP server. It exposes a REST API through which transit JSON payloads. A connector can be hosted locally on your machine, on a server of your own, or directly onto Unito cloud infrastructure. The different endpoints needed as well as the shape of the payloads are defined by the API specification.
A connector exposes a graph
Connector's data is exposed as a graph. The API specification defines how to represent that graph through a REST API. A graph contains nodes and edges. Similarly, a connector contains items and relations. Items have relations, which can be crawled as collections, each containing more items.
For example, if you were to develop a connector for Trello,
you'd find workspaces
, projects
, cards
and users
.
These can be represented by the following graph;
There could be multiple ways to represent the same data. Connectors are encouraged to pick the most comprehensive representation, as once items start syncing, it becomes hard to change. Unito relies heavily on your graph to decide how to display the information to their users.
A connector is dynamic by nature
Since connectors can connect with a wide variety of providers, each with their own data structure, Unito doesn't make any assumptions with regards to the data exposed by a connector. Instead, it relies on the flexible structure given by the API specification to dynamically explore the graph. In addition, since two users might not have the same permissions, the structure of the data needs to be as dynamic as the data it represents — each item describes the shape of the relations it links to, and each relation describes the shape of the items it contains.
Items at the core of a connector
All of this is done so that Unito can synchronize items. Each edge of your graph can become the target of a sync request, for which Unito will start crawling its collection in search of items. Unito relies heavily on the path of your items to distinguish one from another — if two items have the same path, they'll be considered one and the same, no matter from which collection they were found.
Once an item start syncing, its path can no longer change. Failing to find an item at its predetermined path would be treated as the same as if it had been deleted.