Magento 2 How to get downloadable products in GraphQL

A Downloadable product type allows you to sell digital products, like eBooks, software applications, music, updates, games, etc. In this tutorial we will show you how to get a downloadable product, also you can show related attributes that are specific to downloadable products can be used when performing a product query.

The DownloadableProduct object contains the following attributes:

  • downloadable_product_links
  • downloadable_product_samples
  • links_purchased_separately
  • links_title

Add the following inline fragment to the output section of your products query to return information specific to downloadable products:

Copy
... on DownloadableProduct {
  items {
   attributes
  }
}

The following products query returns DownloadableProduct information.

Request

Copy
{
  products(filter: { sku: { eq: "240-LV09" } }) {
    total_count
    sort_fields {
      default
      options {
        label
        value
      }
    }
    aggregations {
      count
      attribute_code
      label
      options {
        count
        label
        value
      }
    }
    page_info {
      current_page
      total_pages
      page_size
    }
    items {
      id
      name
      sku
      url_key
      stock_status
      new_from_date
      new_to_date
      special_price
      special_from_date
      special_to_date
      __typename
      short_description {
        html
      }
      description {
        html
      }
      sale
      new
      gender
      attribute_set_id
      meta_title
      meta_keyword
      meta_description
      manufacturer
      size
      color
      country_of_manufacture
      gift_message_available
      image {
        url
        label
      }
      small_image {
        url
        label
      }
      thumbnail {
        url
        label
      }
      swatch_image
      media_gallery {
        url
        label
      }
      categories {
        id
        name
        is_anchor
        url_key
        url_path
        level
        display_mode
        default_sort_by
        description
        breadcrumbs {
          category_id
          category_name
          category_level
          category_url_key
          category_url_path
        }
      }
      price_range {
        minimum_price {
          regular_price {
            value
            currency
          }
          final_price {
            value
            currency
          }
          discount {
            amount_off
            percent_off
          }
        }
        maximum_price {
          regular_price {
            value
            currency
          }
          final_price {
            value
            currency
          }
          discount {
            amount_off
            percent_off
          }
        }
      }
      price_tiers {
        quantity
        final_price {
          value
          currency
        }
      }
      ... on DownloadableProduct {
        links_title
        links_purchased_separately
        downloadable_product_links {
          sample_url
          sort_order
          title
          price
        }
        downloadable_product_samples {
          title
          sort_order
          sample_url
        }
      }
    }
  }
}

Response

