Skip to content

Conversation

@brianjbuck-wgu
Copy link
Contributor

@brianjbuck-wgu brianjbuck-wgu commented Jan 7, 2026

Description

Implements a pure JSON REST API for managing content group configurations, replacing the legacy HTML+JSON hybrid endpoint with a RESTful interface.

Resolves: (#37848)

@openedx-webhooks openedx-webhooks added the open-source-contribution PR author is not from Axim or 2U label Jan 7, 2026
@openedx-webhooks
Copy link

openedx-webhooks commented Jan 7, 2026

Thanks for the pull request, @brianjbuck-wgu!

This repository is currently maintained by @openedx/wg-maintenance-edx-platform.

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 approval

If you haven't already, check this list to see if your contribution needs to go through the product review process.

  • If it does, you'll need to submit a product proposal for your contribution, and have it reviewed by the Product Working Group.
    • This process (including the steps you'll need to take) is documented here.
  • If it doesn't, simply proceed with the next step.
🔘 Provide context

To 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:

  • Dependencies

    This PR must be merged before / after / at the same time as ...

  • Blockers

    This PR is waiting for OEP-1234 to be accepted.

  • Timeline information

    This PR must be merged by XX date because ...

  • Partner information

    This is for a course on edx.org.

  • Supporting documentation
  • Relevant Open edX discussion forum threads
🔘 Get a green build

If one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green.

Details
Where 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:

  • The size and impact of the changes that it introduces
  • The need for product review
  • Maintenance status of the parent repository

💡 As a result it may take up to several weeks or months to complete a review and merge your PR.

@github-project-automation github-project-automation bot moved this to Needs Triage in Contributions Jan 7, 2026
@mphilbrick211 mphilbrick211 added the mao-onboarding Reviewing this will help onboard devs from an Axim mission-aligned organization (MAO). label Jan 8, 2026
@mphilbrick211 mphilbrick211 moved this from Needs Triage to Waiting on Author in Contributions Jan 8, 2026
@brianjbuck-wgu brianjbuck-wgu force-pushed the feature/37848-instructor-dashboard-extra-content-groups branch from de18b6b to 8955f91 Compare January 8, 2026 16:50
@brianjbuck-wgu brianjbuck-wgu requested a review from Copilot January 8, 2026 16:55
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements a pure JSON REST API for managing content group configurations in the instructor dashboard, replacing the legacy HTML+JSON hybrid endpoint with a modern RESTful interface.

Key changes:

  • Added two new GET endpoints for listing and retrieving content group configurations
  • Introduced serializers to ensure consistent JSON structure for content groups API responses
  • Comprehensive test coverage for authentication, permissions, and data filtering scenarios

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
cms/djangoapps/contentstore/rest_api/v2/views/group_configurations.py New API view module implementing list and detail endpoints for content group configurations with proper error handling
cms/djangoapps/contentstore/rest_api/v2/serializers/group_configurations.py Serializers defining the JSON schema for groups, configurations, and list responses
cms/djangoapps/contentstore/rest_api/v2/serializers/init.py Updated exports to include new group configuration serializers
cms/djangoapps/contentstore/rest_api/v2/urls.py Added URL patterns for the two new content groups endpoints
cms/djangoapps/contentstore/rest_api/v2/views/tests/test_group_configurations.py Comprehensive test suite covering authentication, filtering, error cases, and permissions

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@brianjbuck-wgu brianjbuck-wgu force-pushed the feature/37848-instructor-dashboard-extra-content-groups branch 3 times, most recently from 365364a to 1b514ee Compare January 8, 2026 18:52
@brianjbuck-wgu brianjbuck-wgu marked this pull request as ready for review January 8, 2026 20:57
@brianjbuck-wgu brianjbuck-wgu changed the title Instructor Dashboard - Add Content Groups V2 JSON REST API feat: Instructor Dashboard - Add Content Groups V2 JSON REST API Jan 9, 2026
Copy link
Contributor

@dwong2708 dwong2708 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good overall — I just have a few questions.

to show enrollment tracks and experiment groups.
"""

all_group_configurations = ContentGroupConfigurationSerializer(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’m wondering if we’ll only use these fields, since the UI seems to only need the content group name.


# Find the configuration
partition = None
for p in course.user_partitions:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this configuration be done at the API level? If the data comes from a queryset, we might need to filter it there.

@diana-villalvazo-wgu
Copy link

this won't be under a instructor/* endpoint?

@brianjbuck-wgu
Copy link
Contributor Author

this won't be under a instructor/* endpoint?

@diana-villalvazo-wgu, The original v1 endpoint as a CMS endpoint, not an instructor API endpoint so I followed that convention.

Copy link
Contributor

@feanil feanil left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like there is already a CourseGroupConfigurationsView rest API. Is there a reason that one doesn't meet our needs? It looks like it returns just json data. Also, was there an ADR PR related to this endpoint that I missed? Can you link to it in the description if it exists?

@brianjbuck-wgu brianjbuck-wgu force-pushed the feature/37848-instructor-dashboard-extra-content-groups branch from 1b514ee to b21c0fb Compare January 15, 2026 21:09
@brianjbuck-wgu
Copy link
Contributor Author

@diana-villalvazo-wgu, I refactored the code to be in LMS instead of CMS.

@brianjbuck-wgu brianjbuck-wgu force-pushed the feature/37848-instructor-dashboard-extra-content-groups branch 6 times, most recently from 5b12a16 to ed0904f Compare January 15, 2026 23:13
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (1)

lms/djangoapps/instructor/views/api_v2.py:1

  • The all_group_configurations field is always returning a single-element list, but the function get_cohorted_user_partition only returns cohort-scheme partitions. If there are multiple cohort-scheme partitions in course.user_partitions, only the first one will be returned. Consider iterating through all course.user_partitions and collecting all partitions with scheme='cohort' to ensure all content groups are included in the response.
"""

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@brianjbuck-wgu brianjbuck-wgu force-pushed the feature/37848-instructor-dashboard-extra-content-groups branch 2 times, most recently from 86ee9ee to 1d7f4b4 Compare January 16, 2026 17:09
@brianjbuck-wgu
Copy link
Contributor Author

It looks like there is already a CourseGroupConfigurationsView rest API. Is there a reason that one doesn't meet our needs? It looks like it returns just json data. Also, was there an ADR PR related to this endpoint that I missed? Can you link to it in the description if it exists?

@feanil, the make lint-imports prevents cross-importation between LMS and CMS apps. CourseGroupConfigurationsView is a CMS view while the instructor dashboard is under LMS.

- Add GET /api/instructor/v2/courses/{course_id}/group_configurations
- Add GET /api/instructor/v2/courses/{course_id}/group_configurations/{id}
- Create shared constants module for course groups
- Add serializers for content group configurations
- Add unit tests for new endpoints
- Add OpenAPI spec documentation
@brianjbuck-wgu brianjbuck-wgu force-pushed the feature/37848-instructor-dashboard-extra-content-groups branch from b086615 to 9503df1 Compare January 20, 2026 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

mao-onboarding Reviewing this will help onboard devs from an Axim mission-aligned organization (MAO). open-source-contribution PR author is not from Axim or 2U

Projects

Status: Waiting on Author

Development

Successfully merging this pull request may close these issues.

6 participants