Skip to content
Last updated

Product with Variants Model in Norce Commerce Product Service

Overview:
The Norce Commerce Product model supports products with multiple variants. The root Product entity contains shared data, while each variant holds unique information. This structure enables flexible product representation for e-commerce scenarios.

Description of the schema:
The Product entity contains a Variants collection. Each variant is a product-like object with its own identifiers and attributes, but shares some data with the root Product. Nested variants (variants within variants) are not allowed.

View the Product with Variants schema.

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 root Product level contains data common to all variants. This includes general identifiers, shared text fields, images, pricing, and availability. The Variants field lists all variant objects.

Key points:

  • The root Product may appear similar to a product without variants, but the Variants collection will contain one or more variant objects.
  • The root Product's identifiers and some fields may differ depending on how the product is retrieved (see below).

Product Retrieval Scenarios

There are two main ways to retrieve a product with variants:

  1. By common product UniqueName:

    • The root Product's Id is the internal ID of one of the variants (may change over time).
    • PartNo and Manufacturer.PartNo are empty.
    • UniqueName is the SEO-friendly name shared by all variants.
  2. By specific variant identifier (PartNo or UniqueName):

    • The root Product's Id, PartNo, and Manufacturer.PartNo refer to the selected variant.
    • UniqueName remains the shared SEO-friendly name.

Shared Data at Root Level

  • Text, Images, and Files:
    Only information common to all variants is present at the root level.
  • Parametrics:
    The Parametrics collection contains attributes shared by all variants. The VariantParametrics collection is not relevant at the root level.
  • Flags:
    The FlagIdSeed field lists all flags set at the product (root) level.
  • Price:
    The root-level Price field shows the lowest price among all variants (useful for "from price" displays).
  • On Hand (Availability):
    Aggregated availability across all variants.
  • Buying Information:
    Should not be used from the root level; refer to each variant for buying status.

Variant Level

Each object in the Variants collection represents a unique variant of the product. Variants contain their own identifiers and data that differ from the root or other variants.

Key points:

  • Each variant has its own Id, PartNo, Manufacturer.PartNo, and UniqueName.
  • Only data unique to the variant is included; shared data remains at the root.
  • The VariantParametrics collection lists attributes used to distinguish variants (e.g., color, size).
  • The Parametrics collection contains other attributes unique to the variant.
  • The FlagIdSeed field lists flags specific to the variant.
  • Price, availability, and buying information at the variant level are specific to that variant.

Note: Nested variants are not supported. Each variant is a direct child of the root Product.

Variant Filtering

When retrieving a product, you can filter variants by status (e.g., only "Active" or "Coming" variants). Variants with excluded statuses (e.g., "Inactive") will not be returned.

Field Reference

FieldLevelDescription
IdRoot/VariantInternal identifier (see retrieval scenarios above)
PartNoVariantExternal identifier for the variant
Manufacturer.PartNoVariantManufacturer-specific identifier for the variant
UniqueNameRoot/VariantSEO-friendly, language-specific identifier (shared by all variants)
Name, Description, etc.Root/VariantText fields; root contains shared data, variant contains unique data
ParametricsRoot/VariantShared attributes at root; unique attributes at variant
VariantParametricsVariantAttributes used to distinguish variants (e.g., color, size)
FlagIdSeedRoot/VariantFlags set at root or variant level
PriceRoot/VariantLowest price among variants at root; specific price at variant
OnHandRoot/VariantAggregated at root; specific at variant
IsBuyableVariantIndicates if the variant can be purchased

Best Practices

  • Use PartNo and UniqueName for stable product and variant references.
  • Always check IsBuyable at the variant level before allowing purchase.
  • Present the root-level price as a "from price" when displaying a group of variants.
  • Use VariantParametrics to build variant selectors (e.g., color/size dropdowns).