Last updated

The Product data model with variants

A product with variants may appear similar to a product without variants at first glance. However, if the Collection Variants is not empty, it contains a list of the variants. These variants have the same element contract as the root product, but with some notable differences.

Schema: Product with variants

An example product (with variants)
{
  "Id": 31883770,
  "Name": "Delta t-shirt",
  "Description": "T-shirt från MINIMUM. Rak modell med rundad hals. ",
  "PartNo": "",
  "SubHeader": "",
  "Manufacturer": {
    "Id": 25030,
    "Name": "Minimum",
    "PartNo": "",
    "LogoPath": "",
    "LogoKey": null,
    "UniqueName": "Minimum"
  },
  "Image": null,
  "CampaignImage": null,
  "LargeImage": null,
  "ThumbnailImage": null,
  "Files": [],
  "FlagIdSeed": "917,915,1001",
  "Price": 240.00,
  "PriceCatalog": null,
  "PriceRecommended": null,
  "PriceFreight": null,
  "PriceFreightVatRate": null,
  "VatRate": 1.25,
  "RecommendedQuantity": 1.000,
  "OnHand": {
    "Value": 10.000,
    "IncomingValue": 0.000,
    "NextDeliveryDate": null,
    "LeadtimeDayCount": 0,
    "LastChecked": null,
    "IsActive": true,
    "IsReturnable": false,
    "Info": null
  },
  "OnHandStore": {
    "Value": 0.000,
    "IncomingValue": 0.000,
    "NextDeliveryDate": null,
    "LeadtimeDayCount": null,
    "LastChecked": null,
    "IsActive": false,
    "IsReturnable": false,
    "Info": null
  },
  "OnHandSupplier": {
    "Value": 0.000,
    "IncomingValue": 0.000,
    "NextDeliveryDate": null,
    "LeadtimeDayCount": null,
    "LastChecked": null,
    "IsActive": false,
    "IsReturnable": false,
    "Info": null
  },
  "Variants": [
    {
      "Id": 31883770,
      "Name": "Adobe Rose, S",
      "Description": "T-shirt från MINIMUM. Rak modell med rundad hals. ",
      "PartNo": "124480222-S-ROSE",
      "SubHeader": "",
      "Manufacturer": {
        "Id": 25030,
        "Name": "Minimum",
        "PartNo": "124480222-S-ROSE",
        "LogoPath": "",
        "LogoKey": null,
        "UniqueName": "Minimum"
      },
      "Image": null,
      "CampaignImage": null,
      "LargeImage": null,
      "ThumbnailImage": null,
      "Files": [],
      "FlagIdSeed": "",
      "Price": 240.00,
      "PriceCatalog": null,
      "PriceRecommended": null,
      "PriceFreight": null,
      "PriceFreightVatRate": null,
      "VatRate": 1.25,
      "RecommendedQuantity": 1.000,
      "OnHand": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "OnHandStore": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "OnHandSupplier": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "Variants": null,
      "PriceListId": 1,
      "Key": "f7e9a96c-eb29-48fa-906b-852279f93bdf",
      "Updated": "/Date(1527770280000+0200)/",
      "NavigationNodeKey": null,
      "CategoryId": null,
      "CategoryName": null,
      "ImageKey": "7c63e89d-b131-4b05-8840-ebaa1a186ac4",
      "VariantParametrics": [
        {
          "Name": "Färg",
          "Value": "Adobe Rose",
          "Id": 14113,
          "ValueId": 53535,
          "Description": "",
          "ValueDescription": "",
          "IsPrimary": true,
          "ValueIdSeed": "",
          "Value2": "Adobe Rose",
          "Uom": "",
          "GroupId": 0,
          "GroupName": null,
          "SortOrder": 1
        },
        {
          "Name": "Storlek",
          "Value": "S",
          "Id": 14314,
          "ValueId": 53534,
          "Description": "",
          "ValueDescription": "",
          "IsPrimary": true,
          "ValueIdSeed": "",
          "Value2": "S",
          "Uom": "",
          "GroupId": 0,
          "GroupName": null,
          "SortOrder": 2
        }
      ],
      "StatusId": 1,
      "MetaTags": "",
      "MetaDescription": "",
      "VariantName": "Delta t-shirt",
      "DescriptionHeader": "",
      "UniqueName": "delta-t-shirt-31883770",
      "StockDisplayBreakPoint": null,
      "Parametrics": [],
      "Families": null,
      "IsBuyable": true,
      "SubDescription": "",
      "Uom": "st",
      "UomCount": 1.000,
      "EanCode": null,
      "Type": 1,
      "Categories": null,
      "IsRecommendedQuantityFixed": false,
      "PopularityRank": null,
      "CostPurchase": 0.00,
      "CostUnit": 0.00,
      "Title": null,
      "ActualWeight": 0.00,
      "IsDropShipOnly": false,
      "Synonyms": null,
      "IsSubscribable": false,
      "UnspscCode": null,
      "PriceStandard": null,
      "Width": null,
      "Height": null,
      "Depth": null
    },
    {
      "Id": 31883771,
      "Name": "Adobe Rose, M",
      "Description": "T-shirt från MINIMUM. Rak modell med rundad hals. ",
      "PartNo": "124480222-M-ROSE",
      "SubHeader": "",
      "Manufacturer": {
        "Id": 25030,
        "Name": "Minimum",
        "PartNo": "124480222-M-ROSE",
        "LogoPath": "",
        "LogoKey": null,
        "UniqueName": "Minimum"
      },
      "Image": null,
      "CampaignImage": null,
      "LargeImage": null,
      "ThumbnailImage": null,
      "Files": [
        {
          "Id": 11,
          "Type": 1,
          "Path": null,
          "Name": "",
          "Description": "",
          "Key": "e9e10c69-e410-4950-b0b8-d6595e88976f",
          "Extension": ".jpg",
          "Code": "Additional"
        }
      ],
      "FlagIdSeed": "",
      "Price": 240.00,
      "PriceCatalog": null,
      "PriceRecommended": null,
      "PriceFreight": null,
      "PriceFreightVatRate": null,
      "VatRate": 1.25,
      "RecommendedQuantity": 1.000,
      "OnHand": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "OnHandStore": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "OnHandSupplier": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "Variants": null,
      "PriceListId": 1,
      "Key": "dd851207-bd92-4048-90f1-2c50aa8dcd26",
      "Updated": "/Date(1527770280000+0200)/",
      "NavigationNodeKey": null,
      "CategoryId": null,
      "CategoryName": null,
      "ImageKey": "6f525f31-76e9-46b3-93c3-a3fe080b9ca9",
      "VariantParametrics": [
        {
          "Name": "Färg",
          "Value": "Adobe Rose",
          "Id": 14113,
          "ValueId": 53535,
          "Description": "",
          "ValueDescription": "",
          "IsPrimary": true,
          "ValueIdSeed": "",
          "Value2": "Adobe Rose",
          "Uom": "",
          "GroupId": 0,
          "GroupName": null,
          "SortOrder": 1
        },
        {
          "Name": "Storlek",
          "Value": "M",
          "Id": 14314,
          "ValueId": 53536,
          "Description": "",
          "ValueDescription": "",
          "IsPrimary": true,
          "ValueIdSeed": "",
          "Value2": "M",
          "Uom": "",
          "GroupId": 0,
          "GroupName": null,
          "SortOrder": 2
        }
      ],
      "StatusId": 1,
      "MetaTags": "",
      "MetaDescription": "",
      "VariantName": "Delta t-shirt",
      "DescriptionHeader": "",
      "UniqueName": "delta-t-shirt-31883771",
      "StockDisplayBreakPoint": null,
      "Parametrics": [],
      "Families": null,
      "IsBuyable": true,
      "SubDescription": "",
      "Uom": "st",
      "UomCount": 1.000,
      "EanCode": null,
      "Type": 1,
      "Categories": null,
      "IsRecommendedQuantityFixed": false,
      "PopularityRank": null,
      "CostPurchase": 0.00,
      "CostUnit": 0.00,
      "Title": null,
      "ActualWeight": 0.00,
      "IsDropShipOnly": false,
      "Synonyms": null,
      "IsSubscribable": false,
      "UnspscCode": null,
      "PriceStandard": null,
      "Width": null,
      "Height": null,
      "Depth": null
    },
    {
      "Id": 31883772,
      "Name": "Adobe Rose, L",
      "Description": "T-shirt från MINIMUM. Rak modell med rundad hals. ",
      "PartNo": "124480222-L-ROSE",
      "SubHeader": "",
      "Manufacturer": {
        "Id": 25030,
        "Name": "Minimum",
        "PartNo": "124480222-L-ROSE",
        "LogoPath": "",
        "LogoKey": null,
        "UniqueName": "Minimum"
      },
      "Image": null,
      "CampaignImage": null,
      "LargeImage": null,
      "ThumbnailImage": null,
      "Files": [],
      "FlagIdSeed": "",
      "Price": 240.00,
      "PriceCatalog": null,
      "PriceRecommended": null,
      "PriceFreight": null,
      "PriceFreightVatRate": null,
      "VatRate": 1.25,
      "RecommendedQuantity": 1.000,
      "OnHand": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "OnHandStore": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "OnHandSupplier": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "Variants": null,
      "PriceListId": 1,
      "Key": "c1f63c94-4ac4-4f51-a50f-e6f71c25c56b",
      "Updated": "/Date(1527770280000+0200)/",
      "NavigationNodeKey": null,
      "CategoryId": null,
      "CategoryName": null,
      "ImageKey": "eab6bebf-f1a7-42cc-9ff9-fa085e169f75",
      "VariantParametrics": [
        {
          "Name": "Färg",
          "Value": "Adobe Rose",
          "Id": 14113,
          "ValueId": 53535,
          "Description": "",
          "ValueDescription": "",
          "IsPrimary": true,
          "ValueIdSeed": "",
          "Value2": "Adobe Rose",
          "Uom": "",
          "GroupId": 0,
          "GroupName": null,
          "SortOrder": 1
        },
        {
          "Name": "Storlek",
          "Value": "L",
          "Id": 14314,
          "ValueId": 53537,
          "Description": "",
          "ValueDescription": "",
          "IsPrimary": true,
          "ValueIdSeed": "",
          "Value2": "L",
          "Uom": "",
          "GroupId": 0,
          "GroupName": null,
          "SortOrder": 2
        }
      ],
      "StatusId": 1,
      "MetaTags": "",
      "MetaDescription": "",
      "VariantName": "Delta t-shirt",
      "DescriptionHeader": "",
      "UniqueName": "delta-t-shirt-31883772",
      "StockDisplayBreakPoint": null,
      "Parametrics": [],
      "Families": null,
      "IsBuyable": true,
      "SubDescription": "",
      "Uom": "st",
      "UomCount": 1.000,
      "EanCode": null,
      "Type": 1,
      "Categories": null,
      "IsRecommendedQuantityFixed": false,
      "PopularityRank": null,
      "CostPurchase": 0.00,
      "CostUnit": 0.00,
      "Title": null,
      "ActualWeight": 0.00,
      "IsDropShipOnly": false,
      "Synonyms": null,
      "IsSubscribable": false,
      "UnspscCode": null,
      "PriceStandard": null,
      "Width": null,
      "Height": null,
      "Depth": null
    },
    {
      "Id": 31883773,
      "Name": "Adobe Rose, XL",
      "Description": "T-shirt från MINIMUM. Rak modell med rundad hals. ",
      "PartNo": "124480222-XL-ROSE",
      "SubHeader": "",
      "Manufacturer": {
        "Id": 25030,
        "Name": "Minimum",
        "PartNo": "124480222-XL-ROSE",
        "LogoPath": "",
        "LogoKey": null,
        "UniqueName": "Minimum"
      },
      "Image": null,
      "CampaignImage": null,
      "LargeImage": null,
      "ThumbnailImage": null,
      "Files": [],
      "FlagIdSeed": "",
      "Price": 240.00,
      "PriceCatalog": null,
      "PriceRecommended": null,
      "PriceFreight": null,
      "PriceFreightVatRate": null,
      "VatRate": 1.25,
      "RecommendedQuantity": 1.000,
      "OnHand": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "OnHandStore": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "OnHandSupplier": {
        "Value": 0.000,
        "IncomingValue": 0.000,
        "NextDeliveryDate": null,
        "LeadtimeDayCount": null,
        "LastChecked": null,
        "IsActive": false,
        "IsReturnable": true,
        "Info": null
      },
      "Variants": null,
      "PriceListId": 1,
      "Key": "f42bbe91-2f73-4bdc-a19f-81c1e75c80d4",
      "Updated": "/Date(1527770280000+0200)/",
      "NavigationNodeKey": null,
      "CategoryId": null,
      "CategoryName": null,
      "ImageKey": "6f7282b4-7c17-46ff-a2b6-d643bfa41fb2",
      "VariantParametrics": [
        {
          "Name": "Färg",
          "Value": "Adobe Rose",
          "Id": 14113,
          "ValueId": 53535,
          "Description": "",
          "ValueDescription": "",
          "IsPrimary": true,
          "ValueIdSeed": "",
          "Value2": "Adobe Rose",
          "Uom": "",
          "GroupId": 0,
          "GroupName": null,
          "SortOrder": 1
        },
        {
          "Name": "Storlek",
          "Value": "XL",
          "Id": 14314,
          "ValueId": 53538,
          "Description": "",
          "ValueDescription": "",
          "IsPrimary": true,
          "ValueIdSeed": "",
          "Value2": "XL",
          "Uom": "",
          "GroupId": 0,
          "GroupName": null,
          "SortOrder": 2
        }
      ],
      "StatusId": 1,
      "MetaTags": "",
      "MetaDescription": "",
      "VariantName": "Delta t-shirt",
      "DescriptionHeader": "",
      "UniqueName": "delta-t-shirt-31883773",
      "StockDisplayBreakPoint": null,
      "Parametrics": [],
      "Families": null,
      "IsBuyable": true,
      "SubDescription": "",
      "Uom": "st",
      "UomCount": 1.000,
      "EanCode": null,
      "Type": 1,
      "Categories": null,
      "IsRecommendedQuantityFixed": false,
      "PopularityRank": null,
      "CostPurchase": 0.00,
      "CostUnit": 0.00,
      "Title": null,
      "ActualWeight": 0.00,
      "IsDropShipOnly": false,
      "Synonyms": null,
      "IsSubscribable": false,
      "UnspscCode": null,
      "PriceStandard": null,
      "Width": null,
      "Height": null,
      "Depth": null
    }
  ],
  "PriceListId": 1,
  "Key": "f7e9a96c-eb29-48fa-906b-852279f93bdf",
  "Updated": "/Date(1527770280000+0200)/",
  "NavigationNodeKey": "8cf3381a-4205-4fd8-8d90-034e8fa6e249",
  "CategoryId": 42507,
  "CategoryName": "Clothes",
  "ImageKey": "7c63e89d-b131-4b05-8840-ebaa1a186ac4",
  "VariantParametrics": [
    {
      "Name": "Material",
      "Value": "100% bomull",
      "Id": 14313,
      "ValueId": 53533,
      "Description": "",
      "ValueDescription": "",
      "IsPrimary": true,
      "ValueIdSeed": "",
      "Value2": "100% bomull",
      "Uom": "",
      "GroupId": 0,
      "GroupName": null,
      "SortOrder": 5
    },
    {
      "Name": "Tvättråd",
      "Value": "40 C",
      "Id": 14315,
      "ValueId": null,
      "Description": "",
      "ValueDescription": null,
      "IsPrimary": true,
      "ValueIdSeed": "",
      "Value2": "40 C",
      "Uom": "",
      "GroupId": 0,
      "GroupName": null,
      "SortOrder": 6
    },
    {
      "Name": "Storlek/Längd",
      "Value": "Modellen är 189 cm lång och bär storlek L. Längd bak är 76 cm. I stl L.",
      "Id": 12717,
      "ValueId": null,
      "Description": "",
      "ValueDescription": null,
      "IsPrimary": true,
      "ValueIdSeed": "",
      "Value2": "Modellen är 189 cm lång och bär storlek L. Längd bak är 76 cm. I stl L.",
      "Uom": "",
      "GroupId": 0,
      "GroupName": null,
      "SortOrder": 7
    }
  ],
  "StatusId": 1,
  "MetaTags": "",
  "MetaDescription": "",
  "VariantName": null,
  "DescriptionHeader": "",
  "UniqueName": "delta-t-shirt",
  "StockDisplayBreakPoint": null,
  "Parametrics": [
    {
      "Name": "Material",
      "Value": "100% bomull",
      "Id": 14313,
      "ValueId": 53533,
      "Description": "",
      "ValueDescription": "",
      "IsPrimary": true,
      "ValueIdSeed": "",
      "Value2": "100% bomull",
      "Uom": "",
      "GroupId": 0,
      "GroupName": null,
      "SortOrder": 5
    },
    {
      "Name": "Tvättråd",
      "Value": "40 C",
      "Id": 14315,
      "ValueId": null,
      "Description": "",
      "ValueDescription": null,
      "IsPrimary": true,
      "ValueIdSeed": "",
      "Value2": "40 C",
      "Uom": "",
      "GroupId": 0,
      "GroupName": null,
      "SortOrder": 6
    },
    {
      "Name": "Storlek/Längd",
      "Value": "Modellen är 189 cm lång och bär storlek L. Längd bak är 76 cm. I stl L.",
      "Id": 12717,
      "ValueId": null,
      "Description": "",
      "ValueDescription": null,
      "IsPrimary": true,
      "ValueIdSeed": "",
      "Value2": "Modellen är 189 cm lång och bär storlek L. Längd bak är 76 cm. I stl L.",
      "Uom": "",
      "GroupId": 0,
      "GroupName": null,
      "SortOrder": 7
    }
  ],
  "Families": [],
  "IsBuyable": false,
  "SubDescription": "",
  "Uom": "st",
  "UomCount": 1.000,
  "EanCode": null,
  "Type": 1,
  "Categories": [
    {
      "Id": 42507,
      "Value": "Clothes",
      "Code": "clothes"
    }
  ],
  "IsRecommendedQuantityFixed": false,
  "PopularityRank": null,
  "CostPurchase": 0.00,
  "CostUnit": 0.00,
  "Title": null,
  "ActualWeight": 0.00,
  "IsDropShipOnly": false,
  "Synonyms": null,
  "IsSubscribable": false,
  "UnspscCode": null,
  "PriceStandard": null,
  "Width": null,
  "Height": null,
  "Depth": null
}

