27 May 2021
When building an integrated product, we need to acknowledge that not all integrations are created equal.
For example, your vision is to create an interactive application that allows companies to build and plan org charts. The application needs to visualize data fed from HR systems for employees, managers, teams/departments, job titles, and relevant compensation data. To maximize TAM, you want to make sure you’re able to offer integrations with your customers’ respective HR systems. In theory it all sounds fine and dandy, but in practice you will inevitably encounter a problem: mixed-functionality.
Mixed-functionality means you are completely limited by the functionality of the other application when building integrations. The application you’ve envisioned should display an interactive organization chart with layers of hierarchy, similar to a family tree. That makes user-sense. The problem is, the vast majority of common HR systems do not store team hierarchy. Employees belong to departments, but teams do not have references to parent or children teams. How can we reconcile this?
If a platform doesn’t store team hierarchy such as parent and children, our vision of building a family-tree style org chart faces two choices. We either throw out our initial design completely, or we cut out a significant portion of our market by using less feature-rich platforms to power an HR function. Both aren’t great.
By going back to the drawing board and designing a slightly different experience — such as showing all teams side by side, or approximating based on other information such as manager — you can... but this eventually becomes a game of whack-a-mole where you end up hitting yourself on the head just to cater towards the lowest common denominator. Mixed-functionality looks bleak, unless…
The storied third option: build a UI (user interface) that adapts to the functionality of each given platform to instantly support a wider customer base.
At Merge, we’ve found that more and more platforms are simply opening up. Companies not only allow increased access to their APIs, but also invest heavily in the developer experience. Existing APIs are modernized and support increased functionality. For each integration, we know we have to build our integrations in a way that supports the maximum amount of functionality these APIs support. This means our user interface must be adaptable.
When building an adaptive UI-based application with Merge, it is imperative to take advantage of the Available Actions endpoint. Available via our API and SDKs, this endpoint allows you to ask Merge: “For this given customer’s choice of platform, what functionality am I able to take advantage of?” When you ask Merge for information on a given customer, we respond to you with the following information:
Available operations: This piece of data is the most important when building an adaptive UI. For the provided customer’s integration, we return each supported data model, the supported fetch/create/update/delete operations, the supported fields, and the required fields to create an instance of that model.
Integration data: Includes name, categories, image, square image, and primary color. Using this information, you can display a custom UI that accurately reflects the integration your user has chosen to link.
Passthrough available: This is almost always true, and it defines whether you are able to use the Passthrough endpoint to make custom requests of any kind to the given API. Remember: anything that is possible with native APIs is possible with Merge using Supplemental Data.
Remember our HR-hierarchy problem? Using Merge, your platform simply needs to check if available actions include a supported field for the data you need. It’s that simple.
Keeping up with evolving APIs is not fun. We make sure you don’t have to. Our team constantly monitors platforms for new functionality and adds support where needed. Our Unified API makes it possible to automatically adapt to new functionality as it’s released.
Want to try it yourself? Sign-up for a free demo today.