HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideLegal TermsGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Catalog service XML

Describes how to create the XML file for bulk importing.

The Optimizely Service API supports the bulk import of catalog data into Optimizely Commerce. For the catalog import and export to work, you need to generate an XML file to be used by the bulk import mechanism.

See Catalog service for the methods to use when importing and exporting catalogs.

Catalog XML file and elements

Generate an XML file named catalog.xml and place it at the root of a zip file to be uploaded.

You can generate the XML file by copying a "template" file here:

  • For Commerce Cloud 11 and higher - Catalog.xsd

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    
    	<xs:complexType name="ImportMetaClass">
    		<xs:sequence>
    			<xs:element name="Namespace" type="xs:string" minOccurs="0" />
    			<xs:element name="Name" type="xs:string" minOccurs="0" />
    			<xs:element name="FriendlyName" type="xs:string" minOccurs="0" />
    			<xs:element name="MetaClassType" type="xs:string" minOccurs="0" />
    			<xs:element name="ParentClass" type="xs:string" minOccurs="0" />
    			<xs:element name="TableName" type="xs:string" minOccurs="0" />
    			<xs:element name="Description" type="xs:string" minOccurs="0" />
    			<xs:element name="IsSystem" type="xs:string" minOccurs="0" />
    			<xs:element name="IsAbstract" type="xs:string" minOccurs="0" />
    			<xs:element name="FieldListChangedSqlScript" type="xs:string" minOccurs="0" />
    			<xs:element name="Tag" type="xs:string" minOccurs="0" />
    			<xs:element name="Attributes" type="xs:string" minOccurs="0" />
    		</xs:sequence>
    	</xs:complexType>
    
    
    	<xs:complexType name="ImportMetaField">
    		<xs:sequence>
    			<xs:element name="Namespace" type="xs:string" minOccurs="0" />
    			<xs:element name="Name" type="xs:string" minOccurs="0" />
    			<xs:element name="FriendlyName" type="xs:string" minOccurs="0" />
    			<xs:element name="Description" type="xs:string" minOccurs="0" />
    			<xs:element name="DataType" type="xs:string" minOccurs="0" />
    			<xs:element name="Length" type="xs:string" minOccurs="0" />
    			<xs:element name="AllowNulls" type="xs:string" minOccurs="0" />
    			<xs:element name="SaveHistory" type="xs:string" minOccurs="0" />
    			<xs:element name="AllowSearch" type="xs:string" minOccurs="0" />
    			<xs:element name="MultiLanguageValue" type="xs:string" minOccurs="0" />
    			<xs:element name="IsSystem" type="xs:string" minOccurs="0" />
    			<xs:element name="Tag" type="xs:string" minOccurs="0" />
    			<xs:element name="Type" type="xs:string" minOccurs="0" />
    			<xs:element name="FileData" minOccurs="0" maxOccurs="unbounded">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element name="DiskFileName" type="xs:string" minOccurs="0" />
    						<xs:element name="ContentType" type="xs:string" minOccurs="0" />
    						<xs:element name="Name" type="xs:string" minOccurs="0" />
    						<xs:element name="CreationTime" type="xs:string" minOccurs="0" />
    					</xs:sequence>
    					<xs:attribute name="language" type="xs:string" />
    				</xs:complexType>
    			</xs:element>
    			<xs:element name="Attributes" minOccurs="0">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element name="Attribute" minOccurs="0" maxOccurs="unbounded">
    							<xs:complexType>
    								<xs:sequence>
    									<xs:element name="Key" type="xs:string" minOccurs="0" />
    									<xs:element name="Value" type="xs:string" minOccurs="0" />
    								</xs:sequence>
    							</xs:complexType>
    						</xs:element>
    					</xs:sequence>
    				</xs:complexType>
    			</xs:element>
    			<xs:element name="OwnerMetaClass" nillable="true" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
          <xs:element name="Dictionary" nillable="true" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
    			<xs:element name="Data" minOccurs="0" maxOccurs="unbounded">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
    							<xs:complexType>
    								<xs:attribute name="key" type="xs:string" />
    								<xs:attribute name="value" type="xs:string" />
    							</xs:complexType>
    						</xs:element>
    					</xs:sequence>
    					<xs:attribute name="language" type="xs:string" />
    					<xs:attribute name="value" type="xs:string" />
    				</xs:complexType>
    			</xs:element>
    		</xs:sequence>
    	</xs:complexType>
    
    
    	<xs:complexType name="MetaData">
    		<xs:sequence>
    			<xs:element name="MetaClass" type="ImportMetaClass" minOccurs="0" maxOccurs="unbounded" />
    			<xs:element name="MetaFields" minOccurs="0">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element name="MetaField" type="ImportMetaField" minOccurs="0" maxOccurs="unbounded" />
    					</xs:sequence>
    				</xs:complexType>
    			</xs:element>
    		</xs:sequence>
    	</xs:complexType>
    
    
    	<xs:complexType name="SeoInfo">
    		<xs:sequence>
    			<xs:element name="Seo" minOccurs="0" maxOccurs="unbounded">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element name="LanguageCode" type="xs:string" minOccurs="0" />
    						<xs:element name="Uri" type="xs:string" minOccurs="0" />
    						<xs:element name="Title" type="xs:string" minOccurs="0" />
    						<xs:element name="Description" type="xs:string" minOccurs="0" />
    						<xs:element name="Keywords" type="xs:string" minOccurs="0" />
                <xs:element name="UriSegment" type="xs:string" minOccurs="0" />
    					</xs:sequence>
    				</xs:complexType>
    			</xs:element>
    		</xs:sequence>
    	</xs:complexType>
    
    	<xs:element name="Catalogs">
    		<xs:complexType>
    			<xs:sequence>
    				<xs:element name="MetaDataScheme" minOccurs="0">
    					<xs:complexType>
    						<xs:sequence>
    							<xs:element name="MetaDataPlusBackup" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="MetaClass" type="ImportMetaClass" minOccurs="0" maxOccurs="unbounded" />
    										<xs:element name="MetaField" type="ImportMetaField" minOccurs="0" maxOccurs="unbounded" />
    									</xs:sequence>
    									<xs:attribute name="version" type="xs:string" />
    								</xs:complexType>
    							</xs:element>
    						</xs:sequence>
    					</xs:complexType>
    				</xs:element>
    				<xs:element name="Dictionaries" minOccurs="0">
    					<xs:complexType>
    						<xs:sequence>
    							<xs:element name="Merchants" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Merchant" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Packages" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Package" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    													<xs:element name="Description" type="xs:string" minOccurs="0" />
    													<xs:element name="Width" type="xs:string" minOccurs="0" />
    													<xs:element name="Length" type="xs:string" minOccurs="0" />
    													<xs:element name="Height" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
                  <xs:element name="TaxCategories" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="TaxCategory" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Name" type="xs:string" minOccurs="0" />
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
    							<xs:element name="Warehouses" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Warehouse" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    													<xs:element name="IsActive" type="xs:string" minOccurs="0" />
    													<xs:element name="IsPrimary" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    													<xs:element name="Code" type="xs:string" minOccurs="0" />
                              <xs:element name="IsFulfillmentCenter" type="xs:string" minOccurs="0" />
                              <xs:element name="IsPickupLocation" type="xs:string" minOccurs="0" />
                              <xs:element name="IsDeliveryLocation" type="xs:string" minOccurs="0" />
    													<xs:element name="FirstName" type="xs:string" minOccurs="0" />
    													<xs:element name="LastName" type="xs:string" minOccurs="0" />
    													<xs:element name="Organization" type="xs:string" minOccurs="0" />
    													<xs:element name="Line1" type="xs:string" minOccurs="0" />
    													<xs:element name="Line2" type="xs:string" minOccurs="0" />
    													<xs:element name="City" type="xs:string" minOccurs="0" />
    													<xs:element name="State" type="xs:string" minOccurs="0" />
    													<xs:element name="CountryCode" type="xs:string" minOccurs="0" />
    													<xs:element name="CountryName" type="xs:string" minOccurs="0" />
    													<xs:element name="PostalCode" type="xs:string" minOccurs="0" />
    													<xs:element name="RegionCode" type="xs:string" minOccurs="0" />
    													<xs:element name="RegionName" type="xs:string" minOccurs="0" />
    													<xs:element name="DaytimePhoneNumber" type="xs:string" minOccurs="0" />
    													<xs:element name="EveningPhoneNumber" type="xs:string" minOccurs="0" />
    													<xs:element name="FaxNumber" type="xs:string" minOccurs="0" />
    													<xs:element name="Email" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="AssociationTypes" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="AssociationType" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="TypeId" type="xs:string" minOccurs="0" />
    													<xs:element name="Description" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Markets" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Market" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="MarketId" type="xs:string" minOccurs="0" />
    													<xs:element name="IsEnabled" type="xs:string" minOccurs="0" />
    													<xs:element name="MarketName" type="xs:string" minOccurs="0" />
    													<xs:element name="MarketDescription" type="xs:string" minOccurs="0" />
    													<xs:element name="DefaultLanguage" type="xs:string" minOccurs="0" />
    													<xs:element name="DefaultCurrency" type="xs:string" minOccurs="0" />
    													<xs:element name="Currencies" minOccurs="0" maxOccurs="unbounded">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="Currency" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    													<xs:element name="Languages" minOccurs="0" maxOccurs="unbounded">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="Language" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    													<xs:element name="Countries" minOccurs="0" maxOccurs="unbounded">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="Country" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    						</xs:sequence>
    					</xs:complexType>
    				</xs:element>
    				<xs:element name="Catalog" minOccurs="0" maxOccurs="unbounded">
    					<xs:complexType>
    						<xs:sequence>
    							<xs:element name="Guid" type="xs:string" minOccurs="0" />
    							<xs:element name="Languages" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Language" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="LanguageCode" type="xs:string" minOccurs="0" />
    													<xs:element name="UriSegment" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Nodes" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Node" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    													<xs:element name="StartDate" type="xs:string" minOccurs="0" />
    													<xs:element name="EndDate" type="xs:string" minOccurs="0" />
    													<xs:element name="IsActive" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    													<xs:element name="DisplayTemplate" type="xs:string" minOccurs="0" />
    													<xs:element name="Code" type="xs:string" minOccurs="0" />
                              <xs:element name="Guid" type="xs:string" minOccurs="0" />
                              <xs:element name="MetaData" type="MetaData" minOccurs="0" />
    													<xs:element name="ParentNode" type="xs:string" minOccurs="0" />
    													<xs:element name="SeoInfo" type="SeoInfo" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    									<xs:attribute name="totalCount" type="xs:string" />
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Entries" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Entry" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    													<xs:element name="StartDate" type="xs:string" minOccurs="0" />
    													<xs:element name="EndDate" type="xs:string" minOccurs="0" />
    													<xs:element name="IsActive" type="xs:string" minOccurs="0" />
    													<xs:element name="DisplayTemplate" type="xs:string" minOccurs="0" />
    													<xs:element name="Code" type="xs:string" minOccurs="0" />
    													<xs:element name="EntryType" type="xs:string" minOccurs="0" />
                              <xs:element name="Guid" type="xs:string" minOccurs="0" />
    													<xs:element name="MetaData" type="MetaData" minOccurs="0" />
    													<xs:element name="VariationInfo" minOccurs="0">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="Variation" minOccurs="0">
    																	<xs:complexType>
    																		<xs:sequence>
                                          <xs:element name="ListPrice" type="xs:string" minOccurs="0" />
    																			<xs:element name="MaxQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="MinQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="MerchantName" type="xs:string" minOccurs="0" />
    																			<xs:element name="PackageName" type="xs:string" minOccurs="0" />
    																			<xs:element name="TaxCategoryName" type="xs:string" minOccurs="0" />
    																			<xs:element name="TrackInventory" type="xs:string" minOccurs="0" />
    																			<xs:element name="Weight" type="xs:string" minOccurs="0" />
                                          <xs:element name="Length" type="xs:string" minOccurs="0" />
                                          <xs:element name="Height" type="xs:string" minOccurs="0" />
                                          <xs:element name="Width" type="xs:string" minOccurs="0" />
    																		</xs:sequence>
    																	</xs:complexType>
    																</xs:element>
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    													<xs:element name="WarehouseInventories" minOccurs="0">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="WarehouseInventory" minOccurs="0" maxOccurs="unbounded">
    																	<xs:complexType>
    																		<xs:sequence>
    																			<xs:element name="WarehouseCode" type="xs:string" minOccurs="0" />
    																			<xs:element name="AllowBackorder" type="xs:string" minOccurs="0" />
    																			<xs:element name="AllowPreorder" type="xs:string" minOccurs="0" />
    																			<xs:element name="BackorderAvailabilityDate" type="xs:string" minOccurs="0" />
    																			<xs:element name="BackorderQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="InStockQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="InventoryStatus" type="xs:string" minOccurs="0" />
    																			<xs:element name="PreorderAvailabilityDate" type="xs:string" minOccurs="0" />
    																			<xs:element name="PreorderQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="ReorderMinQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="ReservedQuantity" type="xs:string" minOccurs="0" />
    																		</xs:sequence>
    																</xs:complexType>
    																</xs:element>
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    													<xs:element name="Prices" minOccurs="0">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="Price" minOccurs="0" maxOccurs="unbounded">
    																	<xs:complexType>
    																		<xs:sequence>
    																			<xs:element name="MarketId" type="xs:string" minOccurs="0" />
    																			<xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
    																			<xs:element name="PriceTypeId" type="xs:string" minOccurs="0" />
    																			<xs:element name="PriceCode" type="xs:string" minOccurs="0" />
    																			<xs:element name="ValidFrom" type="xs:string" minOccurs="0" />
    																			<xs:element name="ValidUntil" type="xs:string" minOccurs="0" />
    																			<xs:element name="MinQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="UnitPrice" type="xs:string" minOccurs="0" />
    																		</xs:sequence>
    																	</xs:complexType>
    																</xs:element>
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    													<xs:element name="SeoInfo" type="SeoInfo" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    									<xs:attribute name="totalCount" type="xs:string" />
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Relations" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="NodeEntryRelation" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="EntryCode" type="xs:string" minOccurs="0" />
    													<xs:element name="NodeCode" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    													<xs:element name="IsPrimary" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    										<xs:element name="EntryRelation" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="ParentEntryCode" type="xs:string" minOccurs="0" />
    													<xs:element name="ChildEntryCode" type="xs:string" minOccurs="0" />
    													<xs:element name="RelationType" type="xs:string" minOccurs="0" />
    													<xs:element name="Quantity" type="xs:string" minOccurs="0" />
    													<xs:element name="GroupName" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    										<xs:element name="NodeRelation" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="ChildNodeCode" type="xs:string" minOccurs="0" />
    													<xs:element name="ParentNodeCode" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Associations" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="CatalogAssociation" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    													<xs:element name="Description" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    													<xs:element name="EntryCode" type="xs:string" minOccurs="0" />
    													<xs:element name="Association" minOccurs="0" maxOccurs="unbounded">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="EntryCode" type="xs:string" minOccurs="0" />
    																<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    																<xs:element name="Type" type="xs:string" minOccurs="0" />
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
                  <xs:element name="CatalogItemAssetCollection" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="CatalogItemAssets" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="CatalogItemAsset" minOccurs="0" maxOccurs="unbounded">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="CatalogItemType" type="xs:string" minOccurs="0" />
                                      <xs:element name="CatalogItemCode" type="xs:string" minOccurs="0" />
                                      <xs:element name="AssetPath" type="xs:string" minOccurs="0" />
                                      <xs:element name="AssetName" type="xs:string" minOccurs="0" />
                                      <xs:element name="AssetType" type="xs:string" minOccurs="0" />
                                      <xs:element name="MimeType" type="xs:string" minOccurs="0" />
                                      <xs:element name="GroupName" type="xs:string" minOccurs="0" />
                                      <xs:element name="SortOrder" type="xs:integer" minOccurs="0" />
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="TotalCount" type="xs:integer" minOccurs="0" />
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
    						</xs:sequence>
    						<xs:attribute name="name" type="xs:string" />
    						<xs:attribute name="lastmodified" type="xs:string" />
    						<xs:attribute name="startDate" type="xs:string" />
    						<xs:attribute name="endDate" type="xs:string" />
    						<xs:attribute name="defaultCurrency" type="xs:string" />
    						<xs:attribute name="weightBase" type="xs:string" />
    						<xs:attribute name="lengthBase" type="xs:string" />
    						<xs:attribute name="defaultLanguage" type="xs:string" />
    						<xs:attribute name="sortOrder" type="xs:string" />
    						<xs:attribute name="isActive" type="xs:string" />
    					</xs:complexType>
    				</xs:element>
    			</xs:sequence>
    			<xs:attribute name="Version" type="xs:string" />
    		</xs:complexType>
    	</xs:element>
    </xs:schema>
    
  • For Commerce 10 and lower - Catalog.xsd

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    
    	<xs:complexType name="ImportMetaClass">
    		<xs:sequence>
    			<xs:element name="Namespace" type="xs:string" minOccurs="0" />
    			<xs:element name="Name" type="xs:string" minOccurs="0" />
    			<xs:element name="FriendlyName" type="xs:string" minOccurs="0" />
    			<xs:element name="MetaClassType" type="xs:string" minOccurs="0" />
    			<xs:element name="ParentClass" type="xs:string" minOccurs="0" />
    			<xs:element name="TableName" type="xs:string" minOccurs="0" />
    			<xs:element name="Description" type="xs:string" minOccurs="0" />
    			<xs:element name="IsSystem" type="xs:string" minOccurs="0" />
    			<xs:element name="IsAbstract" type="xs:string" minOccurs="0" />
    			<xs:element name="FieldListChangedSqlScript" type="xs:string" minOccurs="0" />
    			<xs:element name="Tag" type="xs:string" minOccurs="0" />
    			<xs:element name="Attributes" type="xs:string" minOccurs="0" />
    		</xs:sequence>
    	</xs:complexType>
    
    
    	<xs:complexType name="ImportMetaField">
    		<xs:sequence>
    			<xs:element name="Namespace" type="xs:string" minOccurs="0" />
    			<xs:element name="Name" type="xs:string" minOccurs="0" />
    			<xs:element name="FriendlyName" type="xs:string" minOccurs="0" />
    			<xs:element name="Description" type="xs:string" minOccurs="0" />
    			<xs:element name="DataType" type="xs:string" minOccurs="0" />
    			<xs:element name="Length" type="xs:string" minOccurs="0" />
    			<xs:element name="AllowNulls" type="xs:string" minOccurs="0" />
    			<xs:element name="SaveHistory" type="xs:string" minOccurs="0" />
    			<xs:element name="AllowSearch" type="xs:string" minOccurs="0" />
    			<xs:element name="MultiLanguageValue" type="xs:string" minOccurs="0" />
    			<xs:element name="IsSystem" type="xs:string" minOccurs="0" />
    			<xs:element name="Tag" type="xs:string" minOccurs="0" />
    			<xs:element name="Type" type="xs:string" minOccurs="0" />
    			<xs:element name="FileData" minOccurs="0" maxOccurs="unbounded">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element name="DiskFileName" type="xs:string" minOccurs="0" />
    						<xs:element name="ContentType" type="xs:string" minOccurs="0" />
    						<xs:element name="Name" type="xs:string" minOccurs="0" />
    						<xs:element name="CreationTime" type="xs:string" minOccurs="0" />
    					</xs:sequence>
    					<xs:attribute name="language" type="xs:string" />
    				</xs:complexType>
    			</xs:element>
    			<xs:element name="Attributes" minOccurs="0">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element name="Attribute" minOccurs="0" maxOccurs="unbounded">
    							<xs:complexType>
    								<xs:sequence>
    									<xs:element name="Key" type="xs:string" minOccurs="0" />
    									<xs:element name="Value" type="xs:string" minOccurs="0" />
    								</xs:sequence>
    							</xs:complexType>
    						</xs:element>
    					</xs:sequence>
    				</xs:complexType>
    			</xs:element>
    			<xs:element name="OwnerMetaClass" nillable="true" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
          <xs:element name="Dictionary" nillable="true" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
    			<xs:element name="Data" minOccurs="0" maxOccurs="unbounded">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
    							<xs:complexType>
    								<xs:attribute name="key" type="xs:string" />
    								<xs:attribute name="value" type="xs:string" />
    							</xs:complexType>
    						</xs:element>
    					</xs:sequence>
    					<xs:attribute name="language" type="xs:string" />
    					<xs:attribute name="value" type="xs:string" />
    				</xs:complexType>
    			</xs:element>
    		</xs:sequence>
    	</xs:complexType>
    
    
    	<xs:complexType name="MetaData">
    		<xs:sequence>
    			<xs:element name="MetaClass" type="ImportMetaClass" minOccurs="0" maxOccurs="unbounded" />
    			<xs:element name="MetaFields" minOccurs="0">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element name="MetaField" type="ImportMetaField" minOccurs="0" maxOccurs="unbounded" />
    					</xs:sequence>
    				</xs:complexType>
    			</xs:element>
    		</xs:sequence>
    	</xs:complexType>
    
    
    	<xs:complexType name="SeoInfo">
    		<xs:sequence>
    			<xs:element name="Seo" minOccurs="0" maxOccurs="unbounded">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element name="LanguageCode" type="xs:string" minOccurs="0" />
    						<xs:element name="Uri" type="xs:string" minOccurs="0" />
    						<xs:element name="Title" type="xs:string" minOccurs="0" />
    						<xs:element name="Description" type="xs:string" minOccurs="0" />
    						<xs:element name="Keywords" type="xs:string" minOccurs="0" />
                <xs:element name="UriSegment" type="xs:string" minOccurs="0" />
    					</xs:sequence>
    				</xs:complexType>
    			</xs:element>
    		</xs:sequence>
    	</xs:complexType>
    
    	<xs:element name="Catalogs">
    		<xs:complexType>
    			<xs:sequence>
    				<xs:element name="MetaDataScheme" minOccurs="0">
    					<xs:complexType>
    						<xs:sequence>
    							<xs:element name="MetaDataPlusBackup" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="MetaClass" type="ImportMetaClass" minOccurs="0" maxOccurs="unbounded" />
    										<xs:element name="MetaField" type="ImportMetaField" minOccurs="0" maxOccurs="unbounded" />
    									</xs:sequence>
    									<xs:attribute name="version" type="xs:string" />
    								</xs:complexType>
    							</xs:element>
    						</xs:sequence>
    					</xs:complexType>
    				</xs:element>
    				<xs:element name="Dictionaries" minOccurs="0">
    					<xs:complexType>
    						<xs:sequence>
    							<xs:element name="Merchants" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Merchant" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Packages" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Package" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    													<xs:element name="Description" type="xs:string" minOccurs="0" />
    													<xs:element name="Width" type="xs:string" minOccurs="0" />
    													<xs:element name="Length" type="xs:string" minOccurs="0" />
    													<xs:element name="Height" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
                  <xs:element name="TaxCategories" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="TaxCategory" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Name" type="xs:string" minOccurs="0" />
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
    							<xs:element name="Warehouses" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Warehouse" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    													<xs:element name="IsActive" type="xs:string" minOccurs="0" />
    													<xs:element name="IsPrimary" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    													<xs:element name="Code" type="xs:string" minOccurs="0" />
                              <xs:element name="IsFulfillmentCenter" type="xs:string" minOccurs="0" />
                              <xs:element name="IsPickupLocation" type="xs:string" minOccurs="0" />
                              <xs:element name="IsDeliveryLocation" type="xs:string" minOccurs="0" />
    													<xs:element name="FirstName" type="xs:string" minOccurs="0" />
    													<xs:element name="LastName" type="xs:string" minOccurs="0" />
    													<xs:element name="Organization" type="xs:string" minOccurs="0" />
    													<xs:element name="Line1" type="xs:string" minOccurs="0" />
    													<xs:element name="Line2" type="xs:string" minOccurs="0" />
    													<xs:element name="City" type="xs:string" minOccurs="0" />
    													<xs:element name="State" type="xs:string" minOccurs="0" />
    													<xs:element name="CountryCode" type="xs:string" minOccurs="0" />
    													<xs:element name="CountryName" type="xs:string" minOccurs="0" />
    													<xs:element name="PostalCode" type="xs:string" minOccurs="0" />
    													<xs:element name="RegionCode" type="xs:string" minOccurs="0" />
    													<xs:element name="RegionName" type="xs:string" minOccurs="0" />
    													<xs:element name="DaytimePhoneNumber" type="xs:string" minOccurs="0" />
    													<xs:element name="EveningPhoneNumber" type="xs:string" minOccurs="0" />
    													<xs:element name="FaxNumber" type="xs:string" minOccurs="0" />
    													<xs:element name="Email" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="AssociationTypes" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="AssociationType" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="TypeId" type="xs:string" minOccurs="0" />
    													<xs:element name="Description" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Markets" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Market" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="MarketId" type="xs:string" minOccurs="0" />
    													<xs:element name="IsEnabled" type="xs:string" minOccurs="0" />
    													<xs:element name="MarketName" type="xs:string" minOccurs="0" />
    													<xs:element name="MarketDescription" type="xs:string" minOccurs="0" />
    													<xs:element name="DefaultLanguage" type="xs:string" minOccurs="0" />
    													<xs:element name="DefaultCurrency" type="xs:string" minOccurs="0" />
    													<xs:element name="Currencies" minOccurs="0" maxOccurs="unbounded">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="Currency" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    													<xs:element name="Languages" minOccurs="0" maxOccurs="unbounded">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="Language" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    													<xs:element name="Countries" minOccurs="0" maxOccurs="unbounded">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="Country" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    						</xs:sequence>
    					</xs:complexType>
    				</xs:element>
    				<xs:element name="Catalog" minOccurs="0" maxOccurs="unbounded">
    					<xs:complexType>
    						<xs:sequence>
    							<xs:element name="Guid" type="xs:string" minOccurs="0" />
    							<xs:element name="Languages" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Language" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="LanguageCode" type="xs:string" minOccurs="0" />
    													<xs:element name="UriSegment" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Nodes" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Node" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    													<xs:element name="StartDate" type="xs:string" minOccurs="0" />
    													<xs:element name="EndDate" type="xs:string" minOccurs="0" />
    													<xs:element name="IsActive" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    													<xs:element name="DisplayTemplate" type="xs:string" minOccurs="0" />
    													<xs:element name="Code" type="xs:string" minOccurs="0" />
                              <xs:element name="Guid" type="xs:string" minOccurs="0" />
                              <xs:element name="MetaData" type="MetaData" minOccurs="0" />
    													<xs:element name="ParentNode" type="xs:string" minOccurs="0" />
    													<xs:element name="SeoInfo" type="SeoInfo" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    									<xs:attribute name="totalCount" type="xs:string" />
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Entries" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="Entry" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    													<xs:element name="StartDate" type="xs:string" minOccurs="0" />
    													<xs:element name="EndDate" type="xs:string" minOccurs="0" />
    													<xs:element name="IsActive" type="xs:string" minOccurs="0" />
    													<xs:element name="DisplayTemplate" type="xs:string" minOccurs="0" />
    													<xs:element name="Code" type="xs:string" minOccurs="0" />
    													<xs:element name="EntryType" type="xs:string" minOccurs="0" />
                              <xs:element name="Guid" type="xs:string" minOccurs="0" />
    													<xs:element name="MetaData" type="MetaData" minOccurs="0" />
    													<xs:element name="VariationInfo" minOccurs="0">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="Variation" minOccurs="0">
    																	<xs:complexType>
    																		<xs:sequence>
                                          <xs:element name="ListPrice" type="xs:string" minOccurs="0" />
    																			<xs:element name="MaxQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="MinQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="MerchantName" type="xs:string" minOccurs="0" />
    																			<xs:element name="PackageName" type="xs:string" minOccurs="0" />
    																			<xs:element name="TaxCategoryName" type="xs:string" minOccurs="0" />
    																			<xs:element name="TrackInventory" type="xs:string" minOccurs="0" />
    																			<xs:element name="Weight" type="xs:string" minOccurs="0" />
                                          <xs:element name="Length" type="xs:string" minOccurs="0" />
                                          <xs:element name="Height" type="xs:string" minOccurs="0" />
                                          <xs:element name="Width" type="xs:string" minOccurs="0" />
    																		</xs:sequence>
    																	</xs:complexType>
    																</xs:element>
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    													<xs:element name="WarehouseInventories" minOccurs="0">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="WarehouseInventory" minOccurs="0" maxOccurs="unbounded">
    																	<xs:complexType>
    																		<xs:sequence>
    																			<xs:element name="WarehouseCode" type="xs:string" minOccurs="0" />
    																			<xs:element name="AllowBackorder" type="xs:string" minOccurs="0" />
    																			<xs:element name="AllowPreorder" type="xs:string" minOccurs="0" />
    																			<xs:element name="BackorderAvailabilityDate" type="xs:string" minOccurs="0" />
    																			<xs:element name="BackorderQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="InStockQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="InventoryStatus" type="xs:string" minOccurs="0" />
    																			<xs:element name="PreorderAvailabilityDate" type="xs:string" minOccurs="0" />
    																			<xs:element name="PreorderQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="ReorderMinQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="ReservedQuantity" type="xs:string" minOccurs="0" />
    																		</xs:sequence>
    																</xs:complexType>
    																</xs:element>
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    													<xs:element name="Prices" minOccurs="0">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="Price" minOccurs="0" maxOccurs="unbounded">
    																	<xs:complexType>
    																		<xs:sequence>
    																			<xs:element name="MarketId" type="xs:string" minOccurs="0" />
    																			<xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
    																			<xs:element name="PriceTypeId" type="xs:string" minOccurs="0" />
    																			<xs:element name="PriceCode" type="xs:string" minOccurs="0" />
    																			<xs:element name="ValidFrom" type="xs:string" minOccurs="0" />
    																			<xs:element name="ValidUntil" type="xs:string" minOccurs="0" />
    																			<xs:element name="MinQuantity" type="xs:string" minOccurs="0" />
    																			<xs:element name="UnitPrice" type="xs:string" minOccurs="0" />
    																		</xs:sequence>
    																	</xs:complexType>
    																</xs:element>
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    													<xs:element name="SeoInfo" type="SeoInfo" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    									<xs:attribute name="totalCount" type="xs:string" />
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Relations" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="NodeEntryRelation" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="EntryCode" type="xs:string" minOccurs="0" />
    													<xs:element name="NodeCode" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    										<xs:element name="EntryRelation" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="ParentEntryCode" type="xs:string" minOccurs="0" />
    													<xs:element name="ChildEntryCode" type="xs:string" minOccurs="0" />
    													<xs:element name="RelationType" type="xs:string" minOccurs="0" />
    													<xs:element name="Quantity" type="xs:string" minOccurs="0" />
    													<xs:element name="GroupName" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    										<xs:element name="NodeRelation" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="ChildNodeCode" type="xs:string" minOccurs="0" />
    													<xs:element name="ParentNodeCode" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
    							<xs:element name="Associations" minOccurs="0">
    								<xs:complexType>
    									<xs:sequence>
    										<xs:element name="CatalogAssociation" minOccurs="0" maxOccurs="unbounded">
    											<xs:complexType>
    												<xs:sequence>
    													<xs:element name="Name" type="xs:string" minOccurs="0" />
    													<xs:element name="Description" type="xs:string" minOccurs="0" />
    													<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    													<xs:element name="EntryCode" type="xs:string" minOccurs="0" />
    													<xs:element name="Association" minOccurs="0" maxOccurs="unbounded">
    														<xs:complexType>
    															<xs:sequence>
    																<xs:element name="EntryCode" type="xs:string" minOccurs="0" />
    																<xs:element name="SortOrder" type="xs:string" minOccurs="0" />
    																<xs:element name="Type" type="xs:string" minOccurs="0" />
    															</xs:sequence>
    														</xs:complexType>
    													</xs:element>
    												</xs:sequence>
    											</xs:complexType>
    										</xs:element>
    									</xs:sequence>
    								</xs:complexType>
    							</xs:element>
                  <xs:element name="CatalogItemAssetCollection" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="CatalogItemAssets" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="CatalogItemAsset" minOccurs="0" maxOccurs="unbounded">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="CatalogItemType" type="xs:string" minOccurs="0" />
                                      <xs:element name="CatalogItemCode" type="xs:string" minOccurs="0" />
                                      <xs:element name="AssetPath" type="xs:string" minOccurs="0" />
                                      <xs:element name="AssetName" type="xs:string" minOccurs="0" />
                                      <xs:element name="AssetType" type="xs:string" minOccurs="0" />
                                      <xs:element name="MimeType" type="xs:string" minOccurs="0" />
                                      <xs:element name="GroupName" type="xs:string" minOccurs="0" />
                                      <xs:element name="SortOrder" type="xs:integer" minOccurs="0" />
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="TotalCount" type="xs:integer" minOccurs="0" />
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
    						</xs:sequence>
    						<xs:attribute name="name" type="xs:string" />
    						<xs:attribute name="lastmodified" type="xs:string" />
    						<xs:attribute name="startDate" type="xs:string" />
    						<xs:attribute name="endDate" type="xs:string" />
    						<xs:attribute name="defaultCurrency" type="xs:string" />
    						<xs:attribute name="weightBase" type="xs:string" />
    						<xs:attribute name="lengthBase" type="xs:string" />
    						<xs:attribute name="defaultLanguage" type="xs:string" />
    						<xs:attribute name="sortOrder" type="xs:string" />
    						<xs:attribute name="isActive" type="xs:string" />
    					</xs:complexType>
    				</xs:element>
    			</xs:sequence>
    			<xs:attribute name="Version" type="xs:string" />
    		</xs:complexType>
    	</xs:element>
    </xs:schema>
    

