Designing APIs for Mobile Clients: Bandwidth, Latency, and Offline