So using qs is the best method to build these types of filters. Below is an example I am running in a replit.com to quickly get the stringfied query string:
const qs = require('qs');
const query = qs.stringify({
populate: [
'section.image',
'section.productCuratedFilterBoxSmall.image',
//ect
]
}, {
encodeValuesOnly: true,
});
console.log('\n' + query)
which dumps out: populate[0]=section.image&populate[1]=section.productCuratedFilterBoxSmall.image
This is a basic population, there are more advanced ways to build these (which we are working on new docs for). The odd thing with dynamic zones is you can’t specify the specific component you want to populate in the DZ so the population looks more like:
DZ => compo => nested compo/field => ect
It’s quite odd but I’ve confirmed with @alexandrebodin this is intended for DZs