Catalog file

The catalog XML file starts with an XML tag followed by the Catalogs element, which holds the key elements, as shown in the following example.

<?xml version="1.0" encoding="utf-8" ?>
<Catalogs Version="1.0">
</Catalogs>

MetaDataScheme element

The MetaDataScheme element lets you add and update meta-classes and meta-fields, as shown in the following example.

<Catalogs Version="1.0">
  <MetaDataScheme>  
    <MetaDataPlusBackup version="1.0">
      <MetaClass>
        .......
      </MetaClass>
      <MetaField>
        .......
      </MetaField>
    </MetaDataPlusBackup>  
  </MetaDataScheme>
  ........ 
</Catalogs>

The following example describes the two child element types, MetaClass and MetaField.

MetaClass

<MetaClass>
  <Namespace></Namespace>
  <Name></Name>
  <FriendlyName></FriendlyName>
  <MetaClassType></MetaClassType>
  <ParentClass></ParentClass>
  <TableName></TableName>
  <Description/>
  <IsSystem></IsSystem>
  <IsAbstract></IsAbstract>
  <FieldListChangedSqlScript/>
  <Tag/>
  <Attributes/>
</MetaClass>
  • Namespace – Required. Should always be Mediachase.Commerce.Catalog. Use if you want to be able to delete from the user interface.
  • Name – Required. Name of metaclass should only contain letters, numbers, and underscore ( _ ). No spaces or special characters are allowed.
  • FriendlyName – Required. Describes the class shown in the user interface.
  • MetaClassType – Required. Should always be User.
  • ParentClass – Required. Either CatalogNode or CatalogEntry based on the type of MetaClass.
  • TableName – Required. ParentClass + Ex_ + MetaClassName (for example, CatalogEntryEx_import_product).
  • Description – Description of what the class is used for.
  • IsSystem – Required. Should always be false.
  • IsAbstract – Required. Should always be false.
  • FieldListChangedSqlScript – Should always be empty.
  • Tag – Should always be empty.
  • Attributes – Should always be empty.

