The record body, keyed by item_type. product and product_detail carry Alfagift's own fields verbatim - productId, productName, sku, plu, basePrice, finalPrice, discountPercent, discountQty, discountPrice, discountValue, stock, validFlag, image, benefitImages, deliveryType/deliveryInfo, sellerId/sellerAlias, categoryIdLvl0..3 and categoryNameLvl0..3, ageRestriction, incrementQty, cart min/max quantities, and a status object (cycle, type, buttonLabel, infoLabel) - plus four fields this actor derives: productUrl (the public /p/ link), isBuyable, isDiscounted and discountAmount in rupiah. isBuyable matters: Alfagift leaves delisted and out-of-area products in every listing with validFlag false and every price at 0.0, so an average price computed without filtering on it is dragged toward zero by rows that are not for sale. product_detail adds barcode, brandId, brandName, images (Base Image / Small Image / Thumbnail / Media Gallery, each an array of URLs), longDescription and description as HTML, shortDescription as bullet points, discountEndDate, benefits, stockInfoMessage, emptyStockmessage, deliveryMessages and the SEO block - none of which appear in listing rows. category and category_summary carry categoryId, categoryName, categoryLevel, parentId, parentName, childCount, categoryImageFileName, categoryUrl, the SEO meta block, and totalData on summaries. brand carries id, name, imageUrl, alphabet, brandUrl, createdDate/updatedDate and the SEO meta; brand_summary adds totalData. search_summary carries totalData, totalPage, the SEO block and Alfagift's own spelling suggestions for the keyword. search_suggestions carries keyword, suggestions and suggestionCount. promo_banner carries bannerName, bannerImageFileName, startDate, endDate, bannerLocation, deepLink, bannerDeepLinkTap, bannerId and promotionId - and the two ids are genuinely different, since only the one extracted from the deep link works against the promotion endpoint. promo_campaign carries promotionId, campaignName, startDate, endDate, productCount. error carries _error (not_found, unsupported_input, upstream_index_broken, not_a_promotion, parse_failed, fetch_failed, gate_rejected, no_results, run_failed), _errorDetail and _input.