Metadata API Code Examples
Complete, working code examples for Metadata API patterns. All examples are copy-paste ready and follow Salesforce best practices.
Overview
The Metadata API allows programmatic deployment and retrieval of Salesforce metadata. It’s used for automated deployments, CI/CD pipelines, and bulk metadata operations.
Related Patterns:
Examples
Example 1: Metadata API Deployment
Pattern: Deploy metadata using Metadata API Use Case: Automated metadata deployment Complexity: Advanced
Solution:
/**
* Utility class for Metadata API deployment
*/
public class MetadataApiDeployment {
/**
* Deploy metadata from zip file
* @param zipFile Base64 encoded zip file
* @return AsyncResult with deployment ID
*/
public static MetadataService.AsyncResult deployMetadata(Blob zipFile) {
MetadataService.MetadataPort service = createService();
MetadataService.DeployOptions deployOptions = new MetadataService.DeployOptions();
deployOptions.allowMissingFiles = false;
deployOptions.autoUpdatePackage = false;
deployOptions.checkOnly = false;
deployOptions.ignoreWarnings = false;
deployOptions.performRetrieve = false;
deployOptions.purgeOnDelete = false;
deployOptions.rollbackOnError = true;
deployOptions.runAllTests = false;
deployOptions.singlePackage = true;
MetadataService.AsyncResult result = service.deploy(zipFile, deployOptions);
return result;
}
/**
* Check deployment status
* @param deploymentId Deployment ID
* @return DeployResult with deployment status
*/
public static MetadataService.DeployResult checkDeploymentStatus(String deploymentId) {
MetadataService.MetadataPort service = createService();
MetadataService.DeployResult result = service.checkDeployStatus(deploymentId, false);
return result;
}
private static MetadataService.MetadataPort createService() {
MetadataService.MetadataPort service = new MetadataService.MetadataPort();
service.SessionHeader = new MetadataService.SessionHeader_element();
service.SessionHeader.sessionId = UserInfo.getSessionId();
return service;
}
}
Note: This example uses a MetadataService wrapper class. In practice, you would use the Metadata API WSDL or Salesforce CLI.
Related Patterns
- Deployment Patterns - Complete deployment guide
- Salesforce DX Patterns - SFDX patterns