Wire-shape aliases shared by typed response structs.
Nested JSON objects deliberately remain string-keyed maps for compatibility. Elixir typespecs cannot enumerate individual binary keys, so these aliases describe the authoritative upstream value domains without claiming atom keys or converting child objects into structs.
Summary
Types
@type product_collection_group() :: %{ optional(String.t()) => String.t() | boolean() | [product_collection_product()] | nil }