unified JSON output with statusCode and data