Salesforce has introduced a limited version, inaugural release of the new Apex Metadata API for Force.com. This new API is a tool to help developers build self-configuring applications, upgrade scripts, and custom set-up user interfaces. The API is especially useful for independent software vendors (ISVs) as they can use the API to provide admins set up experiences that are unique to the application they are configuring. Previously, application configuration changes had to be done manually in Salesforce setup but now the UI will use Apex for this via the Metadata API.
The debut release of the Apex Metadata API does have some limitations, but developers can still use the API to enable applications to perform a number of functions related to custom setup wizards, self-configuration, and post-install scripts. Examples of capabilities the API allows enabled in applications includes (but not limited to) retrieve metadata synchronously, set up a callback on completion, and access two metadata types (page layouts and custom metadata types).
As mentioned above, the API does have some limitations such as delete not supported (read, create, and update are supported) and there’s no deploy status API yet (there is a callback upon completion of the deploy). The API is also not intended for unit tests as it uses an asynchronous deploy, a capability that is not compatible with Apex synchronous tests.
The Apex Metadata API for Force.com is available in the Salesforce Summer ’17 Release.