Search code examples
shopware6shopware6-api

Shopware 6 API / Product Listing / How to add available color variants for each product on the response


API Request /store-api/product-listing/{categoryId}

I want each product in the API response to have available color variants. Because I want to show color variants on the product list page. But currently this data is not provided by the shopware 6 api.

I've tried to add this data by using associations but it didnt help.

Request Body

{
    "includes": {
    "product": ["id", "productNumber", "cover", "options"]
  },
    "associations": {
        "options": {
            "media": []
        }
    }
}

Solution

  • The request body looks to be correct. If the product is a variant then it should have content for options.

    To verify try the following request body:

    {
      "limit": 1,
      "includes": {
        "product": ["id", "productNumber", "options"],
        "property_group_option": ["name", "group"],
        "property_group": ["name"]
      },
      "associations": {
        "options": {
          "associations": {
            "group": []
          }
        }
      },
      "filters": [
        {
          "type": "not", 
          "operator": "and",
          "queries": [
            {
              "type": "equals",
              "field": "parentId",
              "value": null
            }
          ]
        }
      ]
    }
    

    This should yield a single variant.

    Response should look similar to this:

    {
        "entity": "product",
        "total": 1,
        "aggregations": [],
        "page": 1,
        "limit": 1,
        "elements": [
            {
                "productNumber": "10042.1",
                "options": [
                    {
                        "name": "linen",
                        "group": {
                            "name": "textile",
                            "apiAlias": "property_group"
                        },
                        "apiAlias": "property_group_option"
                    },
                    {
                        "name": "35",
                        "group": {
                            "name": "size",
                            "apiAlias": "property_group"
                        },
                        "apiAlias": "property_group_option"
                    },
                    {
                        "name": "chartreuse",
                        "group": {
                            "name": "shirt-color",
                            "apiAlias": "property_group"
                        },
                        "apiAlias": "property_group_option"
                    }
                ],
                "id": "0002ea44c49c41ecb91c43e7e49e422d",
                "apiAlias": "product"
            }
        ],
        "states": [],
        "apiAlias": "dal_entity_search_result"
    }