HomeGuides
Submit Documentation FeedbackJoin Developer CommunityLog In

Catalog service

This section describes how to work with bulk operations for catalog items and elements.

The Optimizely Service API supports the bulk import of catalog data into Optimizely Commerce.

Catalog bulk import and export

In the following we describe the methods to use when importing and exporting catalog files.

Generating the catalog XML file

For the catalog import and export to work as described here, you need to generate an XML file named catalog.xml and place it at the root of a zip file to be uploaded. See Catalog service XML for how to generate the XML file used when importing and exporting catalog data.

Bulk import with file

POST

post/episerverapi/commerce/import/catalog

When using this method you receive a backwards-compatible catalog file that will import the content into Commerce.

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", "Catalog.zip");
    var response = client.PostAsync("/episerverapi/commerce/import/catalog", 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 file to be used is based of the upload identifier of a file previously updated using /episerverapi/commerce/import/upload/chunk and /episerverapi/commerce/import/upload/commit, see Chunk upload of large files.

POST

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

When using this method you receive a backwards-compatible catalog file that will import the content into Commerce.

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

Bulk export

GET

get/episerverapi/commerce/export/catalog/{catalogName}

This method returns a zip file of the exported content of the catalog specified in the name parameter.

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.GetAsync("/episerverapi/commerce/export/catalog/{name}").Result;
    if (response.StatusCode == HttpStatusCode.OK)
      {
        var zip = response.Content.ReadAsStreamAsync().Result;
        zip.CopyTo(File.Create("output.zip"));
      }
  }

What’s Next
Did this page help you?