Read-only JSON API