How to set HTTP filter body to whole event

I have not tested it, but you could try something like

ruby { code => 'event.set("[@metadata][body]", event.to_hash)' }

then use

body => "%{[@metadata][body]}"

You might also want to set the body_format option.