docs(decisions): add ADR for api endpoint for user exam due dates - #37865
docs(decisions): add ADR for api endpoint for user exam due dates#37865cmltaWt0 wants to merge 1 commit into
Conversation
|
Thanks for the pull request, @cmltaWt0! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
88eb14b to
8bf1cc6
Compare
| * **Data Storage**: | ||
| * Use ``edx-when.ContentDate`` to store canonical due dates published from course metadata. | ||
| * Use ``edx-when.UserDate`` to store user-specific overrides, including personalized schedules (self-paced) and instructor-granted extensions. | ||
| * **Service Layer**: Implement a dedicated Python service layer within ``edx-when`` to resolve dates. This service will merge ``ContentDate`` and ``UserDate`` records and apply visibility filtering. This ensures the logic is reusable by the LMS, background tasks, and the REST API. | ||
| * **API Endpoint**: Create a new REST API endpoint (proposed at ``/api/edx_when/v1/user-dates/``) that returns a merged, filtered, and sorted list of upcoming due dates for the authenticated user across all enrollments. | ||
| * **Encapsulation**: The REST API will reside within ``edx-when`` to keep it co-located with the models, provided that it does not require circular dependencies on ``edx-platform``. |
There was a problem hiding this comment.
How and when will the data get populated?
|
@taimoor-ahmed-1 can you take a look at this and see if it aligns with the other API work you and your team are doing? |
|
Hi @taimoor-ahmed-1! Are you able to take a look at this for us? |
| * Use ``edx-when.ContentDate`` to store canonical due dates published from course metadata. | ||
| * Use ``edx-when.UserDate`` to store user-specific overrides, including personalized schedules (self-paced) and instructor-granted extensions. | ||
| * **Service Layer**: Implement a dedicated Python service layer within ``edx-when`` to resolve dates. This service will merge ``ContentDate`` and ``UserDate`` records and apply visibility filtering. This ensures the logic is reusable by the LMS, background tasks, and the REST API. | ||
| * **API Endpoint**: Create a new REST API endpoint (proposed at ``/api/edx_when/v1/user-dates/``) that returns a merged, filtered, and sorted list of upcoming due dates for the authenticated user across all enrollments. |
There was a problem hiding this comment.
url convention stated here would be violated.
we could have: /api/date/v1/user_dates/ or /api/schedule/v1/due_dates/
|
|
||
| * **CCX Courses**: Custom Courses for edX (CCX) are excluded from this implementation due to their unique override structure and management complexity. | ||
|
|
||
| Consequences |
There was a problem hiding this comment.
We could mention here that hosting the endpoint in edx-when would mean no edx-platform CI coverage if we're going with that.
Description
Create a new ADR for API Endpoint for User Exam Due Dates in the Mobile App.
Supporting information
This ADR is a conversion of #36787 to a formtn ADR format.