Component media fields not populated since upgrade

I have a page content type containing a dynamic zone, which can comprise multiple component fields (shortened for brevity):

{
  "kind": "collectionType",
  "collectionName": "pages",
  "attributes": {
    "title": {
      "type": "string",
      "required": true
    },
    "page_content": {
      "type": "dynamiczone",
      "components": [
        "text.page-intro",
        "text.intro-section",
        "text.body-text",
        "media.image-carousel",
        "media.you-tube"
      ]
    }
  }
}

One such component is an image carousel, containing just an images field:

{
    "collectionName": "components_media_image_carousels",
    "info": {
      "displayName": "Image Carousel"
    },
    "options": {},
    "attributes": {
      "images": {
        "allowedTypes": [
          "images"
        ],
        "type": "media",
        "multiple": true,
        "required": true
      }
    }
  }

In previous (4.7?) Strapi version, this query:

/api/pages?populate[page_content][populate]=*

would result in a populated images field in the response JSON:

{
    "id": 2,
    "__component": "media.image-carousel",
    "images": {
        "data": [
            {
                "id": 31,
                "attributes": {
                    "name": "1.jpg",
                    "alternativeText": null,
                    [SNIP]
                }
            }
        ]
    }
}

I’ve upgraded to 4.15.0 and cannot get anything other than this response for the carousel component:

{
    "id": 2,
    "__component": "media.image-carousel"
}

Other component fields on the page are fully populated.

I’m looking at the docs and I clearly don’t understand them.

I’ve tried:

  • &populate[page_content][populate]=*
  • populate=page_content.media.image-carousel.images
  • &populate[0]=page_content&populate[1]=page_content.media.image-carousel&populate[2]=page_content.media.image-carousel.images

What’s the correct query to populate the carousel images data?

Ah… seek and ye shall find on Stackoverflow. The correct query is, of course:

populate=page_content.images

You don’t need the component name in there. It’s just the name of the dynamic zone plus the name of the field you want populated. No idea why that’s only necessary for media, but :shrug: