Architectural Overview
Within the Salesforce API Catalog architecture, an API version (CatalogedApiVersion) is backed by one or more concrete specification artifacts—such as an OpenAPI 3.0 JSON/YAML document or a MuleSoft Exchange FAT-RAML archive. The CatalogedApiArtifactVersionInfo metadata type captures the exact artifact version, classifier, and specification payload link for a cataloged API version.
By tracking CatalogedApiArtifactVersionInfo as distinct metadata, Salesforce can detect when an upstream specification artifact in MuleSoft Anypoint Exchange has been patched or re-published, enabling controlled schema updates for downstream External Services, Flow callouts, and Agentforce actions.
Directory Location and File Suffix
In Salesforce DX projects, CatalogedApiArtifactVersionInfo files are stored in the catalogedApiArtifactVersionInfos directory.
| Property | Value |
|---|---|
| Directory Path (SFDX) | force-app/main/default/catalogedApiArtifactVersionInfos/ |
| File Suffix (SFDX) | .catalogedApiArtifactVersionInfo-meta.xml |
| Classic Metadata Suffix | .catalogedApiArtifactVersionInfo |
| Metadata Type Name | CatalogedApiArtifactVersionInfo |
Key Metadata Fields
The following table summarizes the XML fields of CatalogedApiArtifactVersionInfo in API version 68.0 (Winter ’27):
| Field Name | Field Type | Required | Architectural Description |
|---|---|---|---|
masterLabel |
string |
Yes | The human-readable label for the API specification artifact version info record. |
catalogedApiVersion |
string |
Yes | The developer name of the parent CatalogedApiVersion record this artifact belongs to. |
artifactId |
string |
Yes | The identifier of the specification artifact in the external catalog (for example, erp-order-status-oas). |
artifactVersion |
string |
Yes | The exact version string of the specification artifact (for example, 1.2.0). |
classifier |
string |
No | The artifact format classifier, such as oas, oas3, or fat-raml. |
packaging |
string |
No | The archive or file packaging format of the artifact, such as zip, json, or yaml. |
mainFile |
string |
No | The entry-point specification filename inside the artifact package (for example, erp-order-status.yaml). |
Declarative Metadata Example
The following metadata file links an OpenAPI 3.0 specification artifact (1.2.0) to its parent ERP_Order_Status_API_v1 version record.
<?xml version="1.0" encoding="UTF-8"?>
<CatalogedApiArtifactVersionInfo xmlns="http://soap.sforce.com/2006/04/metadata">
<artifactId>erp-order-status-system-api</artifactId>
<artifactVersion>1.2.0</artifactVersion>
<catalogedApiVersion>ERP_Order_Status_API_v1</catalogedApiVersion>
<classifier>oas3</classifier>
<mainFile>erp-order-status-api.yaml</mainFile>
<masterLabel>ERP Order Status OAS 1.2.0</masterLabel>
<packaging>zip</packaging>
</CatalogedApiArtifactVersionInfo>Package Manifest (package.xml)
Always include the parent CatalogedApi and CatalogedApiVersion alongside CatalogedApiArtifactVersionInfo:
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>ERP_Order_Status_API</members>
<name>CatalogedApi</name>
</types>
<types>
<members>ERP_Order_Status_API_v1</members>
<name>CatalogedApiVersion</name>
</types>
<types>
<members>ERP_Order_Status_OAS_1_2_0</members>
<name>CatalogedApiArtifactVersionInfo</name>
</types>
<version>68.0</version>
</Package>Tooling API Queries and SFDX CLI Commands
Retrieve and deploy artifact version metadata using the Salesforce CLI:
# Retrieve all CatalogedApiArtifactVersionInfo metadata
sf project retrieve start --metadata CatalogedApiArtifactVersionInfo
# Deploy the complete API Catalog chain together
sf project deploy start --metadata CatalogedApi,CatalogedApiVersion,CatalogedApiArtifactVersionInfoYou can also query CatalogedApiArtifactVersionInfo via Tooling API (sf data query --use-tooling-api):
SELECT Id, DeveloperName, MasterLabel, ArtifactId, ArtifactVersion, Classifier, MainFile
FROM CatalogedApiArtifactVersionInfo
ORDER BY ArtifactId ASC, ArtifactVersion DESCArchitect Best Practices and Gotchas
Warning
Do not manually edit artifactVersion or mainFile in CatalogedApiArtifactVersionInfo without regenerating the downstream External Service registration if breaking schema changes were introduced in the OpenAPI contract.
- Strict Parent Ordering: In CI/CD deployments,
CatalogedApiArtifactVersionInfohas a hard foreign-key dependency onCatalogedApiVersion. Never deploy artifact version info files in a separate job prior to their parent API version. - Immutable Artifact Versions: Treat each
artifactVersion(1.2.0,1.2.1) as immutable once promoted to production so audit trails clearly reflect which OpenAPI contract version backed a given release.
Frequently asked questions
What is the purpose of CatalogedApiArtifactVersionInfo in Salesforce API Catalog?
It records the specific specification artifact details, such as the OpenAPI YAML or JSON file reference, artifact version, and classification, associated with a parent CatalogedApiVersion.
Can CatalogedApiArtifactVersionInfo be deployed without CatalogedApiVersion?
No, CatalogedApiArtifactVersionInfo depends on its parent CatalogedApiVersion and CatalogedApi records. Deploying it in isolation fails with a missing parent reference error.
Why does Salesforce separate CatalogedApiVersion from CatalogedApiArtifactVersionInfo?
A single API version in an enterprise catalog like MuleSoft Exchange can have multiple associated artifacts, such as an OAS 3.0 specification, RAML fragments, or metadata descriptor files.
How should architects handle CatalogedApiArtifactVersionInfo in Git repositories?
Retrieve and commit CatalogedApiArtifactVersionInfo alongside CatalogedApi and CatalogedApiVersion whenever an API specification is synced or upgraded in the API Catalog.
Comments
Questions, corrections and tips are welcome. Comments are GitHub Discussions, so you sign in with GitHub.