revised object model, products endpoint, and JSON output