added JSON API endpoint and related contrib modules