[SalesForce] What are the minimum permissions required to update an object record via the Metadata API

I have a set of custom objects in a managed package that I need to be able to update records on via the Metadata API in my customer's orgs (yeah, I know this is not a good way of doing it, but I'm working with a legacy system that I don't have the luxury of re-implementing). According to the Metadata API Developer’s Guide (page 4), the user account that accesses the Metadata API must have "API Enabled" and "Modify All Data" permissions. Are these truly the minimum requirements, or is it possible to use an account with a restricted set of permissions (CRUD on the managed package custom objects only) to push the data?

Best Answer

Yes, these permissions are required. Even if you set up a user with delegated administration, they will not be able to log in and use the API without actually having that permission, even though they can customize those objects through the UI. If you don't have the permission, you'll get the following error:

Error: {http://soap.sforce.com/2006/04/metadata}INSUFFICIENT_ACCESS - INSUFFICIENT_ACCESS: use of the Metadata API requires a user with the ModifyAllData permission