Hide menu Last updated: Oct 20 2016
Area: Episerver Service API Applies to versions: 1 and higher

Catalog asset linking service

The catalog asset linking service imports catalog item asset data into the Episerver Commerce database to be used by Commerce components.

EPiServer.ServiceApi allows for bulk importing of asset linking into Episerver Commerce. See Setting up EPiServer.ServiceApi and Overview of EPiServer.ServiceApi, for information about installing and configuring the service API.

Terminology

  • Catalog item: a catalog node or entry (product, variation, etc.)

Prerequisites

The import/export process searches for ImageData content in the CMS database. Any asset to be associated with catalog items must be present in the CMS database before running import/export.

Catalog asset linking methods

Catalog asset linking import with file

episerverapi/commerce/import/links
The following catalog asset linking XML shows how to generate the XML needed for the method.

C#
using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("https://mysite.com/");
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
    var content = new MultipartFormDataContent();
    var filestream = new FileStream(path, FileMode.Open);
    content.Add(new StreamContent(filestream), "file", "Linking.xml");
    var response = client.PostAsync("/episerverapi/commerce/import/links", content).Result;
    if (response.StatusCode == HttpStatusCode.OK)
    {
        var returnString = response.Content.ReadAsStringAsync().Result;
        returnString = returnString.Replace("\"", "");
        Guid taskId = Guid.Empty;
        Guid.TryParse(returnString, out taskId);
    }
}
Response
"\"9e4bd26f-b263-488c-a5d3-3e4c9f87ac4f\""

Catalog asset linking import with file upload identifier

episerverapi/commerce/import/links/{uploadId:guid}
The following Catalog asset linking XML shows how to generate the XML needed for the method. For this method to work, you need to a valid upload identifier of a asset linking XML file previously uploaded using the chunked upload methods

C#
using (var client = new HttpClient())
{
	client.BaseAddress = new Uri("https://mysite.com/");
	client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
	var response = client.PostAsync(String.Format("episerverapi/commerce/import/links/{0}", uploadId), new FormUrlEncodedContent(new List<KeyValuePair<String, String>>())).Result;
	if (response.StatusCode == HttpStatusCode.OK)
	{
		var returnString = response.Content.ReadAsStringAsync().Result;
		returnString = returnString.Replace("\"", "");
		Guid taskId = Guid.Empty;
		Guid.TryParse(returnString, out taskId);
	}
}
Response
"\"9e4bd26f-b263-488c-a5d3-3e4c9f87ac4f\""

Catalog Asset Linking XML

The following example shows what a catalog item asset export looks like.

<?xml version="1.0" encoding="utf-8"?>
<CatalogItemAssetCollection>
  <TotalCount>2</TotalCount>
  <CatalogItemAssets>
    <CatalogItemAsset>
      <CatalogItemType>Node</CatalogItemType>
      <CatalogItemCode>testNode</CatalogItemCode>
      <AssetPath>catalogs/mypath</AssetPath>
      <AssetName>nodeAsset.jpg</AssetName>
      <AssetType>episerver.core.icontentimage</AssetType>
      <GroupName>small</GroupName>
      <SortOrder>0</SortOrder>
    </CatalogItemAsset>
    <CatalogItemAsset>
      <CatalogItemType>Entry</CatalogItemType>
      <CatalogItemCode>testVariation</CatalogItemCode>
      <AssetPath>catalogs/mypath</AssetPath>
      <AssetName>variationAsset.jpg</AssetName>
      <AssetType>episerver.core.icontentimage</AssetType>
      <GroupName>small</GroupName>
      <SortOrder>0</SortOrder>
    </CatalogItemAsset>
  </CatalogItemAssets>
</CatalogItemAssetCollection>
  • CatalogItemAssetCollection. This element adds catalog asset links to the catalog.
    • TotalCount (required). The number of assets to be linked
    • CatalogItemAssets. This element adds catalog asset links to the catalog.
    • CatalogItemAsset. Element to add or update catalog item asset.
        • 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.
        • AssetName (required). The filename of the asset including extension.
        • 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 for which the associations are returned.

Comments