Product (Root) Level

The Product (root) level includes all the common data for all the variants, and under the Variants field, each variant has its own data. The Product root level have some minor differences depending on how you retrieve the product:

  • When fetching the product without a specific variant pre-selected, such as when calling GetProductByUniqueName and providing the common product UniqueName.
  • When fetching a specific variant by calling one of the GetProduct methods with a specific variant PartNo or variant UniqueName.

The most visible difference is the identifier fields on the root level: PartNo and Manufacturer.PartNo, which is empty for the first case above and has the specific variant identifiers in the latter.

Note

Nested Product -> Variant relations are not allowed. A variant cannot contain its own variants.

Product Identifiers

The identifiers for a product with variants differ based on the two scenarios mentioned earlier:

  1. In the first scenario, the Id represents the internal ID of one of the variants (which may change over time based on Norce Commerce's internal indexing of the database). The PartNo and Manufacturer/PartNo are empty. The UniqueName is the SEO-friendly language-specific name shared by all variants of the product.
  2. In the second scenario, the Id represents the internal ID of the specified variant being requested. The PartNo and Manufacturer/PartNo are the identifiers for the specified variant. The UniqueName is the SEO-friendly language-specific name shared by all variants of the product.
Note

Avoid using Norce's internal ProductId for indexing the products and variants in other services, like a CMS or an external Search service. Firstly, this id is different in different environments. Also, the internal id that represents the product (root) level on a product with variants might change over time, since this is decided by the internal re-indexing of Norce's data layer. Use PartNo and UniqueName instead.

Text Information, Images and Files

The text information, images, and files at the root level contain only information that is the same for all variants in the product cluster.

Parametrics

For products with variants, the Parametrics collection contains all parametrics that are the same for all variants in the product cluster. The VariantParametrics collection is not relevant at the root level.

Flags

The FlagIdSeed field contains all common flags set at the product level.

Price Information

The price information at the root level for products with variants displays the best price from all variants (i.e., the lowest price). This can be presented as a "from price" in a listing of the whole group of variants.

On hand information

The on-hand information is a summary of all on-hand quantities on all variants in the collection.

Buying information

The buying information should not be used from the root level. Check instead under each variant.

The variant level

The Variants collection contains all variants (depending on the input parameters).

Note

If you, for example, pass in statuses Active and Coming, all variants with status Expiring will not be returned.

Variant identifiers

Id, PartNo, Manufacturer/PartNo, UniqueName are the identifiers for the variant.

Text information, images and files

Only files, images, and text that are unique to the variant are returned. Shared data with other variants exist only at the root level.

VariantParametrics and Parametrics

The VariantParametrics collection lists all variant-identifiable parametrics. These are parametrics set up in the variant definition (called Variant types in the admin ui) that are meant to be used when the visitor wants to navigate to the correct variant using drop lists of choices (like color or size).

The Parametrics collection contains other parametrics unique to the variant. Other shared parametrics exist at the root level.

Flags

The FlagIdSeed field contains all variant-specific flags that are set, while shared flags exist at the root level.

Price, onhand and buying information

Price, on-hand, and buying information at the variant level contain the information at the root level for products without variants ( see product model).