Copy
{
  "data": {
    "products": {
      "total_count": 1,
      "sort_fields": {
        "default": "position",
        "options": [
          {
            "label": "Position",
            "value": "position"
          },
          {
            "label": "Product Name",
            "value": "name"
          },
          {
            "label": "Price",
            "value": "price"
          }
        ]
      },
      "aggregations": [
        {
          "count": 1,
          "attribute_code": "price",
          "label": "Price",
          "options": [
            {
              "count": 1,
              "label": "9-*",
              "value": "9_*"
            }
          ]
        },
        {
          "count": 2,
          "attribute_code": "category_id",
          "label": "Category",
          "options": [
            {
              "count": 1,
              "label": "Training",
              "value": "9"
            },
            {
              "count": 1,
              "label": "Video Download",
              "value": "10"
            }
          ]
        },
        {
          "count": 2,
          "attribute_code": "activity",
          "label": "Activity",
          "options": [
            {
              "count": 1,
              "label": "Yoga",
              "value": "5435"
            },
            {
              "count": 1,
              "label": "Athletic",
              "value": "5443"
            }
          ]
        },
        {
          "count": 1,
          "attribute_code": "format",
          "label": "Format",
          "options": [
            {
              "count": 1,
              "label": "Download",
              "value": "5529"
            }
          ]
        }
      ],
      "page_info": {
        "current_page": 1,
        "total_pages": 1,
        "page_size": 20
      },
      "items": [
        {
          "id": 52,
          "name": "Luma Yoga For Life",
          "sku": "240-LV09",
          "url_key": "luma-yoga-for-life",
          "stock_status": "IN_STOCK",
          "new_from_date": null,
          "new_to_date": null,
          "special_price": null,
          "special_from_date": null,
          "special_to_date": null,
          "__typename": "DownloadableProduct",
          "short_description": {
            "html": "<p>\nLuma founder Erin Renny on yoga and longevity: \"I won't promise you'll live longer with yoga. No one can promise that. But your life will be healthier, less stressful, and more physically in tune when you focus on connecting your mind and body or a regular basis. Yoga is my favorite way to express this connection. I want to share the secrets of lifelong yoga with anyone willing to breathe and learn with me.\"\n</p>"
          },
          "description": {
            "html": "<ul><li>Increase strength + flexibility + metabolism</li><li>Burn calories + feel great</li><li>Gain energy + youthfulness + mental wellness</li> </ul><h3 style=\"margin-top: 30px;\">Download description</h3><p><strong style=\"display: block; margin: 20px 0 5px;\">Tone up mind and body</strong>Pro Yoga Instructor and Master Practitioner Marie Peale helps tone and sculpt your physique with her invigorating yet gentle approach.</p><p>You'll learn to use yoga to relax, control stress and increase your calorie-burning capacity, all while exploring traditional and new yoga poses that lengthen and strengthen your full muscular structure.  </p><ul><li>Easy download</li><li>Audio options: Music and instruction or instruction only</li><li>Heart rate techniques explained</li><li>Breathing techniques explained</li><li>Move through exercises at your own pace</li></ul><p>Two 25-minute workout episodes and one 40-minute workout episode with warm-up and cool down:</p><p><strong style=\"display: block; margin: 20px 0 5px;\">Episode 1</strong>Creative, fun session geared toward opening your lungs. Combines stretching and breathing with a focus on hips and shoulders. </p><p><strong style=\"display: block; margin: 20px 0 5px;\">Episode 2</strong>Ramp up the tempo and energy with calorie-burning flows. A stimulating workout introducing the body-sculpting power of yoga.</p><p><strong style=\"display: block; margin: 20px 0 5px;\">Episode 3</strong>Push your fitness reach and stamina with an intense series of standing and floor exercises and poses. End this extra-length session with a meditative cool down.</p><h3 style=\"margin-top: 30px;\">instructor bio</h3><p><strong style=\"display: block; margin: 20px 0 5px;\">About Marie</strong>Marie is a trained martial artist and dancer with a BS in Biological Engineering and over 10 years as a certified yoga teacher. Marie has studied yoga in England, India and, in 2009, at the Ashraqat Ashram Yoga Farm in the United States. She has been teaching full time since then. Her focus on strength and wellness combines a deep knowledge of human biology and motivation guided by unconditional love for her audience.</p>"
          },
          "sale": null,
          "new": null,
          "gender": null,
          "attribute_set_id": 14,
          "meta_title": null,
          "meta_keyword": null,
          "meta_description": "You'll learn to use yoga to relax, control stress and increase your calorie-burning capacity, all while exploring traditional and new yoga poses that lengthen and strengthen your full muscular structure.",
          "manufacturer": null,
          "size": null,
          "color": null,
          "country_of_manufacture": null,
          "gift_message_available": null,
          "image": {
            "url": "http://domain.com/pub/media/catalog/product/cache/1548177c389d2065a93f4e1eaab84907/l/t/lt06.jpg",
            "label": "Luma Yoga For Life"
          },
          "small_image": {
            "url": "http://domain.com/pub/media/catalog/product/cache/1548177c389d2065a93f4e1eaab84907/l/t/lt06.jpg",
            "label": "Luma Yoga For Life"
          },
          "thumbnail": {
            "url": "http://domain.com/pub/media/catalog/product/cache/1548177c389d2065a93f4e1eaab84907/l/t/lt06.jpg",
            "label": "Luma Yoga For Life"
          },
          "swatch_image": null,
          "media_gallery": [
            {
              "url": "http://domain.com/pub/media/catalog/product/cache/1548177c389d2065a93f4e1eaab84907/l/t/lt06.jpg",
              "label": "Image"
            }
          ],
          "categories": [
            {
              "id": 9,
              "name": "Training",
              "is_anchor": 0,
              "url_key": "training",
              "url_path": "training",
              "level": 2,
              "display_mode": "PAGE",
              "default_sort_by": null,
              "description": null,
              "breadcrumbs": null
            },
            {
              "id": 10,
              "name": "Video Download",
              "is_anchor": 1,
              "url_key": "training-video",
              "url_path": "training/training-video",
              "level": 3,
              "display_mode": null,
              "default_sort_by": null,
              "description": null,
              "breadcrumbs": [
                {
                  "category_id": 9,
                  "category_name": "Training",
                  "category_level": 2,
                  "category_url_key": "training",
                  "category_url_path": "training"
                }
              ]
            }
          ],
          "price_range": {
            "minimum_price": {
              "regular_price": {
                "value": 0,
                "currency": "USD"
              },
              "final_price": {
                "value": 0,
                "currency": "USD"
              },
              "discount": {
                "amount_off": 0,
                "percent_off": 0
              }
            },
            "maximum_price": {
              "regular_price": {
                "value": 0,
                "currency": "USD"
              },
              "final_price": {
                "value": 0,
                "currency": "USD"
              },
              "discount": {
                "amount_off": 0,
                "percent_off": 0
              }
            }
          },
          "price_tiers": [],
          "links_title": "Downloads",
          "links_purchased_separately": 1,
          "downloadable_product_links": [
            {
              "sample_url": "http://domain.com/downloadable/download/linkSample/link_id/6/",
              "sort_order": 1,
              "title": "Episode 1",
              "price": 9
            },
            {
              "sample_url": "http://domain.com/downloadable/download/linkSample/link_id/7/",
              "sort_order": 1,
              "title": "Episode 2",
              "price": 9
            },
            {
              "sample_url": "http://domain.com/downloadable/download/linkSample/link_id/8/",
              "sort_order": 1,
              "title": "Episode 3",
              "price": 9
            }
          ],
          "downloadable_product_samples": [
            {
              "title": "Trailer #1",
              "sort_order": 1,
              "sample_url": "http://domain.com/downloadable/download/sample/sample_id/16/"
            },
            {
              "title": "Trailer #2",
              "sort_order": 1,
              "sample_url": "http://domain.com/downloadable/download/sample/sample_id/17/"
            },
            {
              "title": "Trailer #3",
              "sort_order": 1,
              "sample_url": "http://domain.com/downloadable/download/sample/sample_id/18/"
            }
          ]
        }
      ]
    }
  }
}

That's it!!

If you are looking for more GraphQL solutions then check out our another article which is List of GraphQL Queries and Mutations for Magento 2.

I hope this article helps you to find what you were looking for.

Bookmark it for your future reference. Do comment below if you have any other questions on that.

P.S. Do share this article with your team.



Search
Recent Posts
    Tags
    Newsletter
    SocialFollow on Twitter
    Visit now!