Inconsistencies in REST APIs / App Platform

This feedback is for the maintainers of the Freshworks REST APIs and App platform,


I’ve been developing apps for our freshsales and freshdesk deployment for 2 years now. I develop a combination of ways:

  • Serverless apps (both crm and freshdesk)
  • Custom [browser] Apps (in crm)
  • Scripts for performing db updates (in python)

I love the fact that I can build these apps. But i find a few issues around inconsistencies that make it easy to introduce errors. Specifically:

  • Variation in field names (e.g. serverless app returns contact.sales_account_ids array in Create/Update contact payload while REST API returns sales_account_id in Get Contact.
  • Variation in custom fields object name - In CRM Get Contact or Get Sales Account API its called ‘custom_field’, but payload of serverless app CRM uses ‘custom_fields’ (Plural). They are the same object in both cases. Also, in Freshdesk its called ‘custom_fields’ in App payload but ‘custom_fields’ in REST API responses.
  • Variation in custom field prefix - In Freshdesk ‘cf_’ is prefixed on changes list in Update contact or company payload for serverless app (e.g. model_changes.cf_region) but in contact or company object of same payload or Create payload the ‘cf_’ is not prefixed (e.g. contact.region). Also in REST API you don’t prefix the property names in request or response.

There are other variations. It makes is very hard to predict what you need to handle in a given API and when using combination of serverless app payload and REST APIs (which is common at least in my use cases where i need to make additional calls to either get or update data in both CRM and Freshdesk), it is really hard to keep things strait.

I imagine at this point the ship is already left the harbor and it would be hard to correct such inconsistencies. The only thing I could imagine would be to build in dual support (possible with a header on API calls (or a new version in path) that indicates use of a new improved standardized API. And of course, it would be a lot of work for app developers to update to the new consistent model but I for one would be happy to update because it would reduce the number of times I am fixing a bug introduced because of the inconstancies. Even on my old apps.