{"action":"created","issue":{"url":"https://api.github.com/repos/edx/edx-platform/issues/8209","labels_url":"https://api.github.com/repos/edx/edx-platform/issues/8209/labels{/name}","comments_url":"https://api.github.com/repos/edx/edx-platform/issues/8209/comments","events_url":"https://api.github.com/repos/edx/edx-platform/issues/8209/events","html_url":"https://github.com/edx/edx-platform/pull/8209","id":81496619,"number":8209,"title":"Course Blocks + Navigation API (feature flagged) for Mobile","user":{"login":"nasthagiri","id":6772826,"avatar_url":"https://avatars.githubusercontent.com/u/6772826?v=3","gravatar_id":"","url":"https://api.github.com/users/nasthagiri","html_url":"https://github.com/nasthagiri","followers_url":"https://api.github.com/users/nasthagiri/followers","following_url":"https://api.github.com/users/nasthagiri/following{/other_user}","gists_url":"https://api.github.com/users/nasthagiri/gists{/gist_id}","starred_url":"https://api.github.com/users/nasthagiri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nasthagiri/subscriptions","organizations_url":"https://api.github.com/users/nasthagiri/orgs","repos_url":"https://api.github.com/users/nasthagiri/repos","events_url":"https://api.github.com/users/nasthagiri/events{/privacy}","received_events_url":"https://api.github.com/users/nasthagiri/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2015-05-27T15:29:38Z","updated_at":"2015-06-12T13:16:52Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/edx/edx-platform/pulls/8209","html_url":"https://github.com/edx/edx-platform/pull/8209","diff_url":"https://github.com/edx/edx-platform/pull/8209.diff","patch_url":"https://github.com/edx/edx-platform/pull/8209.patch"},"body":"This PR takes a stab at providing a server-side API (behind a feature flag) to support:\r\n* custom or native rendering of user-specific course navigation\r\n* user-specific data of the course blocks\r\n* an approach for native rendering of an xBlock by introducing a `student_view_json` method, currently on the video module.\r\n\r\nIn addition, this PR:\r\n* introduces a `has_responsive_ui` property on xBlocks, currently supported by the HTML module and a subset of Capa.\r\n* moves and generalizes the `memoize_in_request_cache` decorator out of the modulestore library so it can be reused elsewhere (in particular, by the video module in this PR)\r\n\r\nThe following pending items are not part of this PR, but are planned for the upcoming weeks:\r\n* Architectural design review: https://openedx.atlassian.net/browse/MA-789\r\n* Additional unit tests for the new endpoints: https://openedx.atlassian.net/browse/MA-789\r\n* Make endpoint performant: https://openedx.atlassian.net/browse/MA-704\r\n\r\nTo try out the API:\r\n* [mobile-demo sandbox - older version of the code](http://mobile-demo.sandbox.edx.org/api/course_structure/v0/courses/course-v1:edX+DemoX+2014/blocks+navigation/?children=False&block_data={%22video%22:{%22profiles%22:[%22mobile_high%22,%22mobile_low%22]}}&block_count=[%22video%22])\r\n* [localhost - latest version of the code](http://localhost:8000/api/course_structure/v0/courses/edX/DemoX/Demo_Course/blocks+navigation/?fields=graded,format,responsive_ui&block_json={%22video%22:{%22profiles%22:[%22mobile_low%22]}}&block_count=video,problem)\r\n\r\n**Reviewers:**\r\n@cpennington and/or @ormsbee \r\n@mekkz "},"comment":{"url":"https://api.github.com/repos/edx/edx-platform/issues/comments/111488986","html_url":"https://github.com/edx/edx-platform/pull/8209#issuecomment-111488986","issue_url":"https://api.github.com/repos/edx/edx-platform/issues/8209","id":111488986,"user":{"login":"doctoryes","id":7285237,"avatar_url":"https://avatars.githubusercontent.com/u/7285237?v=3","gravatar_id":"","url":"https://api.github.com/users/doctoryes","html_url":"https://github.com/doctoryes","followers_url":"https://api.github.com/users/doctoryes/followers","following_url":"https://api.github.com/users/doctoryes/following{/other_user}","gists_url":"https://api.github.com/users/doctoryes/gists{/gist_id}","starred_url":"https://api.github.com/users/doctoryes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/doctoryes/subscriptions","organizations_url":"https://api.github.com/users/doctoryes/orgs","repos_url":"https://api.github.com/users/doctoryes/repos","events_url":"https://api.github.com/users/doctoryes/events{/privacy}","received_events_url":"https://api.github.com/users/doctoryes/received_events","type":"User","site_admin":false},"created_at":"2015-06-12T13:16:52Z","updated_at":"2015-06-12T13:16:52Z","body":"@nasthagiri OK - if management and product have agreed on this approach, then I'll go ahead and approve this PR, on the obvious condition that the performance issues should be dealt with before the API goes live.\r\n\r\nAgain, this is solid work! :+1: "}}