Products

Understand the basics of products.

A product (a stock keeping unit or SKU) is a sellable item or service. Products in your Digital River catalog contain all the required attributes to complete an end-consumer transaction (payments, tax, and fulfillment). You can generally configure the product in one of two ways:

You can retrieve the catalog product information, including applicable discounted prices, by leveraging the available product endpoints.

Individual product

An individual product is a single item, such as a downloadable song, or a collection of items, such as a box set. Use the POST /v1/products request to create an individual product and the POST /products/{productId} request to update an individual product. There are no product variations associated with it.

An individual product is a single sellable stock keeping unit (SKU). The following image shows an example of a SKU:

Base product

If a product comes in different colors, sizes, or versions, it is easier to maintain a base product with product variations than a handful of nearly identical products.

You can create a base product (parent) that contains the common attributes for all product variations (children) of that product. All product variations inherit common attributes. For example, if two variations of a base product require the same product images, add those images to the base product before creating your variations.

Note: A shopper cannot add a base product to a cart. They can only add the product variation to the cart. For example, a shopper can go to the Digital River-hosted storefront and choose a product variation from an interstitial page. The store template automates and controls this behavior.

Use the POST /v1/products request to create a base product and the POST /v1/products/{productId} request to update a base product.

Product variations

Product variations are different versions of a base product that a shopper can purchase, such as different versions, sizes, or capacities. When you add a product variation, the request copies the common attributes from the base product to the variation. You must change the appropriate attributes and settings to make that variation unique. Each product variation contains attributes and settings that are unique to that product variation.

You must change at least one common attribute to make the product variation unique. Only change those settings or attributes that are unique to the variation to reduce operational maintenance.

The following image shows an example of a product variant on a store's website:

Creating a base product with variations

You can choose to either:

Create the base product first

Create the base product first and include the common attributes. If you choose not to define some of the common attributes, those attributes will not be available when you add a product variation.

You can add the product variations to that base product later.

Create the base product and product variations simultaneously

You can create a base product and all its product variations using one call by adding the variations object to the payload. The request copies the common attributes from the base product to each product variation. You modify the attributes for each product variation in the payload when you update the product variation.

The following example adds or updates a base product and its product variations.

curl --location --request POST 'https://api.digitalriver.com/v1/products' \
--header 'Authorization: Bearer <API_key>' \
...
--data-raw '{
    "companyId":"digitalriver",
    "deploymentRequiredChanges": {
        "fulfillmentTypes": ["Download","Physical"]
    },
    "liveChanges": {
        "externalId": "external-reference-id-{{uuid}}",
        "catalogs" : [ {
            "catalogId" : "4783669800",
            "pricing" : [ {
                "type": "listPrice",
                "prices": [{
                    "currency": "USD",
                    "configuredPrice": 10
                }]
            }]
        }]  
    },
    "localizations": [
    {
      "locale": "en_US",
      "isDefault": "true",
      "groups": [
        {
          "groupId": "11",
          "groupName": "Software",
          "attributes": {
            "name": "product-name",
            "displayName": "Product Display Name",
            "sku": "product-sku",
            "manufacturer": "manufacturer-20220308-01",
            "mfrPartNumber": "mfrPartNumber-20220308-01",
            "returnMethod": "LOD",
            "productReturnMethod": "ByAgentAndSelfService",
            "taxableUnspscCode": "43210000",
            "taxableProductCode": "4321_C",
            "privateStoreOnly": true,
            "isViewable": true,
            "isOrderable": true,
            "nonSolr": true,
            "shortDescription": "shortDescription",
            "longDescription": "longDescription",
            "keywords": "keywords",
            "emailAddlInfoText": "emailAddlInfoText",
            "emailAddlInfo": "emailAddlInfo",
            "confirmAddlInfo": "confirmAddlInfo"
          }           
        },
        {
          "groupId": "16",
          "groupName": "Export Controls",
          "attributes": {
            "eccn": "3A992",
            "ccats": "display-name-1234test",
            "licenseException": "APP",
            "harmonizeCode": "hcode",
            "manufactureCountry": "US"
          }
        }   
      ]
    }
    ],
     "variations": [
         {
            "productType": "VARIATION",
            "companyId": "cast",
            "deploymentRequiredChanges": {
            },
            "varyingAttributes": [
                {
                    "attributeName": "platform",
                    "attributeValue": "1 user"
                },
                {
                    "attributeName": "fulfillmentType",
                    "attributeValue": "Download"
                }
            ],
             "localizations": [
                {
                    "locale": "en_US",
                    "isDefault": "true",
                    "groups": [
                        {
                            "groupId": "11",
                            "groupName": "Software",
                            "attributes": {
                                "name": "product-name-V1",
                                "displayName": "Product-display-V1",
                                "sku": "demo-sku-AAAA-V1",
                                "taxableUnspscCode": "43210000",
                                "taxableProductCode": "4321_C",
                                "isViewable": true,
                                "isOrderable": true,
                                "nonSolr": true
                            }
                        },
                        {
                            "groupId": "16",
                            "groupName": "Export Controls",
                            "attributes": {
                                "eccn": "3A992",
                                "ccats": "V1{{uuid}}",
                                "licenseException": "APP",
                                "harmonizeCode": "hcode",
                                "manufactureCountry": "US"
                            }
                        }
                    ]
                }
            ]
        }
        
     ]
}'

The following example verifies the successful completion of the request shown above.

curl --location --request GET 
'https://api.digitalriver.com/v1/products/tasks/add1797e-2f98-4e7a-9894-c71d6b5640bb' \
--header 'Authorization: Bearer <API_key>' \
...

Physical and digital products

Use the Admin API fulfillment types (fulfillmentTypes) to define how to deliver products to shoppers. The options are empty (""), physical or download. When the value is empty, the product is neither physical nor digital (download). The empty value reflects the Other setting in Global Commerce for service, warranty, entitlement, etc. Digital River supports two types of digital products: subscription and download.

Last updated