MetaField

<MetaField>
  <Namespace></Namespace>
  <Name></Name>
  <FriendlyName></FriendlyName>
  <Description/>
  <DataType></DataType>
  <Length></Length>
  <AllowNulls></AllowNulls>
  <SaveHistory></SaveHistory>
  <AllowSearch></AllowSearch>
  <MultiLanguageValue></MultiLanguageValue>
  <IsSystem></IsSystem>
  <Tag/>
  <Attributes>
    <Attribute>
      <Key></Key>
      <Value></Value>
    </Attribute>
    <Attribute>
      <Key></Key>
      <Value></Value>
    </Attribute>
  </Attributes>
  <OwnerMetaClass></OwnerMetaClass>
  <OwnerMetaClass>t</OwnerMetaClass>
</MetaField>
  • Namespace – Required. Should always be Mediachase.Commerce.Catalog if you want to be able to delete from the user interface.
  • Name – Required. Name of meta-class should only contain letters, numbers, and underscore ( _ ). No spaces or special characters are allowed.
  • FriendlyName – Required. Describes the class that is shown in the user interface.
  • Description – Description of what the field is used for.
  • DataType(required)
    • Boolean
    • Date
    • DateTime
    • Decimal
    • DictionaryMultiValue
    • DictionarySingleValue
    • Email
    • File
    • Float
    • LongHtmlString
    • ImageFile
    • Integer
    • LongString
    • Money
    • ShortString
    • StringDictionary
    • URL

