Loading...
Area: Optimizely Service API
Applies to versions: 1 and higher

Catalog asset linking service

Recommended reading 

This topic describes how to bulk import catalog asset links using the Optimizely Service API. The catalog asset linking service is an operation that imports catalog item asset data into the Optimizely Commerce database to be used by Commerce components.

How it works

The Service API allows for bulk importing of catalog item asset linking into Optimizely Commerce. A catalog item asset can be for example an image associated with a node/category, product or variant in Optimizely Commerce. 

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

Bulk import with file

The following catalog asset linking XML shows how to generate the XML needed for the method.

post/episerverapi/commerce/import/links

C# code sample

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\""

Bulk import with file upload identifier

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 for an asset linking XML file previously uploaded using the chunked upload methods, see Chunk upload of large files.

post/episerverapi/commerce/import/catalog/{uploadId}

C# code sample

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/catalog/{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.

  • CatalogItemAssetCollection. Adds catalog asset links to the catalog.
    • TotalCount (required). Number of assets to be linked
    • CatalogItemAssets. 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 in which associations are returned.

Related topics

Do you find this information helpful? Please log in to provide feedback.

Last updated: Oct 20, 2016

Recommended reading