I'm a developer working on an API that tries to be REST-ful, but is limited in terms of CRUD. Many entities expose a GET
endpoint, but because many create and update actions have side-effects, we don't expose a simple CRUD interface and instead expose operations that can be performed. For example, a Member
can be created and updated, but to cancel a Booking
, you can't just update the status of the booking as that may have many side effects; instead you must call a cancel-booking
endpoint.
However, we need to integrate with a Salesforce instance. I'm unfamiliar with Salesforce, but the developers I'm working with are expecting a CRUD interface, and have suggested using an OData adapter as data-source to talk to our API. I've got a few questions though, as this does not fit well with our API:
1) Does Salesforce support OData 'actions'? These seem a perfect fit for operations that have side effects beyond simple create/update
2) Is there an established best practice for integrating SalesForce with external API's that are REST-ful but not CRUD, or where the entities that can be read are not the same as those that can be created or updated