HomeGuidesAPI Reference
Submit Documentation FeedbackJoin Developer CommunityLog In

Catalog entry relations

This topic describes how to work with RESTful operations for catalog entry relations in the Optimizely Service API.

Example models

[Serializable]
public class EntryRelation
  {
    public int SortOrder { get; set; }
    public decimal Quantity { get; set; }
    public string RelationType { get; set; }
    public string GroupName { get; set; }
    public string ParentEntryCode { get; set; }
    public string ChildEntryCode { get; set; }
  }

Get all entry relations

GET

get/episerverapi/commerce/entries/{entryCode}/entryrelations

Get all entry relations

JSON response type

ar client = new HttpClient()
  {
    BaseAddress = new Uri(ConfigurationManager.AppSettings["integrationUrl"])
  };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);        
var result = client.GetAsync("/episerverapi/commerce/entries/{entry code}/entryrelations").Result.Content.ReadAsStringAsync().Result

XML response type

var client = new HttpClient()
  {
    BaseAddress = new Uri(ConfigurationManager.AppSettings["integrationUrl"])
  };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));       
var result = client.GetAsync("/episerverapi/commerce/entries/{entry code}/entryrelations").Result.Content.ReadAsStringAsync().Result

Response

<ArrayOfEntryRelation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <EntryRelation>
    <SortOrder>0</SortOrder>
    <Quantity>1.0000</Quantity>
    <RelationType>ProductVariation</RelationType>
    <GroupName>default</GroupName>
    <ParentEntryCode>Jackets-Peacoats-Asymmetrical</ParentEntryCode>
    <ChildEntryCode>Jackets-Peacoats-Hooded-Tan-Large</ChildEntryCode>
  </EntryRelation>
  <EntryRelation>
    <SortOrder>0</SortOrder>
    <Quantity>1.0000</Quantity>
    <RelationType>ProductVariation</RelationType>
    <GroupName>default</GroupName>
    <ParentEntryCode>Jackets-Peacoats-Asymmetrical</ParentEntryCode>
    <ChildEntryCode>Jackets-Peacoats-Asymmetrical-Black-Small</ChildEntryCode>
  </EntryRelation>
  <EntryRelation>
    <SortOrder>0</SortOrder>
    <Quantity>1.0000</Quantity>
    <RelationType>ProductVariation</RelationType>
    <GroupName>default</GroupName>
    <ParentEntryCode>Jackets-Peacoats-Asymmetrical</ParentEntryCode>
    <ChildEntryCode>Jackets-Peacoats-Asymmetrical-Black-Medium</ChildEntryCode>
  </EntryRelation>
</ArrayOfEntryRelation>

Get entry relation

GET

get/episerverapi/commerce/entries/{entryCode}/entryrelations/{childCode}/{relationType}

Get entry relation

JSON response type

var client = new HttpClient()
  {
    BaseAddress = new Uri(ConfigurationManager.AppSettings["integrationUrl"])
  };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);        
var result = client.GetAsync("/episerverapi/commerce/entries/{entry code}/entryrelations/{childCode}/{relationType}").Result.Content.ReadAsStringAsync().Result

XML response type

var client = new HttpClient()
  {
    BaseAddress = new Uri(ConfigurationManager.AppSettings["integrationUrl"])
  };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));       
var result = client.GetAsync("/episerverapi/commerce/entries/{entry code}/entryrelations/{childCode}/{relationType}").Result.Content.ReadAsStringAsync().Result

Response

<EntryRelation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SortOrder>0</SortOrder>
  <Quantity>1.0000</Quantity>
  <RelationType>ProductVariation</RelationType>
  <GroupName>default</GroupName>
  <ParentEntryCode>Jackets-Peacoats-Asymmetrical</ParentEntryCode>
  <ChildEntryCode>Jackets-Peacoats-Asymmetrical-Black-Small</ChildEntryCode>
</EntryRelation>

Create entry relation

POST

post/episerverapi/commerce/entries/{entryCode}/entryrelations

Create entry relation

JSON response type

ar model = new EntryRelation()
  {
    ChildEntryCode = "Jackets-Peacoats-Hooded-Tan-Large",
    GroupName = "default",
    ParentEntryCode = "Jackets-Peacoats-Asymmetrical",    
    Quantity = 1,
    RelationType = "ProductVariation",
    SortOrder = 0
  };
var json = JsonConvert.SerializeObject(model);
var client = new HttpClient()
  {
    BaseAddress = new Uri(ConfigurationManager.AppSettings["integrationUrl"])
  };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);        
var result = client.PostAsync("/episerverapi/commerce/entries/{entry code}/entryrelations",
  new StringContent(json, Encoding.UTF8, "application/json")).Result.Content.ReadAsStringAsync().Result

