Products

Now that we have the user’s country, we can call out to the API for a list of available products.

Each product belongs to some Product Category. Products can have multiple Product Variants, and Product Variants can have multiple Product Templates. For example, “Canvas Wraps” is a product that has multiple Product Variants (square, rectangle, black, white, 6x6 inch, etc…) and each of them has multiple Product Templates (with a single photo, 3 photos, 6 photos, etc…). It belongs to “Home Decor” Product Category. SKU (Stock Keeping Unit) is a string that uniquely identifies a single Product Variant. For example, CanvsWrp-BlkWrp-6x6 is a SKU for a black, square 6x6 inch Canvas Wrap.

The GET products endpoint can give you data to:

  • see which products are available in your region
  • see the starting prices for the products
  • get marketing-worthy content and images for the products

The GET products endpoint takes 4 parameters:

  • countryCode - required - the 2 character (ISO 3166-1 alpha-2) country code that the user is interested in shipping to
  • currencyCode - optional, defaults to “USD” - the currency in which the prices will be represented
  • languageCode - optional, defaults to “en” - the language to have product data returned in
  • all - optional, defaults to false - whether to return all the products that are orderable in the user’s region, or to only return products the user has set up in the product settings page.

Example:

This request yields following response:

{
  "Products": [
    {
      "Id": 154,
      "UId": "Accessory Pouches",
      "Name": "Accessory Pouches",
      "ShortDescription": "A convenient pouch to hold all of your essentials. It's the perfect bag to carry on its own or within another. ",
      "HasAvailableProductVariants": true,
      "HasProductTemplates": true,
      "IsFeatured": false,
      "IsComingSoon": false,
      "MaxZoom": 1.5,
      "RetailPrice": {
        "Price": 9.84,
        "CurrencyCode": "USD",
        "FormattedPrice": "$9.84",
        "CurrencyFormat": "${1}",
        "CurrencyDigits": 2
      },
      "Info": [
        {
          "Content": [
            "A convenient pouch to hold all of your essentials. It's the perfect bag to carry on its own or within another.  Secure zipper closure keeps make-up, jewelry and small essentials safely in place and within reach. Carry this beauty around for that extra oomph."
          ],
          [...]

So now we have a list of products. You may want to only display products which have Product.IsComingSoon property set to false. This is the indication that a new product is getting ready to be launched, but is not yet available for ordering.

Now that we have a list of products that are available, we ping the API to see which Product Variants underneath them are available.

Next Step: Getting Product Variants (SKUs)