📘

Note

File and ImageFile are stored in the database.

  • Length (required)
    • Boolean. 1.
    • Date. 8.
    • DateTime. 8.
    • Decimal. 17.
    • DictionaryMultiValue. 4.
    • DictionarySingleValue. 4.
    • Email. 256.
    • File. 4.
    • Float. 8.
    • LongHtmlString. 16.
    • ImageFile. 4.
    • Integer. 4.
    • LongString. 16.
    • Money. 8.
    • ShortString. 512.
    • StringDictionary. 4.
    • URL. 512.
  • AllowNulls – Required. True or False. This property cannot be changed after that fact, so be sure to choose properly.
  • SaveHistory – Legacy and not used.
  • AllowSearch – Required. True or False, based on if you want the field to be searchable in configured search index.
  • MultiLanguageValue – Required. True or False, based on if you want the field to be culture-specific.
  • IsSystem – Required. Should always be false.
  • Tag – Should always be empty.
  • Attributes – A collection of Attribute elements with key and values. Valid Attributes keys are:
    • useincomparing – True or False based on if you want the field to be used in comparisons.
    • Only use the attributes when AllowSearch property of metafield is set to true:
      • indexfield – tokenized based on if you want the field to be tokenized. The attribute should be removed if you no longer want it tokenized.
      • indexsortable – True or False based on if you want the field to be able to sorted upon in search index.
      • indexstored – True or False based on if you want the field to be stored in the index.
      • includeindefaultsearch – True or False based on if you want the field to be used in default search.
    • Only use the attributes when DataType property of meta-field is set to ImageFile:
      • autoresize – True or False based on if you want the image to be auto resized.
      • imageheight – Number of pixels for height when resizing image.
      • imagewidth – Number of pixels for width when resizing image.
      • stretchimage – True or False based on if you want the image to stretch if the resize is bigger than the image itself.
      • stretchthumbnail – True or False based on if you want the thumbnail image to stretch if the thumbnail resize is bigger than the image itself.
      • thumbnailheight – Number of pixels for height when resizing thumbnail image.
      • thumbnailwidth – Number of pixels for width when resizing thumbnail image.
  • OwnerMetaClass – Which meta-classes this field belongs to. The linkage is done on MetaClass Name.