XML response type

var model = new EntryRelation()
  {
    ChildEntryCode = "Jackets-Peacoats-Hooded-Tan-Large",
    GroupName = "default",
    ParentEntryCode = "Jackets-Peacoats-Asymmetrical",
    Quantity = 1,
    RelationType = "ProductVariation",
    SortOrder = 0
  };
var client = new HttpClient()
  {
    BaseAddress = new Uri(ConfigurationManager.AppSettings["integrationUrl"])
  };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
var serializer = new XmlSerializer(typeof(EntryRelation));
var xml = String.Empty;
using (var ms = new MemoryStream())
  {
    serializer.Serialize(ms, model);
    xml = Encoding.Default.GetString(ms.ToArray());
  } 
var result = client.PostAsync("/episerverapi/commerce/entries/{entry code}/entryrelations",
  new StringContent(xml, Encoding.UTF8, "text/xml")).Result.Content.ReadAsStringAsync().Result

Response

<EntryRelation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SortOrder>0</SortOrder>
  <Quantity>1</Quantity>
  <RelationType>ProductVariation</RelationType>
  <GroupName>default</GroupName>
  <ParentEntryCode>Jackets-Peacoats-Asymmetrical</ParentEntryCode>
  <ChildEntryCode>Jackets-Peacoats-Hooded-Tan-Large</ChildEntryCode>
</EntryRelation>

Update entry relation

PUT

put/episerverapi/commerce/entries/{entryCode}/entryrelations/{childCode}/{relationType}

Update entry relation

JSON response type

var model = new EntryRelation()
  {
    ChildEntryCode = "Jackets-Peacoats-Hooded-Tan-Large",
    GroupName = "default",
    ParentEntryCode = "Jackets-Peacoats-Asymmetrical",
    Quantity = 1,
    RelationType = "ProductVariation",
    SortOrder = 0
  };
var json = JsonConvert.SerializeObject(model);
var client = new HttpClient()
  {
    BaseAddress = new Uri(ConfigurationManager.AppSettings["integrationUrl"])
  };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);        
var result = client.PutAsync("/episerverapi/commerce/entries/{entry code}/entryrelations/{childCode}/{relationType}",
  new StringContent(json, Encoding.UTF8, "application/json")).Result.Content.ReadAsStringAsync().Result

XML response type

var model = new EntryRelation()
  {
    ChildEntryCode = "Jackets-Peacoats-Hooded-Tan-Large",
    GroupName = "default",
    ParentEntryCode = "Jackets-Peacoats-Asymmetrical",
    Quantity = 1,
    RelationType = "ProductVariation",
    SortOrder = 0
  };
var client = new HttpClient()
  {
    BaseAddress = new Uri(ConfigurationManager.AppSettings["integrationUrl"])
  };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
var serializer = new XmlSerializer(typeof(EntryRelation));
var xml = String.Empty;
using (var ms = new MemoryStream())
  {
    serializer.Serialize(ms, model);
    xml = Encoding.Default.GetString(ms.ToArray());
  }     
var result = client.PutAsync("/episerverapi/commerce/entries/{entry code}/entryrelations/{childCode}/{relationType}",
  new StringContent(xml, Encoding.UTF8, "text/xml")).Result.Content.ReadAsStringAsync().Result

Response

204 No Content

Delete entry relation

DELETE

delete/episerverapi/commerce/entries/{entryCode}/entryrelations/{childCode}/{relationType}

Delete entry relation

JSON response type

var client = new HttpClient()
  {
    BaseAddress = new Uri(ConfigurationManager.AppSettings["integrationUrl"])
  };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);        
var result = client.DeleteAsync("/episerverapi/commerce/entries/{entry code}/entryrelations/{childCode}/{relationType}").Result.Content.ReadAsStringAsync().Result

XML response type

var client = new HttpClient()
  {
    BaseAddress = new Uri(ConfigurationManager.AppSettings["integrationUrl"])
  };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));   
var result = client.DeleteAsync("/episerverapi/commerce/entries/{entry code}/entryrelations/{childCode}/{relationType}").Result.Content.ReadAsStringAsync().Result

Response

<EntryRelation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SortOrder>0</SortOrder>
  <Quantity>1</Quantity>
  <RelationType>ProductVariation</RelationType>
  <GroupName>default</GroupName>
  <ParentEntryCode>Jackets-Peacoats-Asymmetrical</ParentEntryCode>
  <ChildEntryCode>Jackets-Peacoats-Hooded-Tan-Large</ChildEntryCode>
</EntryRelation>

Special strings

These properties require special values to function properly.

RelationType

  • ProductVariation
  • PackageEntry
  • BundleEntry

Did this page help you?