If you are interested, we are working to solve these shortcomings at nango.dev.
Instead of having a black-box unified API, you can define the schemas/interactions between Nango & external APIs, in code. Which means you can do detailed data validation, specific to your use case, so you get back fully-typed objects. You control the data transformations to match your specific use case (so when APIs have different values for, let's say, "contact status", you define the mapping). You only sync the data you need, not full objects, so it's efficient.
Instead of having a black-box unified API, you can define the schemas/interactions between Nango & external APIs, in code. Which means you can do detailed data validation, specific to your use case, so you get back fully-typed objects. You control the data transformations to match your specific use case (so when APIs have different values for, let's say, "contact status", you define the mapping). You only sync the data you need, not full objects, so it's efficient.
A call to fetch records looks like this:
curl --request GET --url 'https://api.nango.dev/records?model=MODEL-DEFINE-BY-YOU' --header 'Connection-Id: YOUR-CUSTOMER' --header 'Provider-Config-Key: EXTERNAL-API'
Curious to hear what you think!