Example

The following example shows the MetaDataScheme with three classes and every type of MetaField.

<Catalogs Version="1.0">
  <MetaDataScheme>  
    <MetaDataPlusBackup version="1.0">
      <MetaClass>
        <Namespace>Mediachase.Commerce.Catalog.User</Namespace>
        <Name>import_node</Name>
        <FriendlyName>import_node</FriendlyName>
        <MetaClassType>User</MetaClassType>
        <ParentClass>CatalogNode</ParentClass>
        <TableName>CatalogNodeEx_import_node</TableName>
        <Description/>
        <IsSystem>False</IsSystem>
        <IsAbstract>False</IsAbstract>
        <FieldListChangedSqlScript/>
        <Tag/>
        <Attributes/>
      </MetaClass>
      <MetaClass>
        <Namespace>Mediachase.Commerce.Catalog.User</Namespace>
        <Name>import_node</Name>
        <FriendlyName>import_product</FriendlyName>
        <MetaClassType>User</MetaClassType>
        <ParentClass>CatalogEntry</ParentClass>
        <TableName>CatalogEntryEx_import_product</TableName>
        <Description/>
        <IsSystem>False</IsSystem>
        <IsAbstract>False</IsAbstract>
        <FieldListChangedSqlScript/>
        <Tag/>
        <Attributes/>
      </MetaClass>
      <MetaClass>
        <Namespace>Mediachase.Commerce.Catalog.User</Namespace>
        <Name>import_sku</Name>
        <FriendlyName>import_sku</FriendlyName>
        <MetaClassType>User</MetaClassType>
        <ParentClass>CatalogEntry</ParentClass>
        <TableName>CatalogEntryEx_import_sku</TableName>
        <Description/>
        <IsSystem>False</IsSystem>
        <IsAbstract>False</IsAbstract>
        <FieldListChangedSqlScript/>
        <Tag/>
        <Attributes/>
      </MetaClass>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_boolean</Name>
        <FriendlyName>import_boolean</FriendlyName>
        <Description/>
        <DataType>Boolean</DataType>
        <Length>1</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>False</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_date</Name>
        <FriendlyName>import_date</FriendlyName>
        <Description/>
        <DataType>Date</DataType>
        <Length>8</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>False</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_datetime</Name>
        <FriendlyName>import_datetime</FriendlyName>
        <Description/>
        <DataType>DateTime</DataType>
        <Length>8</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>True</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>includeindefaultsearch</Key>
            <Value>True</Value>
          </Attribute>
          <Attribute>
            <Key>indexfield</Key>
            <Value>tokenized</Value>
          </Attribute>
          <Attribute>
            <Key>indexsortable</Key>
            <Value>True</Value>
          </Attribute>
          <Attribute>
            <Key>indexstored</Key>
            <Value>True</Value>
          </Attribute>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_decimal</Name>
        <FriendlyName>import_decimal</FriendlyName>
        <Description/>
        <DataType>Decimal</DataType>
        <Length>17</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>False</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>mdpprecision</Key>
            <Value>14</Value>
          </Attribute>
          <Attribute>
            <Key>mdpscale</Key>
            <Value>4</Value>
          </Attribute>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_dictionary</Name>
        <FriendlyName>import_dictionary</FriendlyName>
        <Description/>
        <DataType>DictionaryMultiValue</DataType>
        <Length>4</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>True</AllowSearch>
        <MultiLanguageValue>True</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_email</Name>
        <FriendlyName>import_email</FriendlyName>
        <Description/>
        <DataType>Email</DataType>
        <Length>256</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>True</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_File</Name>
        <FriendlyName>import_File</FriendlyName>
        <Description/>
        <DataType>File</DataType>
        <Length>4</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>False</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_float</Name>
        <FriendlyName>import_float</FriendlyName>
        <Description/>
        <DataType>Float</DataType>
        <Length>8</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>True</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>indexstored</Key>
            <Value>True</Value>
          </Attribute>
        <Attribute>
        <Key>useincomparing</Key>
        <Value>False</Value>
        </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_htmlstring</Name>
        <FriendlyName>import_htmlstring</FriendlyName>
        <Description/>
        <DataType>LongHtmlString</DataType>
        <Length>16</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>True</AllowSearch>
        <MultiLanguageValue>True</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>indexfield</Key>
            <Value>tokenized</Value>
          </Attribute>
          <Attribute>
            <Key>indexsortable</Key>
            <Value>True</Value>
          </Attribute>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>True</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_imagefile</Name>
        <FriendlyName>import_imagefile</FriendlyName>
        <Description/>
        <DataType>ImageFile</DataType>
        <Length>4</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>False</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>autoresize</Key>
            <Value>True</Value>
          </Attribute>
          <Attribute>
            <Key>createthumbnail</Key>
            <Value>True</Value>
          </Attribute>
          <Attribute>
            <Key>imageheight</Key>
            <Value>300</Value>
          </Attribute>
          <Attribute>
            <Key>imagewidth</Key>
            <Value>220</Value>
          </Attribute>
          <Attribute>
            <Key>stretchimage</Key>
            <Value>True</Value>
          </Attribute>
          <Attribute>
            <Key>stretchthumbnail</Key>
            <Value>True</Value>
          </Attribute>
          <Attribute>
            <Key>thumbnailheight</Key>
            <Value>50</Value>
          </Attribute>
          <Attribute>
            <Key>thumbnailwidth</Key>
            <Value>50</Value>
          </Attribute>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_integer</Name>
        <FriendlyName>import_integer</FriendlyName>
        <Description/>
        <DataType>Integer</DataType>
        <Length>4</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>True</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_longstring</Name>
        <FriendlyName>import_longstring</FriendlyName>
        <Description/>
        <DataType>LongString</DataType>
        <Length>16</Length>
        <AllowNulls>False</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>False</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_money</Name>
        <FriendlyName>import_money</FriendlyName>
        <Description/>
        <DataType>Money</DataType>
        <Length>8</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>False</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>includeindefaultsearch</Key>
            <Value>True</Value>
          </Attribute>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_shortstring</Name>
        <FriendlyName>import_shortstring</FriendlyName>
        <Description/>
        <DataType>ShortString</DataType>
        <Length>512</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>False</AllowSearch>
        <MultiLanguageValue>True</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>True</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_stringdictionary</Name>
        <FriendlyName>import_stringdictionary</FriendlyName>
        <Description>testing description</Description>
        <DataType>StringDictionary</DataType>
        <Length>4</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>True</AllowSearch>
        <MultiLanguageValue>True</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
      <MetaField>
        <Namespace>Mediachase.Commerce.Catalog</Namespace>
        <Name>import_url</Name>
        <FriendlyName>import_url</FriendlyName>
        <Description/>
        <DataType>URL</DataType>
        <Length>512</Length>
        <AllowNulls>True</AllowNulls>
        <SaveHistory>False</SaveHistory>
        <AllowSearch>False</AllowSearch>
        <MultiLanguageValue>False</MultiLanguageValue>
        <IsSystem>False</IsSystem>
        <Tag/>
        <Attributes>
          <Attribute>
            <Key>indexfield</Key>
            <Value>tokenized</Value>
          </Attribute>
          <Attribute>
            <Key>indexsortable</Key>
            <Value>True</Value>
          </Attribute>
          <Attribute>
            <Key>useincomparing</Key>
            <Value>False</Value>
          </Attribute>
        </Attributes>
        <OwnerMetaClass>import_node</OwnerMetaClass>
        <OwnerMetaClass>import_product</OwnerMetaClass>
        <OwnerMetaClass>import_sku</OwnerMetaClass>
      </MetaField>
    </MetaDataPlusBackup>  
  </MetaDataScheme>
  ........ 
</Catalogs>

Dictionaries element

The Dictionaries element lets you add dictionaries to support catalogs, as shown in the following example.

<Catalogs Version="1.0">
  <MetaDataScheme>
    .........  
  </MetaDataScheme>
  <Dictionaries>
    <Merchants/>
    <Packages></Packages>
    <TaxCategories></TaxCategories>
    <Warehouses></Warehouses>
    <AssociationTypes></AssociationTypes>
    <Markets></Markets>
  </Dictionaries>
  .........
</Catalogs>

The following describes the child element types Merchants, Packages, Tax Categories, Warehouses, AssociationTypes and Markets.

Merchants

<Merchants/>

A legacy element that is not used.

Packages

<Packages>
  <Package>
    <Name></Name>
    <Description/>
    <Width></Width>
    <Length></Length>
    <Height></Height>
  </Package>
  <Package>
    <Name></Name>
    <Description/>
    <Width></Width>
    <Length></Length>
    <Height></Height>
  </Package>  
</Packages>
  • Name – Name of the package / box.
  • Description – Describes the intended use of the package / box.
  • Width – Width of the package / box.
  • Length – Length of the package / box.
  • Height – Height of the package / box.

TaxCategories

<TaxCategories>
  <TaxCategory>
    <Name></Name>
  </TaxCategory>
  <TaxCategory>
    <Name></Name>
  </TaxCategory>    
</TaxCategories>
  • Name – Name of the tax category.

Warehouses

<Warehouses>
  <Warehouse>
    <Name></Name>
    <IsActive></IsActive>
    <IsPrimary></IsPrimary>
    <SortOrder></SortOrder>
    <Code></Code>
    <IsFulfillmentCenter></IsFulfillmentCenter>
    <IsPickupLocation></IsPickupLocation>
    <IsDeliveryLocation></IsDeliveryLocation>
    <FirstName></FirstName>
    <LastName></LastName>
    <Organization></Organization>
    <Line1></Line1>
    <Line2></Line2>
    <City></City>
    <State></State>
    <CountryCode></CountryCode>
    <CountryName></CountryName>
    <PostalCode></PostalCode>
    <RegionCode></RegionCode>
    <RegionName></RegionName>
    <DaytimePhoneNumber></DaytimePhoneNumber>
    <EveningPhoneNumber></EveningPhoneNumber>
    <FaxNumber></FaxNumber>
    <Email></Email>
  </Warehouse>
  <Warehouse>
    <Name></Name>
    <IsActive></IsActive>
    <IsPrimary></IsPrimary>
    <SortOrder></SortOrder>
    <Code></Code>
    <IsFulfillmentCenter></IsFulfillmentCenter>
    <IsPickupLocation></IsPickupLocation>
    <IsDeliveryLocation></IsDeliveryLocation>
    <FirstName></FirstName>
    <LastName></LastName>
    <Organization></Organization>
    <Line1></Line1>
    <Line2></Line2>
    <City></City>
    <State></State>
    <CountryCode></CountryCode>
    <CountryName></CountryName>
    <PostalCode></PostalCode>
    <RegionCode></RegionCode>
    <RegionName></RegionName>
    <DaytimePhoneNumber></DaytimePhoneNumber>
    <EveningPhoneNumber></EveningPhoneNumber>
    <FaxNumber></FaxNumber>
    <Email></Email>
  </Warehouse>  
</Warehouses>
  • Name – Required. Name of the warehouse.
  • IsActive – Required. Whether the warehouse is active.
  • IsPrimary – Required. Whether the warehouse is a primary location.
  • SortOrder – Required. Sort order when retrieving warehouses.
  • Code – Required. Unique identifier of warehouse; must be unique.
  • IsFulfillmentCenter – Required. Whether the warehouse is a fulfillment center location.
  • IsPickupLocation – Required. Whether the warehouse is a pickup location.
  • IsDeliveryLocation – Required. Whether the warehouse is a delivery location.
  • FirstName – First name of primary warehouse contact.
  • LastName – Last name of primary warehouse contact.
  • Organization – Company name of warehouse.
  • Line1 – Line 1 address of warehouse.
  • Line2 – Line 2 address of warehouse
  • City – City address of warehouse.
  • State – State address of warehouse.
  • CountryCode – Country code address of warehouse.
  • CountryName – Country name address of warehouse.
  • PostalCode – Postal code address of warehouse.
  • RegionCode – Region code address of warehouse.
  • RegionName – Region name address of warehouse.
  • DaytimePhoneNumber – Daytime phone number of warehouse.
  • EveningPhoneNumber – Evening phone number of warehouse.
  • FaxNumber – Fax number of warehouse.
  • Email – Email address of warehouse.

AssociationTypes

<AssociationTypes>
  <AssociationType>
    <TypeId></TypeId>
    <Description/>
  </AssociationType>
  <AssociationType>
    <TypeId></TypeId>
    <Description></Description>
  </AssociationType>
</AssociationTypes>
  • TypeId – The association type.
  • Description – Description of association type.

Markets

<Markets>
  <Market>
    <MarketId></MarketId>
    <IsEnabled></IsEnabled>
    <MarketName></MarketName>
    <MarketDescription></MarketDescription>
    <DefaultLanguage></DefaultLanguage>
    <DefaultCurrency></DefaultCurrency>
    <Currencies>
      <Currency></Currency>
      <Currency></Currency>
    </Currencies>
    <Languages>
      <Language></Language>
      <Language></Language>
    </Languages>
    <Countries>
      <Country></Country>
      <Country></Country>
    </Countries>
  </Market>
  <Market>
    <MarketId></MarketId>
    <IsEnabled></IsEnabled>
    <MarketName></MarketName>
    <MarketDescription></MarketDescription>
    <DefaultLanguage></DefaultLanguage>
    <DefaultCurrency></DefaultCurrency>
    <Currencies>
      <Currency></Currency>
      <Currency></Currency>
    </Currencies>
    <Languages>
      <Language></Language>
      <Language></Language>
    </Languages>
    <Countries>
      <Country></Country>
      <Country></Country>
    </Countries>
  </Market>
</Markets>
  • MarketId – The unique market ID.
  • IsEnabled – If the market is enabled.
  • MarketName – The name of the market.
  • MarketDescription – The description of the market.
  • DefaultLanguage – Default language of the market.
  • DefaultCurrency – Default currency of the market.
  • Currencies – Has collection of currency elements.
    • Currency – The currency code.
  • Languages – Has collection of language elements.
    • Language – The language code.
  • Countries – Has collection of country elements.
    • Country – The country code.

Catalog element

The Catalog element lets you add and update catalogs, catalog nodes, and catalog entries, as shown in the following example.

<Catalogs Version="1.0">
  <MetaDataScheme>  
      ........
  </MetaDataScheme>
  <Dictionaries>  
      ........
  </Dictionaries>
  <Catalog isActive="" 
           sortOrder=""
           defaultLanguage=""
           weightBase=""
           defaultCurrency=""
           endDate=""
           startDate=""
           lastmodified=""
           name="">
    <Languages><Languages>
    <Nodes totalCount="1"></Nodes>
    <Entries totalCount="2"></Entries>
    <Relations></Relations>
    <Associations></Associations>
  </Catalog>
</Catalogs>

The following describes the catalog element attributes and child elements types Languages, Nodes, Entries, Relations, and Associations.

Catalog Attributes

  • isActive – Required. True or False based on if you want the catalog to be active.
  • sortOrder – Required. Order when returned from getting a list of catalogs.
  • defaultLanguage – Required. Default language of catalog.
  • weightBase – Required. Default metric weight of catalog.
  • defaultCurrency – Required. Default currency of catalog.
  • endDate – Required. UTC date when catalog is no longer available.
  • startDate – Required. UTC date when catalog is available.
  • lastmodified. Date when catalog was updated.
  • name – Required. Name of catalog.

Languages element

<Languages>
  <Language>
    <LanguageCode></LanguageCode>
    <UriSegment></UriSegment>
  </Language>
  <Language>
    <LanguageCode></LanguageCode>
    <UriSegment></UriSegment>
  </Language>
</Languages>
  • LanguageCode – Required. The language code.
  • UriSegment – Required. The segment to the catalog language.

Nodes element

<Nodes totalCount="1">
  <Node>
    <Name></Name>
    <StartDate></StartDate>
    <EndDate></EndDate>
    <IsActive></IsActive>
    <SortOrder></SortOrder>
    <DisplayTemplate/>
    <Code></Code>
    <MetaData>
      <MetaClass>
        <Name></Name>
      </MetaClass>
      <MetaFields>
        <MetaField>
          <Name></Name>
          <Type></Type>
          <Data language="" value=""/>
        </MetaField>
        <MetaField>
          <Name></Name>
          <Type></Type>
             </Data>
            <item value="" key="" />
            <item value="" key="" />
          </Data>
        </MetaField>
      </MetaFields>
    </MetaData>
    <ParentNode></ParentNode>
    <SeoInfo>
      <Seo>
        <LanguageCode></LanguageCode>
        <Uri></Uri>
        <Title/>
        <Description/>
        <Keywords/>
        <UriSegment></UriSegment>
      </Seo>
    </SeoInfo>
  </Node>
</Nodes>
  • Name – Required. The name of the node.
  • StartDate – Required. The UTC date when the node becomes available.
  • EndDate – Required. The UTC date when the node becomes unavailable.
  • IsActive – Required. Whether or not the node is active.
  • SortOrder – Required. The order in which the node is retrieved when getting list of nodes.
  • DisplayTemplate. Legacy; not used anymore.
  • Code – Required. The unique identifier of the node.
  • MetaData – Required. This element is responsible for updating the metadata of the node.
    • MetaClass
      • Name – Required. The name of the meta-class that the node is linked to.
    • MetaFields
      • MetaField
        • Name – Required. The name of the meta-field.
        • Type – Required. The MetaDataType of the meta-field.
          • Boolean
          • Date
          • DateTime
          • Decimal
          • DictionaryMultiValue
          • DictionarySingleValue
          • Email
          • File
          • Float
          • LongHtmlString
          • ImageFile
          • Integer
          • LongString
          • Money
          • ShortString
          • StringDictionary
          • URL
        • Data – Required. The data element always has the language attribute to tell which language the meta-field is. It also has an attribute value that is used if it is not a multi-value dictionary or string dictionary.
          • Item – If the data type has multiple values list each key in value as an attribute of Item element.
  • ParentNode – Required. The parent node code of the node.
  • SeoInfo – Required. The SEO information about the node.
    • Seo – Required. The SEO properties for a specific language of the URL.
      • LanguageCode – Required. The language code for the SEO information of the node.
      • Uri – Required. The URI of the node.
      • Title – Required. The title for the page.
      • Keywords – Required. The meta-keywords for the page.
      • UriSegment – Required. The URI segment for the page for routing.

Entries element

<Entries totalCount="">
  <Entry>
    <Name></Name>
    <StartDate></StartDate>
    <EndDate></EndDate>
    <IsActive>True</IsActive>
    <DisplayTemplate/>
    <Code></Code>
    <EntryType></EntryType>
    <MetaData>
      <MetaClass>
        <Name></Name>
      </MetaClass>
      <MetaFields>
        <MetaField>
          <Name></Name>
          <Type></Type>
          <Data language="" value=""/>
        </MetaField>
        <MetaField>
          <Name></Name>
          <Type></Type>
          <Data language="en">
            <item value="" key="" />
            <item value="" key="" />
          </Data>
        </MetaField>
      </MetaFields>
    </MetaData>
    <VariationInfo>
      <Variation>
        <MaxQuantity></MaxQuantity>
        <MinQuantity></MinQuantity>
        <TrackInventory></TrackInventory>
        <Weight></Weight>
      </Variation>
    </VariationInfo>
    <WarehouseInventories>
      <WarehouseInventory>
        <WarehouseCode></WarehouseCode>
        <AllowBackorder></AllowBackorder>
        <AllowPreorder></AllowPreorder>
        <BackorderAvailabilityDate></BackorderAvailabilityDate>
        <BackorderQuantity></BackorderQuantity>
        <InStockQuantity></InStockQuantity>
        <InventoryStatus></InventoryStatus>
        <PreorderAvailabilityDate></PreorderAvailabilityDate>
        <PreorderQuantity></PreorderQuantity>
        <ReorderMinQuantity></ReorderMinQuantity>
        <ReservedQuantity></ReservedQuantity>
      </WarehouseInventory>
    </WarehouseInventories>
    <Prices>
      <Price>
        <MarketId></MarketId>
        <CurrencyCode></CurrencyCode>
        <PriceTypeId></PriceTypeId>
        <PriceCode/>
        <ValidFrom></ValidFrom>
        <ValidUntil></ValidUntil>
        <MinQuantity></MinQuantity>
        <UnitPrice></UnitPrice>
      </Price>
    </Prices>
    <SeoInfo>
      <Seo>
        <LanguageCode></LanguageCode>
        <Uri></Uri>
        <Title/>
        <Description/>
        <Keywords/>
        <UriSegment></UriSegment>
      </Seo>
    </SeoInfo>
  </Entry>
</Entries>
  • Name – Required. The name of the entry.
  • StartDate – Required. The UTC date when the entry becomes available.
  • EndDate – Required. The UTC date when the entry becomes unavailable.
  • IsActive – Required. Whether or not the entry is active.
  • EntryType – Required. The entry type of the entry.
    • Product
    • Variant
    • Package
    • Bundle
    • DynamicPackage
  • DisplayTemplate – Legacy; not used anymore.
  • Code – Required. The unique identifier of the entry.
  • MetaData – Required. This element is responsible for updating the entry's meta data.
    • MetaClass
      • Name – Required. The name of the metaclass to which the entry is linked.
    • MetaFields
      • MetaField
      • Name – Required. The name of the metafield.
      • Type – Required. The MetaDataType of the metafield.
        • Boolean
        • Date
        • DateTime
        • Decimal
        • DictionaryMultiValue
        • DictionarySingleValue
        • Email
        • File
        • Float
        • LongHtmlString
        • ImageFile
        • Integer
        • LongString
        • Money
        • ShortString
        • StringDictionary
        • URL
      • Data – Required. The data element always has the language attribute to tell which language the metafield is. It also has an attribute value which is used if it is not a multi-value dictionary or string dictionary.
        • Item. If the data type has multiple values, list each key in value as an attribute of Item element.
  • VariationInfo – Only used if the entry type is Variant or Package.
    • Variation – Required. Must have element if creating VariationInfo.
      • MaxQuantity – Required. The max quantity that can be ordered at once for entry.
      • MinQuantity – Required. The min quantity that can be ordered at once for entry.
      • TrackInventory – Required. Whether or not to track inventory for entry.
      • Weight – Required. How much the entry weighs based on the default catalog weight base.
  • WarehouseInventories – Should only be used when entry type is Variant or Package.
    • WarehouseInventory – Element to add or update warehouse based on warehouse code.
      • WarehouseCode – Required. The unique identifier of the warehouse.
      • AllowBackorder – Required. Whether or not to allow back-order.
      • AllowPreorder – Required. Whether or not to allow pre-order.
      • BackorderAvailabilityDate – Required. The UTC date when back orders are available for this entry at this warehouse.
      • BackorderQuantity – Required. The back order quantity on hand at this warehouse.
      • InStockQuantity – Required. The in stock quantity on hand at this warehouse.
      • InventoryStatus – Required. The status of the inventory of the entry at this warehouse.
      • PreorderAvailabilityDate – Required. The UTC date when pre-orders are available for this entry at this warehouse.
      • PreorderQuantity – Required. The pre-order quantity on hand at this warehouse.
      • ReorderMinQuantity – Required. The reorder minimum quantity for this entry at this warehouse.
      • ReservedQuantity – Required. The reserved quantity for this entry at this warehouse.
  • Prices – Prices only be used when entry type is Variant or Package.
    • Price – Element to add or update price.
      • MarketId – Required. The market Id for the price.
      • CurrencyCode – Required. The currency code for the price.
      • PriceTypeId – Required. The price type.
          1. All Customers
          1. Customer
          1. Customer Price Group
      • PriceCode – The price code associated with the price.
      • ValidFrom – Required. The UTC date when the price becomes available.
      • ValidUntil – The UTC date when the price becomes unavailable.
      • MinQuantity – Required. The min quantity that has to be ordered to qualify for the price.
      • UnitPrice – Required. The actual price for the entry
  • SeoInfo – Required. The SEO information about the node.
    • Seo – Required. The SEO properties for a specific language of the URL.
      • LanguageCode – Required. The language code for the SEO information of the node.
      • Uri – Required. The URI of the node.
      • Title – Required. The title for the page.
      • Keywords – Required. The meta keywords for the page.
      • UriSegment – Required. The URL segment for the page for routing.

Relations element

The Relations element lets you create relationships between entries and nodes, nodes and other nodes, as well as entries and other entries. Below is an example of how the Relations element should look

<Relations>
  <NodeEntryRelation>
    <EntryCode></EntryCode>
    <NodeCode></NodeCode>
    <SortOrder></SortOrder>
  </NodeEntryRelation>
  <EntryRelation>
    <ParentEntryCode></ParentEntryCode>
    <ChildEntryCode></ChildEntryCode>
    <RelationType></RelationType>
    <Quantity></Quantity>
    <GroupName></GroupName>
    <SortOrder></SortOrder>
  </EntryRelation>
  <NodeRelation>
    <ChildNodeCode></ChildNodeCode>
    <ParentNodeCode></ParentNodeCode>
    <SortOrder></SortOrder>
  </NodeRelation>
</Relations>
  • NodeEntryRelation – This relation creates entries in nodes/categories.
    • EntryCode – Required. The entry code.
    • NodeCode – Required. The node code.
    • SortOrder – Required. The order in which relations are retrieved.
  • EntryRelation – This relation creates entry parent child relationships.
    • ParentEntryCode – Required. The parent entry code.
    • ChildEntryCode – Required. The child entry code.
    • RelationType – Required. The entry relation type.
      • ProductVariation
      • PackageEntry
      • BundleEntry
    • Quantity – How many children belong to the parent.
    • GroupName – A way to group items (for example, Motherboards).
    • SortOrder – Required. The order in which relations are retrieved.
  • NodeRelation – This relation creates nodes in other nodes.
    • ChildNodeCode – Required. The child node code.
    • ParentNodeCode – Required. The parent node code.
    • SortOrder – Required. The order in which relations are retrieved.

Associations element

The Associations element lets you create static list of entries related to an entry, as shown in the following example.

<Associations totalCount="">
  <CatalogAssociation>
    <Name></Name>
    <Description></Description>
    <SortOrder></SortOrder>
    <EntryCode></EntryCode>
    <Association>
      <EntryCode></EntryCode>
      <SortOrder></SortOrder>
      <Type></Type>
    </Association>
    <Association>
      <EntryCode></EntryCode>
      <SortOrder></SortOrder>
      <Type></Type>
    </Association>
  </CatalogAssociation>
  <CatalogAssociation>
    <Name></Name>
    <Description></Description>
    <SortOrder></SortOrder>
    <EntryCode></EntryCode>
    <Association>
      <EntryCode></EntryCode>
      <SortOrder></SortOrder>
      <Type></Type>
    </Association>
  </CatalogAssociation>
</Associations>
  • Associations – This element adds associations to the catalog.
    • CatalogAssociation – Element to add or update catalog association.
      • Name – Required. The name of the association.
      • Description – The description of the association.
      • SortOrder – Required. The order for which the associations are returned
      • EntryCode – Required. The entry code to which this association belongs.
      • Association – Element adds association links to the other entries.
        • EntryCode – Required. The entry code of the entry you want to link to this association.
        • SortOrder – Required. The order for which the associations are returned.
        • Type – Required. The association type name that can be passed in the AssociationTypes in the Dictionaries Element.

CatalogItemAssets element

The CatalogItemAssets element lets you link assets to entries or nodes, as shown in the following example. For a linking to be created, the media must exist at the path specified.

<?xml version="1.0" encoding="utf-8"?>
<CatalogItemAssets totalCount="2">
  <CatalogItemAsset catalogItemType="node" catalogItemCode="node">
  <AssetPath></AssetPath>
  <AssetName>nodeAsset.jpg</AssetName>
  <AssetType>episerver.core.icontentimage</AssetType>
  <GroupName>small</GroupName>
  <SortOrder>0</SortOrder>
  </CatalogItemAsset>
  <CatalogItemAsset catalogItemType="entry" catalogItemCode="variation">
  <AssetPath></AssetPath>
  <AssetName>variationAsset.jpg</AssetName>
  <AssetType>episerver.core.icontentimage</AssetType>
  <GroupName>small</GroupName>
  <SortOrder>0</SortOrder>
  </CatalogItemAsset>
</CatalogItemAssets>
  • CatalogItemAssets – This element adds catalog asset links to the catalog.
    • CatalogItemAssets attributes –
      • totalCount – Required. The number of assets to be linked.
    • CatalogItemAsset – Element to add or update catalog item asset.
      • CatalogItemAsset attributes:
        • catalogItemType – Required. The item type (node, entry).
        • catalogItemCode – Required. The code of the entry or node.
      • AssetPath – The path to the asset from the global asset root. If blank, the asset is understood to be directly under the global asset root.
        • AssetPath – Required. The file name of the asset.
        • AssetType – Required. The type of asset.
          • Image – episerver.core.icontentimage.
          • Other – episerver.core.icontentmedia.
        • GroupName – Way to group assets together for node or entry (for example, Additional Images).
        • SortOrder – Required. The order in which the associations are returned.