From 5e1fffe3ab44b9a22d24320de10bd39cf2089385 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Fri, 7 Jun 2024 16:26:11 -0400 Subject: [PATCH 1/4] fix: Remove the drf-yasg constraint. The reason is very unclear so dropping it to see if we can fix the api docs build in 3.11 --- requirements/constraints.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 226ffe7c3f7e..8a850221c736 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -76,9 +76,6 @@ social-auth-app-django==5.0.0 urllib3<2.0.0 -# greater version has dropped few dependencies. Fix this in other ticket. -drf-yasg<1.21.6 - # Adding pin to avoid any major upgrade djangorestframework<3.15.0 From 1d2569be141862b3e20059e9b52ebff7495a7033 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Mon, 10 Jun 2024 11:28:10 -0400 Subject: [PATCH 2/4] build: Correct the make targets for building the docs. --- Makefile | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 39b101907e1c..098236fed8cb 100644 --- a/Makefile +++ b/Makefile @@ -27,17 +27,12 @@ clean: ## archive and delete most git-ignored files SWAGGER = docs/lms-openapi.yaml -docs: guides technical-docs ## build all the developer documentation for this repository +docs: swagger guides technical-docs ## build the documentation for this repository + $(MAKE) -C docs html swagger: ## generate the swagger.yaml file DJANGO_SETTINGS_MODULE=docs.docs_settings python manage.py lms generate_swagger --generator-class=edx_api_doc_tools.ApiSchemaGenerator -o $(SWAGGER) -technical-docs: ## build the technical docs - $(MAKE) -C docs/technical html - -guides: swagger ## build the developer guide docs - cd docs/guides; make clean html - extract_translations: ## extract localizable strings from sources i18n_tool extract --no-segment -v cd conf/locale/en/LC_MESSAGES && msgcat djangojs.po underscore.po -o djangojs.po From b4c28d6c23feaf0a760d0dcdbbb4e5d77c9b5798 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Mon, 10 Jun 2024 11:28:26 -0400 Subject: [PATCH 3/4] chore: Update the openapi spec generated by drf-yasg. --- docs/lms-openapi.yaml | 6011 ++++++++++++++++++++++------------------- 1 file changed, 3301 insertions(+), 2710 deletions(-) diff --git a/docs/lms-openapi.yaml b/docs/lms-openapi.yaml index 9d95b947aef7..38c52e737e19 100644 --- a/docs/lms-openapi.yaml +++ b/docs/lms-openapi.yaml @@ -2,17 +2,19 @@ swagger: '2.0' info: title: Open edX API description: APIs for access to Open edX information + contact: + email: api-access@example.com version: v1 basePath: /api consumes: - - application/json +- application/json produces: - - application/json +- application/json securityDefinitions: Basic: type: basic security: - - Basic: [] +- Basic: [] paths: /agreements/v1/integrity_signature/{course_id}: get: @@ -32,7 +34,7 @@ paths: '200': description: '' tags: - - agreements + - agreements post: operationId: agreements_v1_integrity_signature_create description: |- @@ -52,12 +54,38 @@ paths: '201': description: '' tags: - - agreements + - agreements parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string + /agreements/v1/lti_pii_signature/{course_id}: + post: + operationId: agreements_v1_lti_pii_signature_create + description: |- + Create an LTI PII signature for the requesting user and course. If a signature + already exists, returns the existing signature instead of creating a new one. + + /api/agreements/v1/lti_pii_signature/{course_id} + + Example response: + { + username: "janedoe", + course_id: "org.2/course_2/Run_2", + created_at: "2021-04-23T18:25:43.511Z" + } + parameters: [] + responses: + '201': + description: '' + tags: + - agreements + parameters: + - name: course_id + in: path + required: true + type: string /bookmarks/v1/bookmarks/: get: operationId: bookmarks_v1_bookmarks_list @@ -81,29 +109,29 @@ paths: GET /api/bookmarks/v1/bookmarks/?course_id={course_id1}&fields=display_name,path parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer - - name: course_id - in: query - description: The id of the course to limit the list - type: string - - name: fields - in: query - description: 'The fields to return: display_name, path.' - type: string + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer + - name: course_id + in: query + description: The id of the course to limit the list + type: string + - name: fields + in: query + description: 'The fields to return: display_name, path.' + type: string responses: '200': description: '' tags: - - bookmarks + - bookmarks post: operationId: bookmarks_v1_bookmarks_create summary: Create a new bookmark for a user. @@ -123,7 +151,7 @@ paths: '201': description: '' tags: - - bookmarks + - bookmarks parameters: [] /bookmarks/v1/bookmarks/{username},{usage_id}/: get: @@ -138,7 +166,7 @@ paths: '200': description: '' tags: - - bookmarks + - bookmarks delete: operationId: bookmarks_v1_bookmarks_delete description: DELETE /api/bookmarks/v1/bookmarks/{username},{usage_id} @@ -147,16 +175,16 @@ paths: '204': description: '' tags: - - bookmarks + - bookmarks parameters: - - name: usage_id - in: path - required: true - type: string - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string + - name: usage_id + in: path + required: true + type: string /bulk_enroll/v1/bulk_enroll: post: operationId: bulk_enroll_v1_bulk_enroll_create @@ -205,7 +233,7 @@ paths: '201': description: '' tags: - - bulk_enroll + - bulk_enroll parameters: [] /ccx/v0/ccx/: get: @@ -213,23 +241,23 @@ paths: summary: Gets a list of CCX Courses for a given Master Course. description: Additional parameters are allowed for pagination purposes. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -247,23 +275,23 @@ paths: items: $ref: '#/definitions/CCXCourse' tags: - - ccx + - ccx post: operationId: ccx_v0_ccx_create description: Creates a new CCX course for a given Master Course. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/CCXCourse' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/CCXCourse' responses: '201': description: '' schema: $ref: '#/definitions/CCXCourse' tags: - - ccx + - ccx parameters: [] /ccx/v0/ccx/{ccx_course_id}/: get: @@ -276,23 +304,23 @@ paths: schema: $ref: '#/definitions/CCXCourse' tags: - - ccx + - ccx patch: operationId: ccx_v0_ccx_partial_update description: Modifies a CCX course. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/CCXCourse' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/CCXCourse' responses: '200': description: '' schema: $ref: '#/definitions/CCXCourse' tags: - - ccx + - ccx delete: operationId: ccx_v0_ccx_delete description: Deletes a CCX course. @@ -301,12 +329,12 @@ paths: '204': description: '' tags: - - ccx + - ccx parameters: - - name: ccx_course_id - in: path - required: true - type: string + - name: ccx_course_id + in: path + required: true + type: string /certificates/v0/certificates/{username}/: get: operationId: certificates_v0_certificates_read @@ -361,21 +389,21 @@ paths: "grade": "0.98" }] parameters: - - name: username - in: path - description: The users to get certificates for - type: string - required: true + - name: username + in: path + description: The users to get certificates for + type: string + required: true responses: '200': description: '' tags: - - certificates + - certificates parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /certificates/v0/certificates/{username}/courses/{course_id}/: get: operationId: certificates_v0_certificates_courses_read @@ -386,16 +414,16 @@ paths: '200': description: '' tags: - - certificates + - certificates parameters: - - name: course_id - in: path - required: true - type: string - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string + - name: course_id + in: path + required: true + type: string /change_email_settings: post: operationId: change_email_settings_create @@ -405,7 +433,7 @@ paths: '201': description: '' tags: - - change_email_settings + - change_email_settings parameters: [] /cohorts/v1/courses/{course_key_string}/cohorts/{cohort_id}: get: @@ -419,17 +447,17 @@ paths: type: object properties: {} tags: - - cohorts + - cohorts post: operationId: cohorts_v1_courses_cohorts_create description: Endpoint to create a new cohort, must not include cohort_id. parameters: - - name: data - in: body - required: true - schema: - type: object - properties: {} + - name: data + in: body + required: true + schema: + type: object + properties: {} responses: '201': description: '' @@ -437,17 +465,17 @@ paths: type: object properties: {} tags: - - cohorts + - cohorts patch: operationId: cohorts_v1_courses_cohorts_partial_update description: Endpoint to update a cohort name and/or assignment type. parameters: - - name: data - in: body - required: true - schema: - type: object - properties: {} + - name: data + in: body + required: true + schema: + type: object + properties: {} responses: '200': description: '' @@ -455,16 +483,16 @@ paths: type: object properties: {} tags: - - cohorts + - cohorts parameters: - - name: cohort_id - in: path - required: true - type: string - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string + - name: cohort_id + in: path + required: true + type: string /cohorts/v1/courses/{course_key_string}/cohorts/{cohort_id}/users/{username}: get: operationId: cohorts_v1_courses_cohorts_users_read @@ -476,23 +504,23 @@ paths: schema: $ref: '#/definitions/CohortUsersAPI' tags: - - cohorts + - cohorts post: operationId: cohorts_v1_courses_cohorts_users_create description: Add given users to the cohort. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/CohortUsersAPI' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/CohortUsersAPI' responses: '201': description: '' schema: $ref: '#/definitions/CohortUsersAPI' tags: - - cohorts + - cohorts delete: operationId: cohorts_v1_courses_cohorts_users_delete description: Removes and user from a specific cohort. @@ -501,20 +529,20 @@ paths: '204': description: '' tags: - - cohorts - parameters: - - name: cohort_id - in: path - required: true - type: string - - name: course_key_string - in: path - required: true - type: string - - name: username - in: path - required: true - type: string + - cohorts + parameters: + - name: course_key_string + in: path + required: true + type: string + - name: cohort_id + in: path + required: true + type: string + - name: username + in: path + required: true + type: string /cohorts/v1/courses/{course_key_string}/users: post: operationId: cohorts_v1_courses_users_create @@ -527,12 +555,12 @@ paths: '201': description: '' tags: - - cohorts + - cohorts parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /cohorts/v1/settings/{course_key_string}: get: operationId: cohorts_v1_settings_read @@ -545,17 +573,17 @@ paths: type: object properties: {} tags: - - cohorts + - cohorts put: operationId: cohorts_v1_settings_update description: Endpoint to set the course cohort settings. parameters: - - name: data - in: body - required: true - schema: - type: object - properties: {} + - name: data + in: body + required: true + schema: + type: object + properties: {} responses: '200': description: '' @@ -563,12 +591,12 @@ paths: type: object properties: {} tags: - - cohorts + - cohorts parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /commerce/v0/baskets/: post: operationId: commerce_v0_baskets_create @@ -578,7 +606,7 @@ paths: '201': description: '' tags: - - commerce + - commerce parameters: [] /commerce/v0/baskets/{basket_id}/order/: get: @@ -589,12 +617,12 @@ paths: '200': description: '' tags: - - commerce + - commerce parameters: - - name: basket_id - in: path - required: true - type: string + - name: basket_id + in: path + required: true + type: string /commerce/v1/courses/: get: operationId: commerce_v1_courses_list @@ -608,7 +636,7 @@ paths: items: $ref: '#/definitions/commerce.Course' tags: - - commerce + - commerce parameters: [] /commerce/v1/courses/{course_id}/: get: @@ -621,44 +649,44 @@ paths: schema: $ref: '#/definitions/commerce.Course' tags: - - commerce + - commerce put: operationId: commerce_v1_courses_update description: Retrieve, update, or create courses/modes. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/commerce.Course' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/commerce.Course' responses: '200': description: '' schema: $ref: '#/definitions/commerce.Course' tags: - - commerce + - commerce patch: operationId: commerce_v1_courses_partial_update description: Retrieve, update, or create courses/modes. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/commerce.Course' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/commerce.Course' responses: '200': description: '' schema: $ref: '#/definitions/commerce.Course' tags: - - commerce + - commerce parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /commerce/v1/orders/{number}/: get: operationId: commerce_v1_orders_read @@ -668,12 +696,12 @@ paths: '200': description: '' tags: - - commerce + - commerce parameters: - - name: number - in: path - required: true - type: string + - name: number + in: path + required: true + type: string /completion/v1/completion-batch: post: operationId: completion_v1_completion-batch_create @@ -709,7 +737,7 @@ paths: '201': description: '' tags: - - completion + - completion parameters: [] /completion/v1/subsection-completion/{username}/{course_key}/{subsection_id}: get: @@ -720,20 +748,20 @@ paths: '200': description: '' tags: - - completion + - completion parameters: - - name: course_key - in: path - required: true - type: string - - name: subsection_id - in: path - required: true - type: string - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string + - name: course_key + in: path + required: true + type: string + - name: subsection_id + in: path + required: true + type: string /course_experience/v1/course_deadlines_info/{course_key_string}: get: operationId: course_experience_v1_course_deadlines_info_read @@ -767,12 +795,12 @@ paths: schema: $ref: '#/definitions/CourseDeadlinesMobile' tags: - - course_experience + - course_experience parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /course_experience/v1/reset_course_deadlines: post: operationId: course_experience_v1_reset_course_deadlines_create @@ -792,7 +820,7 @@ paths: '201': description: '' tags: - - course_experience + - course_experience parameters: [] /course_home/course_metadata/{course_key_string}: get: @@ -840,12 +868,12 @@ paths: schema: $ref: '#/definitions/CourseHomeMetadata' tags: - - course_home + - course_home parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /course_home/dates/{course_key_string}: get: operationId: course_home_dates_read @@ -884,6 +912,7 @@ paths: * 200 on success with above fields. * 401 if the user is not authenticated. + * 403 if the user does not have access to the course. * 404 if the course is not available or cannot be seen. parameters: [] responses: @@ -892,12 +921,12 @@ paths: schema: $ref: '#/definitions/DatesTab' tags: - - course_home + - course_home parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /course_home/dismiss_welcome_message: post: operationId: course_home_dismiss_welcome_message_create @@ -907,8 +936,26 @@ paths: '201': description: '' tags: - - course_home + - course_home parameters: [] + /course_home/navigation/{course_key_string}: + get: + operationId: course_home_navigation_read + description: Get the visible course blocks (from course to vertical types) for + the given course. + parameters: [] + responses: + '200': + description: '' + schema: + $ref: '#/definitions/CourseBlock' + tags: + - course_home + parameters: + - name: course_key_string + in: path + required: true + type: string /course_home/outline/{course_key_string}: get: operationId: course_home_outline_read @@ -922,7 +969,9 @@ paths: **Response Values** - Body consists of the following fields: + Body consists of two possible shapes. + + For a good 200 response, the response will include: access_expiration: An object detailing when access to this course will expire expiration_date: (str) When the access expires, in ISO 8601 notation @@ -989,9 +1038,19 @@ paths: welcome_message_html: (str) Raw HTML for the course updates banner user_has_passing_grade: (bool) Whether the user currently is passing the course + If the learner does not have access to the course for a specific reason and should be redirected this + view will return a 403 and the following data: + + url: (str) The URL to which the user should be redirected + error_code: (str) A system identifier for the reason the user is being redirected + developer_message: (str) A message explaining why the user is being redirected, + intended for developer debugging. + user_message: (str) A message explaining why the user is being redirected, intended to be shown to the user. + **Returns** - * 200 on success with above fields. + * 200 on success. + * 403 if the user does not currently have access to the course and should be redirected. * 404 if the course is not available or cannot be seen. parameters: [] responses: @@ -1000,12 +1059,12 @@ paths: schema: $ref: '#/definitions/OutlineTab' tags: - - course_home + - course_home parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /course_home/progress/{course_key_string}: get: operationId: course_home_progress_read @@ -1095,6 +1154,7 @@ paths: * 200 on success with above fields. * 401 if the user is not authenticated or not enrolled. + * 403 if the user does not have access to the course. * 404 if the course is not available or cannot be seen. parameters: [] responses: @@ -1103,12 +1163,12 @@ paths: schema: $ref: '#/definitions/ProgressTab' tags: - - course_home + - course_home parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /course_home/progress/{course_key_string}/{student_id}: get: operationId: course_home_progress_read @@ -1198,6 +1258,7 @@ paths: * 200 on success with above fields. * 401 if the user is not authenticated or not enrolled. + * 403 if the user does not have access to the course. * 404 if the course is not available or cannot be seen. parameters: [] responses: @@ -1206,16 +1267,16 @@ paths: schema: $ref: '#/definitions/ProgressTab' tags: - - course_home + - course_home parameters: - - name: course_key_string - in: path - required: true - type: string - - name: student_id - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string + - name: student_id + in: path + required: true + type: string /course_home/save_course_goal: post: operationId: course_home_save_course_goal_create @@ -1225,7 +1286,7 @@ paths: '201': description: '' tags: - - course_home + - course_home parameters: [] /course_home/unsubscribe_from_course_goal/{token}: post: @@ -1250,12 +1311,12 @@ paths: '201': description: '' tags: - - course_home + - course_home parameters: - - name: token - in: path - required: true - type: string + - name: token + in: path + required: true + type: string /course_home/v1/course_metadata/{course_key_string}: get: operationId: course_home_v1_course_metadata_read @@ -1302,12 +1363,12 @@ paths: schema: $ref: '#/definitions/CourseHomeMetadata' tags: - - course_home + - course_home parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /course_home/v1/dates/{course_key_string}: get: operationId: course_home_v1_dates_read @@ -1346,6 +1407,7 @@ paths: * 200 on success with above fields. * 401 if the user is not authenticated. + * 403 if the user does not have access to the course. * 404 if the course is not available or cannot be seen. parameters: [] responses: @@ -1354,12 +1416,12 @@ paths: schema: $ref: '#/definitions/DatesTab' tags: - - course_home + - course_home parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /course_home/v1/dismiss_welcome_message: post: operationId: course_home_v1_dismiss_welcome_message_create @@ -1369,8 +1431,26 @@ paths: '201': description: '' tags: - - course_home + - course_home parameters: [] + /course_home/v1/navigation/{course_key_string}: + get: + operationId: course_home_v1_navigation_read + description: Get the visible course blocks (from course to vertical types) for + the given course. + parameters: [] + responses: + '200': + description: '' + schema: + $ref: '#/definitions/CourseBlock' + tags: + - course_home + parameters: + - name: course_key_string + in: path + required: true + type: string /course_home/v1/outline/{course_key_string}: get: operationId: course_home_v1_outline_read @@ -1384,7 +1464,9 @@ paths: **Response Values** - Body consists of the following fields: + Body consists of two possible shapes. + + For a good 200 response, the response will include: access_expiration: An object detailing when access to this course will expire expiration_date: (str) When the access expires, in ISO 8601 notation @@ -1451,9 +1533,19 @@ paths: welcome_message_html: (str) Raw HTML for the course updates banner user_has_passing_grade: (bool) Whether the user currently is passing the course + If the learner does not have access to the course for a specific reason and should be redirected this + view will return a 403 and the following data: + + url: (str) The URL to which the user should be redirected + error_code: (str) A system identifier for the reason the user is being redirected + developer_message: (str) A message explaining why the user is being redirected, + intended for developer debugging. + user_message: (str) A message explaining why the user is being redirected, intended to be shown to the user. + **Returns** - * 200 on success with above fields. + * 200 on success. + * 403 if the user does not currently have access to the course and should be redirected. * 404 if the course is not available or cannot be seen. parameters: [] responses: @@ -1462,12 +1554,12 @@ paths: schema: $ref: '#/definitions/OutlineTab' tags: - - course_home + - course_home parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /course_home/v1/progress/{course_key_string}: get: operationId: course_home_v1_progress_read @@ -1557,6 +1649,7 @@ paths: * 200 on success with above fields. * 401 if the user is not authenticated or not enrolled. + * 403 if the user does not have access to the course. * 404 if the course is not available or cannot be seen. parameters: [] responses: @@ -1565,12 +1658,12 @@ paths: schema: $ref: '#/definitions/ProgressTab' tags: - - course_home + - course_home parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /course_home/v1/progress/{course_key_string}/{student_id}: get: operationId: course_home_v1_progress_read @@ -1660,6 +1753,7 @@ paths: * 200 on success with above fields. * 401 if the user is not authenticated or not enrolled. + * 403 if the user does not have access to the course. * 404 if the course is not available or cannot be seen. parameters: [] responses: @@ -1668,16 +1762,16 @@ paths: schema: $ref: '#/definitions/ProgressTab' tags: - - course_home + - course_home parameters: - - name: course_key_string - in: path - required: true - type: string - - name: student_id - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string + - name: student_id + in: path + required: true + type: string /course_home/v1/save_course_goal: post: operationId: course_home_v1_save_course_goal_create @@ -1687,7 +1781,7 @@ paths: '201': description: '' tags: - - course_home + - course_home parameters: [] /course_home/v1/unsubscribe_from_course_goal/{token}: post: @@ -1712,23 +1806,23 @@ paths: '201': description: '' tags: - - course_home + - course_home parameters: - - name: token - in: path - required: true - type: string + - name: token + in: path + required: true + type: string /course_live/course/{course_id}/: get: operationId: course_live_course_read summary: Handle HTTP/GET requests description: Handle HTTP/GET requests parameters: - - name: course_id - in: path - description: The course for which to get provider list - type: string - required: true + - name: course_id + in: path + description: The course for which to get provider list + type: string + required: true responses: '200': description: '' @@ -1741,41 +1835,41 @@ paths: '404': description: The requested course does not exist. tags: - - course_live + - course_live post: operationId: course_live_course_create summary: Handle HTTP/POST requests description: Handle HTTP/POST requests parameters: - - name: course_id - in: path - description: The course for which to get provider list - type: string - required: true - - name: lti_1p1_client_key - in: path - description: The LTI provider's client key - type: string - required: true - - name: lti_1p1_client_secret - in: path - description: The LTI provider's client secretL - type: string - required: true - - name: lti_1p1_launch_url - in: path - description: The LTI provider's launch URL - type: string - required: true - - name: provider_type - in: path - description: The LTI provider's launch URL - type: string - required: true - - name: lti_config - in: query - description: 'The lti_config object with required additional parameters ' - type: object + - name: course_id + in: path + description: The course for which to get provider list + type: string + required: true + - name: lti_1p1_client_key + in: path + description: The LTI provider's client key + type: string + required: true + - name: lti_1p1_client_secret + in: path + description: The LTI provider's client secretL + type: string + required: true + - name: lti_1p1_launch_url + in: path + description: The LTI provider's launch URL + type: string + required: true + - name: provider_type + in: path + description: The LTI provider's launch URL + type: string + required: true + - name: lti_config + in: query + description: 'The lti_config object with required additional parameters ' + type: object responses: '200': description: '' @@ -1790,12 +1884,12 @@ paths: '404': description: The requested course does not exist. tags: - - course_live + - course_live parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /course_live/iframe/{course_id}/: get: operationId: course_live_iframe_read @@ -1805,12 +1899,12 @@ paths: '200': description: '' tags: - - course_live + - course_live parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /course_live/providers/{course_id}/: get: operationId: course_live_providers_read @@ -1820,12 +1914,12 @@ paths: '200': description: '' tags: - - course_live + - course_live parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /course_modes/v1/courses/{course_id}/: get: operationId: course_modes_v1_courses_read @@ -1879,7 +1973,7 @@ paths: items: $ref: '#/definitions/course_modes.CourseMode' tags: - - course_modes + - course_modes post: operationId: course_modes_v1_courses_create summary: View to list or create course modes for a course. @@ -1924,23 +2018,23 @@ paths: POST: If the request is successful, an HTTP 201 "Created" response is returned. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/course_modes.CourseMode' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/course_modes.CourseMode' responses: '201': description: '' schema: $ref: '#/definitions/course_modes.CourseMode' tags: - - course_modes + - course_modes parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /course_modes/v1/courses/{course_id}/{mode_slug}: get: operationId: course_modes_v1_courses_read @@ -2000,27 +2094,27 @@ paths: schema: $ref: '#/definitions/course_modes.CourseMode' consumes: - - application/merge-patch+json + - application/merge-patch+json tags: - - course_modes + - course_modes patch: operationId: course_modes_v1_courses_partial_update description: Performs a partial update of a CourseMode instance. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/course_modes.CourseMode' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/course_modes.CourseMode' responses: '200': description: '' schema: $ref: '#/definitions/course_modes.CourseMode' consumes: - - application/merge-patch+json + - application/merge-patch+json tags: - - course_modes + - course_modes delete: operationId: course_modes_v1_courses_delete summary: View to retrieve, update, or delete a specific course mode for a course. @@ -2077,18 +2171,18 @@ paths: '204': description: '' consumes: - - application/merge-patch+json - tags: - - course_modes - parameters: - - name: course_id - in: path - required: true - type: string - - name: mode_slug - in: path - required: true - type: string + - application/merge-patch+json + tags: + - course_modes + parameters: + - name: course_id + in: path + required: true + type: string + - name: mode_slug + in: path + required: true + type: string /courses/v1/block_metadata/{usage_key_string}: get: operationId: courses_v1_block_metadata_read @@ -2119,26 +2213,26 @@ paths: the "index_dictionary" is included in the "include" parameter. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - courses + - courses parameters: - - name: usage_key_string - in: path - required: true - type: string + - name: usage_key_string + in: path + required: true + type: string /courses/v1/blocks/: get: operationId: courses_v1_blocks_list @@ -2179,21 +2273,21 @@ paths: If an invalid course_id is supplied, a 400: Bad Request is returned, with a message indicating that the course_id is not valid. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - courses + - courses parameters: [] /courses/v1/blocks/{usage_key_string}: get: @@ -2374,26 +2468,26 @@ paths: configured via the COURSE_BLOCKS_API_EXTRA_FIELDS Django setting and requested via the "requested_fields" parameter. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - courses + - courses parameters: - - name: usage_key_string - in: path - required: true - type: string + - name: usage_key_string + in: path + required: true + type: string /courses/v1/course_ids/: get: operationId: courses_v1_course_ids_list @@ -2447,23 +2541,23 @@ paths: } } parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -2481,7 +2575,7 @@ paths: items: type: string tags: - - courses + - courses parameters: [] /courses/v1/courses/: get: @@ -2526,8 +2620,12 @@ paths: CourseOverview and not ElasticSearch. course_keys (optional): - If specified, it filters visible `CourseOverview` objects by - the course keys (ids) provided + If specified, it fetches the `CourseOverview` objects for the + the specified course keys + + mobile_search (bool): + Optional parameter that limits the number of returned courses + to MOBILE_SEARCH_COURSE_LIMIT. **Returns** @@ -2565,23 +2663,23 @@ paths: } ] parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -2599,7 +2697,7 @@ paths: items: $ref: '#/definitions/Course' tags: - - courses + - courses parameters: [] /courses/v1/courses/{course_key_string}: get: @@ -2698,12 +2796,12 @@ paths: schema: $ref: '#/definitions/CourseDetail' tags: - - courses + - courses parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /courses/v2/block_metadata/{usage_key_string}: get: operationId: courses_v2_block_metadata_read @@ -2734,26 +2832,26 @@ paths: the "index_dictionary" is included in the "include" parameter. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - courses + - courses parameters: - - name: usage_key_string - in: path - required: true - type: string + - name: usage_key_string + in: path + required: true + type: string /courses/v2/blocks/: get: operationId: courses_v2_blocks_list @@ -2794,21 +2892,21 @@ paths: If an invalid course_id is supplied, a 400: Bad Request is returned, with a message indicating that the course_id is not valid. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - courses + - courses parameters: [] /courses/v2/blocks/{usage_key_string}: get: @@ -2989,26 +3087,26 @@ paths: configured via the COURSE_BLOCKS_API_EXTRA_FIELDS Django setting and requested via the "requested_fields" parameter. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - courses + - courses parameters: - - name: usage_key_string - in: path - required: true - type: string + - name: usage_key_string + in: path + required: true + type: string /courseware/celebration/{course_key_string}: post: operationId: courseware_celebration_create @@ -3018,12 +3116,12 @@ paths: '201': description: '' tags: - - courseware + - courseware parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /courseware/course/{course_key_string}: get: operationId: courseware_course_read @@ -3072,6 +3170,7 @@ paths: * entrance_exam_passed: (bool) Indicates if the entrance exam has been passed * id: A unique identifier of the course; a serialized representation of the opaque key identifying the course. + * language: The language code for the course * media: An object that contains named media items. Included here: * course_image: An image to show for the course. Represented as an object with the following fields: @@ -3113,6 +3212,7 @@ paths: verified mode. Will update to reverify URL if necessary. * linkedin_add_to_profile_url: URL to add the effective user's certificate to a LinkedIn Profile. * user_needs_integrity_signature: Whether the user needs to sign the integrity agreement for the course + * learning_assistant_enabled: Whether the Xpert Learning Assistant is enabled for the requesting user **Parameters:** @@ -3133,12 +3233,12 @@ paths: '200': description: '' tags: - - courseware + - courseware parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /courseware/resume/{course_key_string}: get: operationId: courseware_resume_read @@ -3148,12 +3248,12 @@ paths: '200': description: '' tags: - - courseware + - courseware parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /courseware/sequence/{usage_key_string}: get: operationId: courseware_sequence_read @@ -3163,12 +3263,12 @@ paths: '200': description: '' tags: - - courseware + - courseware parameters: - - name: usage_key_string - in: path - required: true - type: string + - name: usage_key_string + in: path + required: true + type: string /credit/v1/courses/: get: operationId: credit_v1_courses_list @@ -3182,23 +3282,23 @@ paths: items: $ref: '#/definitions/CreditCourse' tags: - - credit + - credit post: operationId: credit_v1_courses_create description: CreditCourse endpoints. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/CreditCourse' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/CreditCourse' responses: '201': description: '' schema: $ref: '#/definitions/CreditCourse' tags: - - credit + - credit parameters: [] /credit/v1/courses/{course_key}/: get: @@ -3211,45 +3311,45 @@ paths: schema: $ref: '#/definitions/CreditCourse' tags: - - credit + - credit put: operationId: credit_v1_courses_update description: Create/update course modes for a course. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/CreditCourse' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/CreditCourse' responses: '200': description: '' schema: $ref: '#/definitions/CreditCourse' tags: - - credit + - credit patch: operationId: credit_v1_courses_partial_update description: CreditCourse endpoints. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/CreditCourse' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/CreditCourse' responses: '200': description: '' schema: $ref: '#/definitions/CreditCourse' tags: - - credit + - credit parameters: - - name: course_key - in: path - required: true - type: string - pattern: (?:[^/+]+(/|\+)[^/+]+(/|\+)[^/?]+) + - name: course_key + in: path + required: true + type: string + pattern: (?:[^/+]+(/|\+)[^/+]+(/|\+)[^/?]+) /credit/v1/eligibility/: get: operationId: credit_v1_eligibility_list @@ -3263,7 +3363,7 @@ paths: items: $ref: '#/definitions/CreditEligibility' tags: - - credit + - credit parameters: [] /credit/v1/providers/: get: @@ -3278,7 +3378,7 @@ paths: items: $ref: '#/definitions/CreditProvider' tags: - - credit + - credit parameters: [] /credit/v1/providers/{provider_id}/: get: @@ -3291,15 +3391,15 @@ paths: schema: $ref: '#/definitions/CreditProvider' tags: - - credit + - credit parameters: - - name: provider_id - in: path - description: Unique identifier for this credit provider. Only alphanumeric - characters and hyphens (-) are allowed. The identifier is case-sensitive. - required: true - type: string - pattern: '[a-z,A-Z,0-9,\-]+' + - name: provider_id + in: path + description: Unique identifier for this credit provider. Only alphanumeric characters + and hyphens (-) are allowed. The identifier is case-sensitive. + required: true + type: string + pattern: '[a-z,A-Z,0-9,\-]+' /credit/v1/providers/{provider_id}/callback/: post: operationId: credit_v1_providers_callback_create @@ -3309,12 +3409,12 @@ paths: '201': description: '' tags: - - credit + - credit parameters: - - name: provider_id - in: path - required: true - type: string + - name: provider_id + in: path + required: true + type: string /credit/v1/providers/{provider_id}/request/: post: operationId: credit_v1_providers_request_create @@ -3324,12 +3424,12 @@ paths: '201': description: '' tags: - - credit + - credit parameters: - - name: provider_id - in: path - required: true - type: string + - name: provider_id + in: path + required: true + type: string /dashboard/v0/programs/{enterprise_uuid}/: get: operationId: dashboard_v0_programs_read @@ -3340,12 +3440,12 @@ paths: '200': description: '' tags: - - dashboard + - dashboard parameters: - - name: enterprise_uuid - in: path - required: true - type: string + - name: enterprise_uuid + in: path + required: true + type: string /dashboard/v0/programs/{program_uuid}/progress_details/: get: operationId: dashboard_v0_programs_progress_details_list @@ -3355,24 +3455,12 @@ paths: '200': description: '' tags: - - dashboard + - dashboard parameters: - - name: program_uuid - in: path - required: true - type: string - /dashboard/v0/recommendation/courses/: - get: - operationId: dashboard_v0_recommendation_courses_list - description: Retrieves course recommendations details of a user in a specified - course. - parameters: [] - responses: - '200': - description: '' - tags: - - dashboard - parameters: [] + - name: program_uuid + in: path + required: true + type: string /demographics/v1/demographics/status/: get: operationId: demographics_v1_demographics_status_list @@ -3384,7 +3472,7 @@ paths: '200': description: '' tags: - - demographics + - demographics patch: operationId: demographics_v1_demographics_status_partial_update summary: PATCH /api/user/v1/accounts/demographics/status @@ -3394,7 +3482,7 @@ paths: '200': description: '' tags: - - demographics + - demographics parameters: [] /discounts/course/{course_key_string}: get: @@ -3405,12 +3493,12 @@ paths: '200': description: '' tags: - - discounts + - discounts parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /discounts/user/{user_id}/course/{course_key_string}: get: operationId: discounts_user_course_read @@ -3420,16 +3508,16 @@ paths: '200': description: '' tags: - - discounts + - discounts parameters: - - name: course_key_string - in: path - required: true - type: string - - name: user_id - in: path - required: true - type: string + - name: user_id + in: path + required: true + type: string + - name: course_key_string + in: path + required: true + type: string /discussion/v1/accounts/replace_username: post: operationId: discussion_v1_accounts_replace_username_create @@ -3439,9 +3527,9 @@ paths: '201': description: '' tags: - - discussion + - discussion parameters: [] - /discussion/v1/accounts/retire_forum: + /discussion/v1/accounts/retire_forum/: post: operationId: discussion_v1_accounts_retire_forum_create description: Implements the retirement endpoint. @@ -3450,7 +3538,7 @@ paths: '201': description: '' tags: - - discussion + - discussion parameters: [] /discussion/v1/comments/: get: @@ -3477,10 +3565,10 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion post: operationId: discussion_v1_comments_create description: |- @@ -3491,10 +3579,10 @@ paths: '201': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion parameters: [] /discussion/v1/comments/{comment_id}/: get: @@ -3505,10 +3593,10 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion patch: operationId: discussion_v1_comments_partial_update description: |- @@ -3519,10 +3607,10 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion delete: operationId: discussion_v1_comments_delete description: |- @@ -3533,15 +3621,15 @@ paths: '204': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion parameters: - - name: comment_id - in: path - required: true - type: string + - name: comment_id + in: path + required: true + type: string /discussion/v1/course_topics/{course_id}: get: operationId: discussion_v1_course_topics_read @@ -3551,12 +3639,12 @@ paths: '200': description: '' tags: - - discussion + - discussion parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /discussion/v1/courses/{course_id}: get: operationId: discussion_v1_courses_read @@ -3566,11 +3654,11 @@ paths: GET /api/discussion/v1/courses/course-v1:ExampleX+Subject101+2015 parameters: - - name: course_id - in: path - description: Course ID - type: string - required: true + - name: course_id + in: path + description: Course ID + type: string + required: true responses: '200': description: '' @@ -3583,12 +3671,12 @@ paths: '404': description: The requested course does not exist. tags: - - discussion + - discussion parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /discussion/v1/courses/{course_id}/learner/: get: operationId: discussion_v1_courses_learner_list @@ -3598,12 +3686,12 @@ paths: '200': description: '' tags: - - discussion + - discussion parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /discussion/v1/courses/{course_id}/roles/{rolename}/: get: operationId: discussion_v1_courses_roles_read @@ -3613,7 +3701,7 @@ paths: '200': description: '' tags: - - discussion + - discussion post: operationId: discussion_v1_courses_roles_create description: Implement a handler for the POST method. @@ -3622,16 +3710,16 @@ paths: '201': description: '' tags: - - discussion + - discussion parameters: - - name: course_id - in: path - required: true - type: string - - name: rolename - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string + - name: rolename + in: path + required: true + type: string /discussion/v1/courses/{course_id}/settings: get: operationId: discussion_v1_courses_settings_list @@ -3641,10 +3729,10 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion patch: operationId: discussion_v1_courses_settings_partial_update description: Implement a handler for the PATCH method. @@ -3653,15 +3741,15 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /discussion/v1/courses/{course_id}/upload: post: operationId: discussion_v1_courses_upload_create @@ -3671,12 +3759,12 @@ paths: '201': description: '' tags: - - discussion + - discussion parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /discussion/v1/courses/{course_key_string}/activity_stats: get: operationId: discussion_v1_courses_activity_stats_list @@ -3686,12 +3774,12 @@ paths: '200': description: '' tags: - - discussion + - discussion parameters: - - name: course_key_string - in: path - required: true - type: string + - name: course_key_string + in: path + required: true + type: string /discussion/v1/threads/: get: operationId: discussion_v1_threads_list @@ -3703,10 +3791,10 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion post: operationId: discussion_v1_threads_create description: |- @@ -3717,10 +3805,10 @@ paths: '201': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion parameters: [] /discussion/v1/threads/{thread_id}/: get: @@ -3731,10 +3819,10 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion patch: operationId: discussion_v1_threads_partial_update description: |- @@ -3745,10 +3833,10 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion delete: operationId: discussion_v1_threads_delete description: |- @@ -3759,15 +3847,15 @@ paths: '204': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - discussion + - discussion parameters: - - name: thread_id - in: path - required: true - type: string + - name: thread_id + in: path + required: true + type: string /discussion/v2/course_topics/{course_id}: get: operationId: discussion_v2_course_topics_read @@ -3780,24 +3868,24 @@ paths: GET /api/discussion/v2/course_topics/course-v1:ExampleX+Subject101+2015 ?topic_id={topic_id_1, topid_id_2}&order_by=course_structure parameters: - - name: course_id - in: path - description: Course ID - type: string - required: true - - name: topic_id - in: query - description: Comma-separated list of topic ids to filter - type: string - - name: order_by - in: query - description: Sort ordering for topics - required: false - type: string - enum: - - course_structure - - activity - - name + - name: course_id + in: path + description: Course ID + type: string + required: true + - name: topic_id + in: query + description: Comma-separated list of topic ids to filter + type: string + - name: order_by + in: query + description: Sort ordering for topics + required: false + type: string + enum: + - course_structure + - activity + - name responses: '200': description: '' @@ -3810,12 +3898,43 @@ paths: '404': description: The requested course does not exist. tags: - - discussion + - discussion parameters: + - name: course_id + in: path + required: true + type: string + /discussion/v2/courses/{course_id}: + get: + operationId: discussion_v2_courses_read + summary: Retrieve general discussion metadata for a course. + description: |- + **Example Requests**: + GET /api/discussion/v2/courses/course-v1:ExampleX+Subject101+2015 + parameters: - name: course_id in: path - required: true + description: Course ID type: string + required: true + responses: + '200': + description: '' + schema: + $ref: '#/definitions/CourseMetadataSerailizer' + '401': + description: The requester is not authenticated. + '403': + description: The requester cannot access the specified course. + '404': + description: The requested course does not exist. + tags: + - discussion + parameters: + - name: course_id + in: path + required: true + type: string /discussion/v3/course_topics/{course_id}: get: operationId: discussion_v3_course_topics_read @@ -3831,12 +3950,12 @@ paths: '200': description: '' tags: - - discussion + - discussion parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /edx_name_affirmation/v1/verified_name: get: operationId: edx_name_affirmation_v1_verified_name_list @@ -3854,10 +3973,10 @@ paths: "use_verified_name_for_certs": False, } parameters: - - name: username - in: query - description: The username of which verified name records might be associated - type: string + - name: username + in: query + description: The username of which verified name records might be associated + type: string responses: '200': description: The verified_name record associated with the username provided @@ -3868,7 +3987,7 @@ paths: description: The verified_name record associated with the username provided does not exist. tags: - - edx_name_affirmation + - edx_name_affirmation post: operationId: edx_name_affirmation_v1_verified_name_create summary: Creates a new VerifiedName. @@ -3882,11 +4001,11 @@ paths: "status": (Optional) } parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/VerifiedName' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/VerifiedName' responses: '200': description: The verified_name record associated with the username provided @@ -3898,7 +4017,7 @@ paths: description: The posted data have conflicts with already stored verified name tags: - - edx_name_affirmation + - edx_name_affirmation patch: operationId: edx_name_affirmation_v1_verified_name_partial_update summary: Update verified name status @@ -3909,11 +4028,11 @@ paths: "status": "approved", } parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/UpdateVerifiedName' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/UpdateVerifiedName' responses: '200': description: The verified_name record associated with the username provided @@ -3924,17 +4043,17 @@ paths: '400': description: The edit action failed validation rules tags: - - edx_name_affirmation + - edx_name_affirmation delete: operationId: edx_name_affirmation_v1_verified_name_delete summary: Delete verified name description: /edx_name_affirmation/v1/verified_name/{verified_name_id} parameters: - - name: verified_name_id - in: path - description: The database id of the verified_name to be deleted - type: string - required: true + - name: verified_name_id + in: path + description: The database id of the verified_name to be deleted + type: string + required: true responses: '204': description: The verified_name record associated with the id is successfully @@ -3946,7 +4065,7 @@ paths: description: The verified_name record associated with the id provided does not exist. tags: - - edx_name_affirmation + - edx_name_affirmation parameters: [] /edx_name_affirmation/v1/verified_name/config: post: @@ -3954,11 +4073,11 @@ paths: summary: Create VerifiedNameConfig description: Create VerifiedNameConfig parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/VerifiedNameConfig' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/VerifiedNameConfig' responses: '201': description: The verified_name configuration record is successfully created @@ -3968,7 +4087,7 @@ paths: '400': description: The POSTed data failed validation rules tags: - - edx_name_affirmation + - edx_name_affirmation parameters: [] /edx_name_affirmation/v1/verified_name/history: get: @@ -3978,10 +4097,10 @@ paths: description: Get a list of verified name objects for the given user, ordered by most recently created. parameters: - - name: username - in: query - description: The username of which verified name records might be associated - type: string + - name: username + in: query + description: The username of which verified name records might be associated + type: string responses: '200': description: The verified_name record associated with the username provided @@ -3990,7 +4109,7 @@ paths: description: User lacks required permission. Only an edX staff user can invoke this API tags: - - edx_name_affirmation + - edx_name_affirmation parameters: [] /edx_name_affirmation/v1/verified_name/{verified_name_id}: get: @@ -4009,10 +4128,10 @@ paths: "use_verified_name_for_certs": False, } parameters: - - name: username - in: query - description: The username of which verified name records might be associated - type: string + - name: username + in: query + description: The username of which verified name records might be associated + type: string responses: '200': description: The verified_name record associated with the username provided @@ -4023,7 +4142,7 @@ paths: description: The verified_name record associated with the username provided does not exist. tags: - - edx_name_affirmation + - edx_name_affirmation post: operationId: edx_name_affirmation_v1_verified_name_create summary: Creates a new VerifiedName. @@ -4037,11 +4156,11 @@ paths: "status": (Optional) } parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/VerifiedName' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/VerifiedName' responses: '200': description: The verified_name record associated with the username provided @@ -4053,7 +4172,7 @@ paths: description: The posted data have conflicts with already stored verified name tags: - - edx_name_affirmation + - edx_name_affirmation patch: operationId: edx_name_affirmation_v1_verified_name_partial_update summary: Update verified name status @@ -4064,11 +4183,11 @@ paths: "status": "approved", } parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/UpdateVerifiedName' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/UpdateVerifiedName' responses: '200': description: The verified_name record associated with the username provided @@ -4079,17 +4198,17 @@ paths: '400': description: The edit action failed validation rules tags: - - edx_name_affirmation + - edx_name_affirmation delete: operationId: edx_name_affirmation_v1_verified_name_delete summary: Delete verified name description: /edx_name_affirmation/v1/verified_name/{verified_name_id} parameters: - - name: verified_name_id - in: path - description: The database id of the verified_name to be deleted - type: string - required: true + - name: verified_name_id + in: path + description: The database id of the verified_name to be deleted + type: string + required: true responses: '204': description: The verified_name record associated with the id is successfully @@ -4101,12 +4220,12 @@ paths: description: The verified_name record associated with the id provided does not exist. tags: - - edx_name_affirmation + - edx_name_affirmation parameters: - - name: verified_name_id - in: path - required: true - type: string + - name: verified_name_id + in: path + required: true + type: string /edx_proctoring/proctoring_review_callback/: post: operationId: edx_proctoring_proctoring_review_callback_create @@ -4116,7 +4235,7 @@ paths: '201': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: [] /edx_proctoring/v1/instructor/{course_id}: get: @@ -4127,12 +4246,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /edx_proctoring/v1/instructor/{course_id}/{exam_id}: get: operationId: edx_proctoring_v1_instructor_read @@ -4142,16 +4261,16 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: course_id - in: path - required: true - type: string - - name: exam_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string + - name: exam_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/active_attempt: get: operationId: edx_proctoring_v1_proctored_exam_active_attempt_list @@ -4161,7 +4280,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: [] /edx_proctoring/v1/proctored_exam/active_exams_for_user: get: @@ -4172,7 +4291,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: [] /edx_proctoring/v1/proctored_exam/allowance: get: @@ -4185,7 +4304,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_allowance_update description: HTTP GET handler. Adds or updates Allowance @@ -4194,7 +4313,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring delete: operationId: edx_proctoring_v1_proctored_exam_allowance_delete description: HTTP DELETE handler. Removes Allowance. @@ -4203,7 +4322,7 @@ paths: '204': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: [] /edx_proctoring/v1/proctored_exam/attempt: get: @@ -4214,7 +4333,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring post: operationId: edx_proctoring_v1_proctored_exam_attempt_create description: HTTP POST handler. To create an exam attempt. @@ -4223,7 +4342,7 @@ paths: '201': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: [] /edx_proctoring/v1/proctored_exam/attempt/course_id/{course_id}: get: @@ -4234,12 +4353,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/attempt/grouped/course_id/{course_id}: get: operationId: edx_proctoring_v1_proctored_exam_attempt_grouped_course_id_read @@ -4249,12 +4368,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/attempt/grouped/course_id/{course_id}/search/{search_by}: get: operationId: edx_proctoring_v1_proctored_exam_attempt_grouped_course_id_search_read @@ -4264,16 +4383,16 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: course_id - in: path - required: true - type: string - - name: search_by - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string + - name: search_by + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/attempt/{attempt_id}: get: operationId: edx_proctoring_v1_proctored_exam_attempt_read @@ -4283,7 +4402,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_attempt_update description: HTTP PUT handler to update exam attempt status based on an action. @@ -4292,7 +4411,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring delete: operationId: edx_proctoring_v1_proctored_exam_attempt_delete description: HTTP DELETE handler. Removes an exam attempt. @@ -4301,12 +4420,12 @@ paths: '204': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: attempt_id - in: path - required: true - type: string + - name: attempt_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/attempt/{attempt_id}/review_status: put: operationId: edx_proctoring_v1_proctored_exam_attempt_review_status_update @@ -4316,12 +4435,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: attempt_id - in: path - required: true - type: string + - name: attempt_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/attempt/{external_id}/ready: post: operationId: edx_proctoring_v1_proctored_exam_attempt_ready_create @@ -4331,12 +4450,12 @@ paths: '201': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: external_id - in: path - required: true - type: string + - name: external_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/attempt/{external_id}/reviewed: post: operationId: edx_proctoring_v1_proctored_exam_attempt_reviewed_create @@ -4348,12 +4467,12 @@ paths: '201': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: external_id - in: path - required: true - type: string + - name: external_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/bulk_allowance: put: operationId: edx_proctoring_v1_proctored_exam_bulk_allowance_update @@ -4364,7 +4483,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: [] /edx_proctoring/v1/proctored_exam/exam: get: @@ -4379,7 +4498,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring post: operationId: edx_proctoring_v1_proctored_exam_exam_create description: Http POST handler. Creates an exam. @@ -4388,7 +4507,7 @@ paths: '201': description: '' tags: - - edx_proctoring + - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_exam_update description: |- @@ -4399,7 +4518,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: [] /edx_proctoring/v1/proctored_exam/exam/course_id/{course_id}: get: @@ -4414,7 +4533,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring post: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_create description: Http POST handler. Creates an exam. @@ -4423,7 +4542,7 @@ paths: '201': description: '' tags: - - edx_proctoring + - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_update description: |- @@ -4434,12 +4553,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/exam/course_id/{course_id}/content_id/{content_id}: get: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_content_id_read @@ -4453,7 +4572,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring post: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_content_id_create description: Http POST handler. Creates an exam. @@ -4462,7 +4581,7 @@ paths: '201': description: '' tags: - - edx_proctoring + - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_content_id_update description: |- @@ -4473,16 +4592,16 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: content_id - in: path - required: true - type: string - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string + - name: content_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/exam/exam_id/{exam_id}: get: operationId: edx_proctoring_v1_proctored_exam_exam_exam_id_read @@ -4496,7 +4615,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring post: operationId: edx_proctoring_v1_proctored_exam_exam_exam_id_create description: Http POST handler. Creates an exam. @@ -4505,7 +4624,7 @@ paths: '201': description: '' tags: - - edx_proctoring + - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_exam_exam_id_update description: |- @@ -4516,12 +4635,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: exam_id - in: path - required: true - type: string + - name: exam_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/exam_id/{exam_id}/user_id/{user_id}/reset_attempts: delete: operationId: edx_proctoring_v1_proctored_exam_exam_id_user_id_reset_attempts_delete @@ -4532,16 +4651,16 @@ paths: '204': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: exam_id - in: path - required: true - type: string - - name: user_id - in: path - required: true - type: string + - name: exam_id + in: path + required: true + type: string + - name: user_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/exam_registration/course_id/{course_id}: patch: operationId: edx_proctoring_v1_proctored_exam_exam_registration_course_id_partial_update @@ -4553,12 +4672,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/review_policy/exam_id/{exam_id}/: get: operationId: edx_proctoring_v1_proctored_exam_review_policy_exam_id_read @@ -4568,12 +4687,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: exam_id - in: path - required: true - type: string + - name: exam_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/settings/exam_id/{exam_id}/: get: operationId: edx_proctoring_v1_proctored_exam_settings_exam_id_read @@ -4584,12 +4703,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: exam_id - in: path - required: true - type: string + - name: exam_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/{course_id}/allowance: get: operationId: edx_proctoring_v1_proctored_exam_allowance_list @@ -4601,7 +4720,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_allowance_update description: HTTP GET handler. Adds or updates Allowance @@ -4610,7 +4729,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring delete: operationId: edx_proctoring_v1_proctored_exam_allowance_delete description: HTTP DELETE handler. Removes Allowance. @@ -4619,12 +4738,12 @@ paths: '204': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/{course_id}/bulk_allowance: put: operationId: edx_proctoring_v1_proctored_exam_bulk_allowance_update @@ -4635,12 +4754,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /edx_proctoring/v1/proctored_exam/{course_id}/grouped/allowance: get: operationId: edx_proctoring_v1_proctored_exam_grouped_allowance_list @@ -4650,12 +4769,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /edx_proctoring/v1/retire_backend_user/{user_id}/: post: operationId: edx_proctoring_v1_retire_backend_user_create @@ -4667,12 +4786,12 @@ paths: '201': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: user_id - in: path - required: true - type: string + - name: user_id + in: path + required: true + type: string /edx_proctoring/v1/retire_user/{user_id}/: post: operationId: edx_proctoring_v1_retire_user_create @@ -4682,12 +4801,12 @@ paths: '201': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: user_id - in: path - required: true - type: string + - name: user_id + in: path + required: true + type: string /edx_proctoring/v1/user_onboarding/status: get: operationId: edx_proctoring_v1_user_onboarding_status_list @@ -4697,7 +4816,7 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: [] /edx_proctoring/v1/user_onboarding/status/course_id/{course_id}: get: @@ -4708,12 +4827,12 @@ paths: '200': description: '' tags: - - edx_proctoring + - edx_proctoring parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /edxnotes/v1/retire_user/: post: operationId: edxnotes_v1_retire_user_create @@ -4723,7 +4842,7 @@ paths: '201': description: '' tags: - - edxnotes + - edxnotes parameters: [] /embargo/v1/course_access/: get: @@ -4734,7 +4853,7 @@ paths: '200': description: '' tags: - - embargo + - embargo parameters: [] /enrollment/v1/course/{course_id}: get: @@ -4746,12 +4865,12 @@ paths: '200': description: '' tags: - - enrollment + - enrollment parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /enrollment/v1/enrollment: get: operationId: enrollment_v1_enrollment_list @@ -4775,7 +4894,7 @@ paths: '200': description: '' tags: - - enrollment + - enrollment post: operationId: enrollment_v1_enrollment_create summary: Enrolls the currently logged-in user in a course. @@ -4787,7 +4906,7 @@ paths: '201': description: '' tags: - - enrollment + - enrollment parameters: [] /enrollment/v1/enrollment/{course_id}: get: @@ -4801,12 +4920,12 @@ paths: '200': description: '' tags: - - enrollment + - enrollment parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /enrollment/v1/enrollment/{username},{course_id}: get: operationId: enrollment_v1_enrollment_read @@ -4819,16 +4938,65 @@ paths: '200': description: '' tags: - - enrollment + - enrollment parameters: - - name: course_id - in: path - required: true - type: string - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string + - name: course_id + in: path + required: true + type: string + /enrollment/v1/enrollment_allowed/: + get: + operationId: enrollment_v1_enrollment_allowed_list + summary: Returns the enrollments allowed for a given user email. + description: |- + **Example Requests** + + GET /api/enrollment/v1/enrollment_allowed?email=user@example.com + + **Parameters** + + - `email` (optional, string, _query_params_) - defaults to the calling user if not provided. + + **Responses** + - 200: Success. + - 403: Forbidden, you need to be staff. + parameters: [] + responses: + '200': + description: '' + tags: + - enrollment + post: + operationId: enrollment_v1_enrollment_allowed_create + summary: Creates an enrollment allowed for a given user email and course id. + description: |- + **Example Request** + + POST /api/enrollment/v1/enrollment_allowed/ + parameters: [] + responses: + '201': + description: '' + tags: + - enrollment + delete: + operationId: enrollment_v1_enrollment_allowed_delete + summary: Deletes an enrollment allowed for a given user email and course id. + description: |- + **Example Request** + + DELETE /api/enrollment/v1/enrollment_allowed/ + parameters: [] + responses: + '204': + description: '' + tags: + - enrollment + parameters: [] /enrollment/v1/enrollments/: get: operationId: enrollment_v1_enrollments_list @@ -4846,6 +5014,8 @@ paths: GET /api/enrollment/v1/enrollments?course_id={course_id}&username={username} + GET /api/enrollment/v1/enrollments?email={email},{email} + **Query Parameters for GET** * course_id: Filters the result to course enrollments for the course corresponding to the @@ -4854,6 +5024,9 @@ paths: * username: List of comma-separated usernames. Filters the result to the course enrollments of the given users. Optional. + * email: List of comma-separated emails. Filters the result to the course enrollments + of the given users. Optional. + * page_size: Number of results to return per page. Optional. * page: Page number to retrieve. Optional. @@ -4894,22 +5067,22 @@ paths: usernames do not correspond to valid users, an HTTP 200 "OK" response is returned with an empty 'results' field. parameters: - - name: cursor - in: query - description: The pagination cursor value. - required: false - type: string - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: cursor + in: query + description: The pagination cursor value. + required: false + type: string + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - results + - results type: object properties: next: @@ -4925,7 +5098,7 @@ paths: items: $ref: '#/definitions/CourseEnrollmentsApiList' tags: - - enrollment + - enrollment parameters: [] /enrollment/v1/roles/: get: @@ -4937,7 +5110,7 @@ paths: '200': description: '' tags: - - enrollment + - enrollment parameters: [] /enrollment/v1/unenroll/: post: @@ -4948,7 +5121,7 @@ paths: '201': description: '' tags: - - enrollment + - enrollment parameters: [] /entitlements/v1/entitlements/: get: @@ -4957,33 +5130,43 @@ paths: Override the list method to expire records that are past the policy and requested via the API before returning those records. parameters: - - name: uuid - in: query - description: '' - required: false - type: string - - name: user - in: query - description: '' - required: false - type: string - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: uuid + in: query + description: uuid + required: false + type: string + - name: user + in: query + description: user + required: false + type: string + - name: course_uuid + in: query + description: course_uuid + required: false + type: string + - name: expired_at__isnull + in: query + description: expired_at__isnull + required: false + type: string + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -5001,23 +5184,23 @@ paths: items: $ref: '#/definitions/CourseEntitlement' tags: - - entitlements + - entitlements post: operationId: entitlements_v1_entitlements_create description: ViewSet for the Entitlements API. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/CourseEntitlement' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/CourseEntitlement' responses: '201': description: '' schema: $ref: '#/definitions/CourseEntitlement' tags: - - entitlements + - entitlements parameters: [] /entitlements/v1/entitlements/{uuid}/: get: @@ -5032,39 +5215,39 @@ paths: schema: $ref: '#/definitions/CourseEntitlement' tags: - - entitlements + - entitlements put: operationId: entitlements_v1_entitlements_update description: ViewSet for the Entitlements API. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/CourseEntitlement' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/CourseEntitlement' responses: '200': description: '' schema: $ref: '#/definitions/CourseEntitlement' tags: - - entitlements + - entitlements patch: operationId: entitlements_v1_entitlements_partial_update description: ViewSet for the Entitlements API. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/CourseEntitlement' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/CourseEntitlement' responses: '200': description: '' schema: $ref: '#/definitions/CourseEntitlement' tags: - - entitlements + - entitlements delete: operationId: entitlements_v1_entitlements_delete description: ViewSet for the Entitlements API. @@ -5073,13 +5256,13 @@ paths: '204': description: '' tags: - - entitlements + - entitlements parameters: - - name: uuid - in: path - required: true - type: string - pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}' + - name: uuid + in: path + required: true + type: string + pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}' /entitlements/v1/entitlements/{uuid}/enrollments: post: operationId: entitlements_v1_entitlements_enrollments_create @@ -5097,7 +5280,7 @@ paths: '201': description: '' tags: - - entitlements + - entitlements delete: operationId: entitlements_v1_entitlements_enrollments_delete summary: On DELETE call to this API we will unenroll the course enrollment for @@ -5110,13 +5293,26 @@ paths: '204': description: '' tags: - - entitlements + - entitlements parameters: - - name: uuid - in: path - required: true - type: string - format: uuid + - name: uuid + in: path + required: true + type: string + format: uuid + /entitlements/v1/subscriptions/entitlements/revoke: + post: + operationId: entitlements_v1_subscriptions_entitlements_revoke_create + description: |- + Invokes the entitlements expiration process for the provided uuids and downgrades the + enrollments to Audit mode. + parameters: [] + responses: + '201': + description: '' + tags: + - entitlements + parameters: [] /experiments/v0/custom/REV-934/: get: operationId: experiments_v0_custom_REV-934_list @@ -5127,7 +5323,7 @@ paths: '200': description: '' tags: - - experiments + - experiments parameters: [] /experiments/v0/custom/userMetadata/{username},{course_id}: get: @@ -5138,48 +5334,48 @@ paths: '200': description: '' tags: - - experiments + - experiments parameters: - - name: course_id - in: path - required: true - type: string - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string + - name: course_id + in: path + required: true + type: string /experiments/v0/data/: get: operationId: experiments_v0_data_list description: '' parameters: - - name: experiment_id - in: query - description: '' - required: false - type: number - - name: key - in: query - description: '' - required: false - type: string - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: experiment_id + in: query + description: experiment_id + required: false + type: string + - name: key + in: query + description: key + required: false + type: string + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -5197,39 +5393,39 @@ paths: items: $ref: '#/definitions/ExperimentData' tags: - - experiments + - experiments post: operationId: experiments_v0_data_create description: '' parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/ExperimentDataCreate' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/ExperimentDataCreate' responses: '201': description: '' schema: $ref: '#/definitions/ExperimentDataCreate' tags: - - experiments + - experiments put: operationId: experiments_v0_data_update description: '' parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/ExperimentData' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/ExperimentData' responses: '200': description: '' schema: $ref: '#/definitions/ExperimentData' tags: - - experiments + - experiments parameters: [] /experiments/v0/data/{id}/: get: @@ -5242,39 +5438,39 @@ paths: schema: $ref: '#/definitions/ExperimentData' tags: - - experiments + - experiments put: operationId: experiments_v0_data_update description: '' parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/ExperimentData' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/ExperimentData' responses: '200': description: '' schema: $ref: '#/definitions/ExperimentData' tags: - - experiments + - experiments patch: operationId: experiments_v0_data_partial_update description: '' parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/ExperimentData' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/ExperimentData' responses: '200': description: '' schema: $ref: '#/definitions/ExperimentData' tags: - - experiments + - experiments delete: operationId: experiments_v0_data_delete description: '' @@ -5283,45 +5479,45 @@ paths: '204': description: '' tags: - - experiments + - experiments parameters: - - name: id - in: path - description: A unique integer value identifying this Experiment Data. - required: true - type: integer + - name: id + in: path + description: A unique integer value identifying this Experiment Data. + required: true + type: integer /experiments/v0/key-value/: get: operationId: experiments_v0_key-value_list description: '' parameters: - - name: experiment_id - in: query - description: '' - required: false - type: number - - name: key - in: query - description: '' - required: false - type: string - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: experiment_id + in: query + description: experiment_id + required: false + type: string + - name: key + in: query + description: key + required: false + type: string + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -5339,23 +5535,23 @@ paths: items: $ref: '#/definitions/ExperimentKeyValue' tags: - - experiments + - experiments post: operationId: experiments_v0_key-value_create description: '' parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/ExperimentKeyValue' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/ExperimentKeyValue' responses: '201': description: '' schema: $ref: '#/definitions/ExperimentKeyValue' tags: - - experiments + - experiments parameters: [] /experiments/v0/key-value/{id}/: get: @@ -5368,39 +5564,39 @@ paths: schema: $ref: '#/definitions/ExperimentKeyValue' tags: - - experiments + - experiments put: operationId: experiments_v0_key-value_update description: '' parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/ExperimentKeyValue' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/ExperimentKeyValue' responses: '200': description: '' schema: $ref: '#/definitions/ExperimentKeyValue' tags: - - experiments + - experiments patch: operationId: experiments_v0_key-value_partial_update description: '' parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/ExperimentKeyValue' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/ExperimentKeyValue' responses: '200': description: '' schema: $ref: '#/definitions/ExperimentKeyValue' tags: - - experiments + - experiments delete: operationId: experiments_v0_key-value_delete description: '' @@ -5409,34 +5605,33 @@ paths: '204': description: '' tags: - - experiments + - experiments parameters: - - name: id - in: path - description: A unique integer value identifying this Experiment Key-Value - Pair. - required: true - type: integer + - name: id + in: path + description: A unique integer value identifying this Experiment Key-Value Pair. + required: true + type: integer /grades/v1/courses/: get: operationId: grades_v1_courses_list description: Gets a course progress status. parameters: - - name: cursor - in: query - description: The pagination cursor value. - required: false - type: string - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: cursor + in: query + description: The pagination cursor value. + required: false + type: string + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - grades + - grades parameters: [] /grades/v1/courses/{course_id}/: get: @@ -5447,12 +5642,12 @@ paths: '200': description: '' tags: - - grades + - grades parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /grades/v1/gradebook/{course_id}/: get: operationId: grades_v1_gradebook_read @@ -5464,12 +5659,12 @@ paths: '200': description: '' tags: - - grades + - grades parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /grades/v1/gradebook/{course_id}/bulk-update: post: operationId: grades_v1_gradebook_bulk-update_create @@ -5481,12 +5676,12 @@ paths: '201': description: '' tags: - - grades + - grades parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /grades/v1/gradebook/{course_id}/grading-info: get: operationId: grades_v1_gradebook_grading-info_list @@ -5494,26 +5689,26 @@ paths: Checks for course author access for the given course by the requesting user. Calls the view function if has access, otherwise raises a 403. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - grades + - grades parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /grades/v1/policy/courses/{course_id}/: get: operationId: grades_v1_policy_courses_read @@ -5538,26 +5733,26 @@ paths: * weight: The weight, or effect, of the assignment type on the learner's final grade. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - grades + - grades parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /grades/v1/section_grades_breakdown/: get: operationId: grades_v1_section_grades_breakdown_list @@ -5629,21 +5824,21 @@ paths: usernames do not correspond to valid users, an HTTP 200 "OK" response is returned with an empty 'results' field. parameters: - - name: cursor - in: query - description: The pagination cursor value. - required: false - type: string - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: cursor + in: query + description: The pagination cursor value. + required: false + type: string + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - grades + - grades parameters: [] /grades/v1/submission_history/{course_id}/: get: @@ -5690,12 +5885,12 @@ paths: '200': description: '' tags: - - grades + - grades parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /grades/v1/subsection/{subsection_id}/: get: operationId: grades_v1_subsection_read @@ -5707,12 +5902,12 @@ paths: '200': description: '' tags: - - grades + - grades parameters: - - name: subsection_id - in: path - required: true - type: string + - name: subsection_id + in: path + required: true + type: string /instructor/v1/reports/{course_id}: get: operationId: instructor_v1_reports_read @@ -5744,16 +5939,16 @@ paths: edX_DemoX_Demo_Course_student_state_from_block-v1_edX+DemoX+Demo_Course+type@course+block@course_2021-04-30-0918.csv parameters: - - name: course_id - in: path - description: ID for the course whose reports need to be listed. - type: string - required: true - - name: report_name - in: query - description: Filter results to only return details of for the report with - the specified name. - type: string + - name: course_id + in: path + description: ID for the course whose reports need to be listed. + type: string + required: true + - name: report_name + in: query + description: Filter results to only return details of for the report with + the specified name. + type: string responses: '200': description: '' @@ -5766,12 +5961,12 @@ paths: '404': description: The requested course does not exist. tags: - - instructor + - instructor parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /instructor/v1/reports/{course_id}/generate/problem_responses: post: operationId: instructor_v1_reports_generate_problem_responses_create @@ -5821,16 +6016,16 @@ paths: Responds with BadRequest if any of the provided problem locations are faulty. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/ProblemResponseReportPostParams' - - name: course_id - in: path - description: ID of the course for which report is to be generate. - type: string - required: true + - name: data + in: body + required: true + schema: + $ref: '#/definitions/ProblemResponseReportPostParams' + - name: course_id + in: path + description: ID of the course for which report is to be generate. + type: string + required: true responses: '200': description: '' @@ -5844,12 +6039,12 @@ paths: '403': description: The requesting user lacks access to the course. tags: - - instructor + - instructor parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /instructor/v1/tasks/{course_id}: get: operationId: instructor_v1_tasks_read @@ -5888,20 +6083,20 @@ paths: } ``` parameters: - - name: course_id - in: path - description: ID for the course whose tasks need to be listed. - type: string - required: true - - name: problem_location_str - in: query - description: Filter instructor tasks to this problem location. - type: string - - name: unique_student_identifier - in: query - description: Filter tasks to a singe problem and a single student. Must - be used in combination with `problem_location_str`. - type: string + - name: course_id + in: path + description: ID for the course whose tasks need to be listed. + type: string + required: true + - name: problem_location_str + in: query + description: Filter instructor tasks to this problem location. + type: string + - name: unique_student_identifier + in: query + description: Filter tasks to a singe problem and a single student. Must be + used in combination with `problem_location_str`. + type: string responses: '200': description: '' @@ -5914,35 +6109,35 @@ paths: '404': description: The requested course does not exist. tags: - - instructor + - instructor parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /instructor_task/v1/schedules/{course_id}/bulk_email/: get: operationId: instructor_task_v1_schedules_bulk_email_list description: Read only view to list all scheduled bulk email messages for a course-run. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -5960,12 +6155,12 @@ paths: items: $ref: '#/definitions/ScheduledBulkEmail' tags: - - instructor_task + - instructor_task parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /instructor_task/v1/schedules/{course_id}/bulk_email/{schedule_id}: put: operationId: instructor_task_v1_schedules_bulk_email_update @@ -5974,18 +6169,18 @@ paths: * Delete an instructor task schedule * Update an instructor task schedule and/or update the course email associated with the scheduled task. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/ScheduledBulkEmail' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/ScheduledBulkEmail' responses: '200': description: '' schema: $ref: '#/definitions/ScheduledBulkEmail' tags: - - instructor_task + - instructor_task patch: operationId: instructor_task_v1_schedules_bulk_email_partial_update description: |- @@ -5993,18 +6188,18 @@ paths: * Delete an instructor task schedule * Update an instructor task schedule and/or update the course email associated with the scheduled task. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/ScheduledBulkEmail' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/ScheduledBulkEmail' responses: '200': description: '' schema: $ref: '#/definitions/ScheduledBulkEmail' tags: - - instructor_task + - instructor_task delete: operationId: instructor_task_v1_schedules_bulk_email_delete description: |- @@ -6016,319 +6211,16 @@ paths: '204': description: '' tags: - - instructor_task + - instructor_task parameters: - - name: course_id - in: path - required: true - type: string - - name: schedule_id - in: path - required: true - type: string - /learner-pathway-progress/v1/progress/: - get: - operationId: learner-pathway-progress_v1_progress_list - summary: '**Use Case**' - description: |- - * Get a detailed list of all Pathways or single pathway which user have in progress. - - **Example Request** - - GET /api/learner-pathway-progress/v1/progress/ - GET /api/learner-pathway-progress/v1/progress/{learner_pathway_uuid}/ - GET /api/learner-pathway-progress/v1/progress/?enterprise_uuid={enterprise_uuid} - GET /api/learner-pathway-progress/v1/progress/?uuid={learner_pathway_uuid}&enterprise_uuid={enterprise_uuid} - GET /api/learner-pathway-progress/v1/progress/?uuid={learner_pathway_uuid1},{learner_pathway_uuid2} - - **GET Parameters** - - A GET request may include the following parameters if wants to fetch data of particular pathways. - - * learner_pathway_uuid: UUID of a LearnerPathway. - - **Example GET Response** - - [ - { - "learner_pathway_progress": { - "id": 117, - "uuid": "29efa34c-60c6-4791-88c0-ab3b5fbd7503", - "title": "test 1", - "status": "active", - "banner_image": null, - "card_image": null, - "overview": "", - "steps": [ - { - "uuid": "7d95ae15-821e-447a-be2e-9fbfa4d777b4", - "min_requirement": 2, - "courses": [], - "programs": [ - { - "uuid": "919e68dd-8147-482f-8666-72240380c251", - "title": "edX Demonstration Program", - "short_description": "", - "card_image_url": "http://edx.com/logos", - "content_type": "program", - "courses": [ - { - "key": "edX+DemoX", - "course_runs": [ - { - "key": "course-v1:edX+DemoX+Demo_Course" - } - ] - } - ], - "status": "NOT_STARTED" - } - ], - "status": 0.0 - }, - { - "uuid": "768e4081-901d-4913-8e7c-434ad25636ac", - "min_requirement": 2, - "courses": [ - { - "key": "", - "course_runs": [], - "title": "test course 2", - "short_description": "", - "card_image_url": null, - "content_type": "course", - "status": "NOT_STARTED" - } - ], - "programs": [ - { - "uuid": "919e68dd-8147-482f-8666-72240380c251", - "title": "edX Demonstration Program", - "short_description": "", - "card_image_url": "http://edx.com/logo", - "content_type": "program", - "courses": [ - { - "key": "edX+DemoX", - "course_runs": [ - { - "key": "course-v1:edX+DemoX+Demo_Course" - } - ] - } - ], - "status": "NOT_STARTED" - } - ], - "status": 0.0 - }, - { - "uuid": "ced544b3-c1e8-47b5-b7fa-76ef75c3fcc2", - "min_requirement": 1, - "courses": [ - { - "key": "edX+DemoX", - "course_runs": [ - { - "key": "course-v1:edX+DemoX+Demo_Course" - } - ], - "title": "Demonstration Course", - "short_description": "dummy desc", - "card_image_url": null, - "content_type": "course", - "status": "IN_PROGRESS" - } - ], - "programs": [], - "status": 0.0 - } - ] - } - } - ] - parameters: - - name: learner_pathway_uuid - in: query - description: '' - required: false - type: string - - name: uuid - in: query - description: '' - required: false - type: string - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer - responses: - '200': - description: '' - schema: - required: - - count - - results - type: object - properties: - count: - type: integer - next: - type: string - format: uri - x-nullable: true - previous: - type: string - format: uri - x-nullable: true - results: - type: array - items: - $ref: '#/definitions/LearnerPathwayProgress' - tags: - - learner-pathway-progress - parameters: [] - /learner-pathway-progress/v1/progress/{learner_pathway_uuid}/: - get: - operationId: learner-pathway-progress_v1_progress_read - summary: '**Use Case**' - description: |- - * Get a detailed list of all Pathways or single pathway which user have in progress. - - **Example Request** - - GET /api/learner-pathway-progress/v1/progress/ - GET /api/learner-pathway-progress/v1/progress/{learner_pathway_uuid}/ - GET /api/learner-pathway-progress/v1/progress/?enterprise_uuid={enterprise_uuid} - GET /api/learner-pathway-progress/v1/progress/?uuid={learner_pathway_uuid}&enterprise_uuid={enterprise_uuid} - GET /api/learner-pathway-progress/v1/progress/?uuid={learner_pathway_uuid1},{learner_pathway_uuid2} - - **GET Parameters** - - A GET request may include the following parameters if wants to fetch data of particular pathways. - - * learner_pathway_uuid: UUID of a LearnerPathway. - - **Example GET Response** - - [ - { - "learner_pathway_progress": { - "id": 117, - "uuid": "29efa34c-60c6-4791-88c0-ab3b5fbd7503", - "title": "test 1", - "status": "active", - "banner_image": null, - "card_image": null, - "overview": "", - "steps": [ - { - "uuid": "7d95ae15-821e-447a-be2e-9fbfa4d777b4", - "min_requirement": 2, - "courses": [], - "programs": [ - { - "uuid": "919e68dd-8147-482f-8666-72240380c251", - "title": "edX Demonstration Program", - "short_description": "", - "card_image_url": "http://edx.com/logos", - "content_type": "program", - "courses": [ - { - "key": "edX+DemoX", - "course_runs": [ - { - "key": "course-v1:edX+DemoX+Demo_Course" - } - ] - } - ], - "status": "NOT_STARTED" - } - ], - "status": 0.0 - }, - { - "uuid": "768e4081-901d-4913-8e7c-434ad25636ac", - "min_requirement": 2, - "courses": [ - { - "key": "", - "course_runs": [], - "title": "test course 2", - "short_description": "", - "card_image_url": null, - "content_type": "course", - "status": "NOT_STARTED" - } - ], - "programs": [ - { - "uuid": "919e68dd-8147-482f-8666-72240380c251", - "title": "edX Demonstration Program", - "short_description": "", - "card_image_url": "http://edx.com/logo", - "content_type": "program", - "courses": [ - { - "key": "edX+DemoX", - "course_runs": [ - { - "key": "course-v1:edX+DemoX+Demo_Course" - } - ] - } - ], - "status": "NOT_STARTED" - } - ], - "status": 0.0 - }, - { - "uuid": "ced544b3-c1e8-47b5-b7fa-76ef75c3fcc2", - "min_requirement": 1, - "courses": [ - { - "key": "edX+DemoX", - "course_runs": [ - { - "key": "course-v1:edX+DemoX+Demo_Course" - } - ], - "title": "Demonstration Course", - "short_description": "dummy desc", - "card_image_url": null, - "content_type": "course", - "status": "IN_PROGRESS" - } - ], - "programs": [], - "status": 0.0 - } - ] - } - } - ] - parameters: [] - responses: - '200': - description: '' - schema: - $ref: '#/definitions/LearnerPathwayProgress' - tags: - - learner-pathway-progress - parameters: - - name: learner_pathway_uuid - in: path - required: true - type: string - pattern: '[0-9a-f-]+' + - name: course_id + in: path + required: true + type: string + - name: schedule_id + in: path + required: true + type: string /learner_home/init/: get: operationId: learner_home_init_list @@ -6338,7 +6230,7 @@ paths: '200': description: '' tags: - - learner_home + - learner_home parameters: [] /learner_home/mock/init/: get: @@ -6349,46 +6241,7 @@ paths: '200': description: '' tags: - - learner_home - parameters: [] - /learner_home/recommendation/courses/: - get: - operationId: learner_home_recommendation_courses_list - description: Retrieves course recommendations details. - parameters: [] - responses: - '200': - description: '' - tags: - - learner_home - parameters: [] - /learner_recommendations/amplitude/{course_id}/: - get: - operationId: learner_recommendations_amplitude_read - description: |- - Returns - - Amplitude course recommendations for course about page - parameters: [] - responses: - '200': - description: '' - tags: - - learner_recommendations - parameters: - - name: course_id - in: path - required: true - type: string - /learner_recommendations/courses/: - get: - operationId: learner_recommendations_courses_list - description: Retrieves course recommendations details. - parameters: [] - responses: - '200': - description: '' - tags: - - learner_recommendations + - learner_home parameters: [] /learning_sequences/v1/course_outline/{course_key_str}: get: @@ -6399,12 +6252,12 @@ paths: '200': description: '' tags: - - learning_sequences + - learning_sequences parameters: - - name: course_key_str - in: path - required: true - type: string + - name: course_key_str + in: path + required: true + type: string /lti_consumer/v1/lti/{lti_config_id}/lti-ags: get: operationId: lti_consumer_v1_lti_lti-ags_list @@ -6419,39 +6272,39 @@ paths: items: $ref: '#/definitions/LtiAgsLineItem' consumes: - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitem+json produces: - - application/vnd.ims.lis.v2.lineitemcontainer+json - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitemcontainer+json + - application/vnd.ims.lis.v2.lineitem+json tags: - - lti_consumer + - lti_consumer post: operationId: lti_consumer_v1_lti_lti-ags_create summary: LineItem endpoint implementation from LTI Advantage. description: 'See full documentation at:' parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/LtiAgsLineItem' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/LtiAgsLineItem' responses: '201': description: '' schema: $ref: '#/definitions/LtiAgsLineItem' consumes: - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitem+json produces: - - application/vnd.ims.lis.v2.lineitemcontainer+json - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitemcontainer+json + - application/vnd.ims.lis.v2.lineitem+json tags: - - lti_consumer + - lti_consumer parameters: - - name: lti_config_id - in: path - required: true - type: string + - name: lti_config_id + in: path + required: true + type: string /lti_consumer/v1/lti/{lti_config_id}/lti-ags/{id}: get: operationId: lti_consumer_v1_lti_lti-ags_read @@ -6464,56 +6317,56 @@ paths: schema: $ref: '#/definitions/LtiAgsLineItem' consumes: - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitem+json produces: - - application/vnd.ims.lis.v2.lineitemcontainer+json - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitemcontainer+json + - application/vnd.ims.lis.v2.lineitem+json tags: - - lti_consumer + - lti_consumer put: operationId: lti_consumer_v1_lti_lti-ags_update summary: LineItem endpoint implementation from LTI Advantage. description: 'See full documentation at:' parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/LtiAgsLineItem' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/LtiAgsLineItem' responses: '200': description: '' schema: $ref: '#/definitions/LtiAgsLineItem' consumes: - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitem+json produces: - - application/vnd.ims.lis.v2.lineitemcontainer+json - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitemcontainer+json + - application/vnd.ims.lis.v2.lineitem+json tags: - - lti_consumer + - lti_consumer patch: operationId: lti_consumer_v1_lti_lti-ags_partial_update summary: LineItem endpoint implementation from LTI Advantage. description: 'See full documentation at:' parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/LtiAgsLineItem' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/LtiAgsLineItem' responses: '200': description: '' schema: $ref: '#/definitions/LtiAgsLineItem' consumes: - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitem+json produces: - - application/vnd.ims.lis.v2.lineitemcontainer+json - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitemcontainer+json + - application/vnd.ims.lis.v2.lineitem+json tags: - - lti_consumer + - lti_consumer delete: operationId: lti_consumer_v1_lti_lti-ags_delete summary: LineItem endpoint implementation from LTI Advantage. @@ -6523,21 +6376,21 @@ paths: '204': description: '' consumes: - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitem+json produces: - - application/vnd.ims.lis.v2.lineitemcontainer+json - - application/vnd.ims.lis.v2.lineitem+json - tags: - - lti_consumer - parameters: - - name: id - in: path - required: true - type: string - - name: lti_config_id - in: path - required: true - type: string + - application/vnd.ims.lis.v2.lineitemcontainer+json + - application/vnd.ims.lis.v2.lineitem+json + tags: + - lti_consumer + parameters: + - name: lti_config_id + in: path + required: true + type: string + - name: id + in: path + required: true + type: string /lti_consumer/v1/lti/{lti_config_id}/lti-ags/{id}/results/{user_id}: get: operationId: lti_consumer_v1_lti_lti-ags_results @@ -6556,54 +6409,54 @@ paths: schema: $ref: '#/definitions/LtiAgsLineItem' consumes: - - application/vnd.ims.lis.v2.lineitem+json + - application/vnd.ims.lis.v2.lineitem+json produces: - - application/vnd.ims.lis.v2.resultcontainer+json - tags: - - lti_consumer - parameters: - - name: id - in: path - required: true - type: string - - name: lti_config_id - in: path - required: true - type: string - - name: user_id - in: path - required: true - type: string + - application/vnd.ims.lis.v2.resultcontainer+json + tags: + - lti_consumer + parameters: + - name: lti_config_id + in: path + required: true + type: string + - name: id + in: path + required: true + type: string + - name: user_id + in: path + required: true + type: string /lti_consumer/v1/lti/{lti_config_id}/lti-ags/{id}/scores: post: operationId: lti_consumer_v1_lti_lti-ags_scores description: Create a Score record for an LtiAgsLineItem parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/LtiAgsLineItem' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/LtiAgsLineItem' responses: '201': description: '' schema: $ref: '#/definitions/LtiAgsLineItem' consumes: - - application/vnd.ims.lis.v1.score+json + - application/vnd.ims.lis.v1.score+json produces: - - application/vnd.ims.lis.v1.score+json - tags: - - lti_consumer - parameters: - - name: id - in: path - required: true - type: string - - name: lti_config_id - in: path - required: true - type: string + - application/vnd.ims.lis.v1.score+json + tags: + - lti_consumer + parameters: + - name: lti_config_id + in: path + required: true + type: string + - name: id + in: path + required: true + type: string /lti_consumer/v1/lti/{lti_config_id}/memberships: get: operationId: lti_consumer_v1_lti_memberships_list @@ -6611,28 +6464,28 @@ paths: Overrides default list method of ModelViewSet. Calls LMS `get_course_members` API and returns result. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' produces: - - application/vnd.ims.lti-nrps.v2.membershipcontainer+json + - application/vnd.ims.lti-nrps.v2.membershipcontainer+json tags: - - lti_consumer + - lti_consumer parameters: - - name: lti_config_id - in: path - required: true - type: string + - name: lti_config_id + in: path + required: true + type: string /lti_consumer/v1/lti/{lti_config_id}/memberships/{id}: get: operationId: lti_consumer_v1_lti_memberships_read @@ -6643,18 +6496,18 @@ paths: '200': description: '' produces: - - application/vnd.ims.lti-nrps.v2.membershipcontainer+json - tags: - - lti_consumer - parameters: - - name: id - in: path - required: true - type: string - - name: lti_config_id - in: path - required: true - type: string + - application/vnd.ims.lti-nrps.v2.membershipcontainer+json + tags: + - lti_consumer + parameters: + - name: lti_config_id + in: path + required: true + type: string + - name: id + in: path + required: true + type: string /mfe_config/v1: get: operationId: mfe_config_v1_list @@ -6684,15 +6537,15 @@ paths: } ``` parameters: - - name: mfe - in: query - description: Name of an MFE (a.k.a. an APP_ID). - type: string + - name: mfe + in: query + description: Name of an MFE (a.k.a. an APP_ID). + type: string responses: '200': description: '' tags: - - mfe_config + - mfe_config parameters: [] /mfe_context: get: @@ -6709,8 +6562,124 @@ paths: '200': description: '' tags: - - mfe_context + - mfe_context parameters: [] + /mobile/{api_version}/course_info/blocks/: + get: + operationId: mobile_course_info_blocks_list + summary: '**Use Case**' + description: |- + This API endpoint is specifically optimized for the course homepage on Mobile Apps. + The endpoint returns the blocks in the course according to the requesting user's access level. + Additionally, response encompasses info fields with information about the course, + including certificate URL, media dictionary with course image URLs, start and end dates for the course. + + **Example requests**: + + This api works with all versions {api_version}, you can use: v0.5, v1, v2 or v3 + + GET /api/mobile/{api_version}/course_info/blocks/?course_id= + GET /api/mobile/{api_version}/course_info/blocks/?course_id= + &username=anjali + &depth=all + &requested_fields=graded,format,student_view_multi_device,lti_url + &block_counts=video + &student_view_data=video + &block_types_filter=problem,html + + **Parameters:** + + username (str): The username of the specified user for whom the course data + is being accessed. + depth (integer, str, None): Optional number of blocks you receive in response + course nesting depth, you can get only sections, sections and subsections, + or provide string 'all' to receive all blocks of the course. + requested_field (list): Optional list of names of additional fields to return for each block. + Supported fields can be found in transformers.SUPPORTED_FIELDS. + block_counts (list): Optional list of names of block types for which an aggregated count + of blocks is returned. + student_view_data (list): Optional list of names of block types for + which student_view_data is returned. + block_types_filter (list): Filter by block types: + 'video', 'discussion', 'html', 'chapter', 'sequential', 'vertical'. + return_type (list, dict): Optional list or dictionary of block's fields based on 'return_type'. + + **Response example** + + Body consists of the following fields, you received this response if you use + 'return_type=dict' in query params: + + root: (str) The ID of the root node of the requested course block structure. blocks: (dict) A dictionary or list, based on the value of the + "return_type" parameter. Maps block usage IDs to a collection of + information about each block. Each block contains the following + fields. + + id: (str) The Course's id (Course Run key) + name: (str) The course's name + number: (str) The course's number + org: (str) The course's organisation + start: (str) Date the course begins, in ISO 8601 notation + start_display: (str) Readably formatted start of the course + start_type: (str) Hint describing how `start_display` is set. One of: + * `"string"`: manually set by the course author + * `"timestamp"`: generated from the `start` timestamp + * `"empty"`: no start date is specified + end: (str) Date the course ends, in ISO 8601 notation + media: (dict) An object that contains named media items. Included here: + * course_image: An image to show for the course. Represented + as an object with the following fields: + * uri: The location of the image + certificate: (dict) Information about the user's earned certificate in the course. + Included here: + * uri: The location of the user's certificate + is_self_paced: (bool) Indicates if the course is self paced + + Body consists of the following fields, you received this response if you use + 'return_type=list' in query params: + + id: (str) The Course's id (Course Run key) + block_id: (str) The unique identifier for the block_id + lms_web_url: (str) The URL to the navigational container of the xBlock on the web. + legacy_web_url: (str) Like `lms_web_url`, but always directs to + the "Legacy" frontend experience. + student_view_url: (str) The URL to retrieve the HTML rendering + of this block's student view + type: (str): The type of block. Possible values the names of any + XBlock type in the system, including custom blocks. Examples are + course, chapter, sequential, vertical, html, problem, video, and + discussion. + display_name: (str) The display name of the block. + + **Returns** + + * 200 on success with above fields. + * 400 if an invalid parameter was sent or the username was not provided + * 401 unauthorized, the provided access token has expired and is no longer valid + for an authenticated request. + * 403 if a user who does not have permission to masquerade as + another user specifies a username other than their own. + * 404 if the course is not available or cannot be seen. + parameters: + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer + responses: + '200': + description: '' + tags: + - mobile + parameters: + - name: api_version + in: path + required: true + type: string /mobile/{api_version}/course_info/record_user_activity: post: operationId: mobile_course_info_record_user_activity_create @@ -6721,12 +6690,12 @@ paths: '201': description: '' tags: - - mobile + - mobile parameters: - - name: api_version - in: path - required: true - type: string + - name: api_version + in: path + required: true + type: string /mobile/{api_version}/course_info/{course_id}/handouts: get: operationId: mobile_course_info_handouts_list @@ -6745,30 +6714,30 @@ paths: * handouts_html: The HTML for course handouts. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - mobile + - mobile parameters: - - name: api_version - in: path - required: true - type: string - - name: course_id - in: path - required: true - type: string + - name: api_version + in: path + required: true + type: string + - name: course_id + in: path + required: true + type: string /mobile/{api_version}/course_info/{course_id}/updates: get: operationId: mobile_course_info_updates_list @@ -6791,30 +6760,30 @@ paths: * id: The unique identifier of the update. * status: Whether the update is visible or not. parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - mobile + - mobile parameters: - - name: api_version - in: path - required: true - type: string - - name: course_id - in: path - required: true - type: string + - name: api_version + in: path + required: true + type: string + - name: course_id + in: path + required: true + type: string /mobile/{api_version}/my_user_info: get: operationId: mobile_my_user_info_list @@ -6824,12 +6793,12 @@ paths: '200': description: '' tags: - - mobile + - mobile parameters: - - name: api_version - in: path - required: true - type: string + - name: api_version + in: path + required: true + type: string /mobile/{api_version}/users/{username}: get: operationId: mobile_users_read @@ -6866,19 +6835,19 @@ paths: schema: $ref: '#/definitions/mobile_api.User' tags: - - mobile - parameters: - - name: api_version - in: path - required: true - type: string - - name: username - in: path - description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ - only. - required: true - type: string - pattern: ^[\w.@+-]+$ + - mobile + parameters: + - name: api_version + in: path + required: true + type: string + - name: username + in: path + description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + required: true + type: string + pattern: ^[\w.@+-]+$ /mobile/{api_version}/users/{username}/course_enrollments/: get: operationId: mobile_users_course_enrollments_list @@ -6894,106 +6863,570 @@ paths: **Example Request** - GET /api/mobile/v1/users/{username}/course_enrollments/ + GET /api/mobile/v1/users/{username}/course_enrollments/ + + **Response Values** + + If the request for information about the user is successful, the + request returns an HTTP 200 "OK" response. + + The HTTP 200 response has the following values. + + * expiration: The course expiration date for given user course pair + or null if the course does not expire. + * certificate: Information about the user's earned certificate in the + course. + * course: A collection of the following data about the course. + + * courseware_access: A JSON representation with access information for the course, + including any access errors. + + * course_about: The URL to the course about page. + * course_sharing_utm_parameters: Encoded UTM parameters to be included in course sharing url + * course_handouts: The URI to get data for course handouts. + * course_image: The path to the course image. + * course_updates: The URI to get data for course updates. + * discussion_url: The URI to access data for course discussions if + it is enabled, otherwise null. + * end: The end date of the course. + * id: The unique ID of the course. + * name: The name of the course. + * number: The course number. + * org: The organization that created the course. + * start: The date and time when the course starts. + * start_display: + If start_type is a string, then the advertised_start date for the course. + If start_type is a timestamp, then a formatted date for the start of the course. + If start_type is empty, then the value is None and it indicates that the course has not yet started. + * start_type: One of either "string", "timestamp", or "empty" + * subscription_id: A unique "clean" (alphanumeric with '_') ID of + the course. + * video_outline: The URI to get the list of all videos that the user + can access in the course. + + * created: The date the course was created. + * is_active: Whether the course is currently active. Possible values + are true or false. + * mode: The type of certificate registration for this course (honor or + certified). + * url: URL to the downloadable version of the certificate, if exists. + parameters: [] + responses: + '200': + description: '' + schema: + type: array + items: + $ref: '#/definitions/CourseEnrollment' + tags: + - mobile + parameters: + - name: api_version + in: path + required: true + type: string + - name: username + in: path + required: true + type: string + /mobile/{api_version}/users/{username}/course_status_info/{course_id}: + get: + operationId: mobile_users_course_status_info_read + description: Get the ID of the module that the specified user last visited in + the specified course. + parameters: [] + responses: + '200': + description: '' + tags: + - mobile + patch: + operationId: mobile_users_course_status_info_partial_update + description: Update the ID of the module that the specified user last visited + in the specified course. + parameters: [] + responses: + '200': + description: '' + tags: + - mobile + parameters: + - name: api_version + in: path + required: true + type: string + - name: username + in: path + required: true + type: string + - name: course_id + in: path + required: true + type: string + /notifications/: + get: + operationId: notifications_list + summary: API view for listing notifications for a user. + description: |- + **Permissions**: User must be authenticated. + **Response Format** (paginated): + + { + "results" : [ + { + "id": (int) notification_id, + "app_name": (str) app_name, + "notification_type": (str) notification_type, + "content": (str) content, + "content_context": (dict) content_context, + "content_url": (str) content_url, + "last_read": (datetime) last_read, + "last_seen": (datetime) last_seen + }, + ... + ], + "count": (int) total_number_of_notifications, + "next": (str) url_to_next_page_of_notifications, + "previous": (str) url_to_previous_page_of_notifications, + "page_size": (int) number_of_notifications_per_page, + + } + + Response Error Codes: + - 403: The requester cannot access resource. + parameters: + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer + responses: + '200': + description: '' + schema: + required: + - count + - results + type: object + properties: + count: + type: integer + next: + type: string + format: uri + x-nullable: true + previous: + type: string + format: uri + x-nullable: true + results: + type: array + items: + $ref: '#/definitions/Notification' + tags: + - notifications + parameters: [] + /notifications/channel/configurations/{course_key_string}: + patch: + operationId: notifications_channel_configurations_partial_update + description: Update an existing user notification preference for an entire channel + with the data in the request body. + parameters: [] + responses: + '200': + description: '' + tags: + - notifications + parameters: + - name: course_key_string + in: path + required: true + type: string + /notifications/configurations/{course_key_string}: + get: + operationId: notifications_configurations_read + summary: Returns notification preference for user for a course. + description: |- + Parameters: + request (Request): The request object. + course_key_string (int): The ID of the course to retrieve notification preference. + + Returns: + { + 'id': 1, + 'course_name': 'testcourse', + 'course_id': 'course-v1:testorg+testcourse+testrun', + 'notification_preference_config': { + 'discussion': { + 'enabled': False, + 'core': { + 'info': '', + 'web': False, + 'push': False, + 'email': False, + }, + 'notification_types': { + 'new_post': { + 'info': '', + 'web': False, + 'push': False, + 'email': False, + }, + }, + 'not_editable': {}, + }, + } + } + parameters: [] + responses: + '200': + description: '' + tags: + - notifications + patch: + operationId: notifications_configurations_partial_update + description: Update an existing user notification preference with the data in + the request body. + parameters: [] + responses: + '200': + description: '' + tags: + - notifications + parameters: + - name: course_key_string + in: path + required: true + type: string + /notifications/count/: + get: + operationId: notifications_count_list + summary: Get the unseen notifications count and show_notification_tray flag + for a user. + description: |- + **Permissions**: User must be authenticated. + **Response Format**: + ```json + { + "show_notifications_tray": (bool) show_notifications_tray, + "count": (int) total_number_of_unseen_notifications, + "count_by_app_name": { + (str) app_name: (int) number_of_unseen_notifications, + ... + }, + "notification_expiry_days": 60 + } + ``` + **Response Error Codes**: + - 403: The requester cannot access resource. + parameters: [] + responses: + '200': + description: '' + tags: + - notifications + parameters: [] + /notifications/enrollments/: + get: + operationId: notifications_enrollments_list + summary: API endpoint to get active CourseEnrollments for requester. + description: |- + **Permissions**: User must be authenticated. + **Response Format** (paginated): + + { + "next": (str) url_to_next_page_of_courses, + "previous": (str) url_to_previous_page_of_courses, + "count": (int) total_number_of_courses, + "num_pages": (int) total_number_of_pages, + "current_page": (int) current_page_number, + "start": (int) index_of_first_course_on_page, + "results" : [ + { + "course": { + "id": (int) course_id, + "display_name": (str) course_display_name + }, + }, + ... + ], + } + + Response Error Codes: + - 403: The requester cannot access resource. + parameters: + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer + responses: + '200': + description: '' + schema: + required: + - count + - results + type: object + properties: + count: + type: integer + next: + type: string + format: uri + x-nullable: true + previous: + type: string + format: uri + x-nullable: true + results: + type: array + items: + $ref: '#/definitions/NotificationCourseEnrollment' + tags: + - notifications + parameters: [] + /notifications/mark-seen/{app_name}/: + put: + operationId: notifications_mark-seen_update + description: API view for marking user's all notifications seen for a provided + app_name. + parameters: [] + responses: + '200': + description: '' + tags: + - notifications + patch: + operationId: notifications_mark-seen_partial_update + description: API view for marking user's all notifications seen for a provided + app_name. + parameters: [] + responses: + '200': + description: '' + tags: + - notifications + parameters: + - name: app_name + in: path + required: true + type: string + /notifications/read/: + patch: + operationId: notifications_read_partial_update + description: |- + Marks all notifications or single notification read for the given + app name or notification id for the authenticated user. + parameters: [] + responses: + '200': + description: '' + tags: + - notifications + parameters: [] + /ora_staff_grader/assessments/feedback/from/: + get: + operationId: ora_staff_grader_assessments_feedback_get_from + summary: View for fetching assessment feedback for a submission. + description: |- + **Methods** + + * (GET) `api/ora_staff_grader/assessments/feedback/from` + List all assessments received by a user (according to + their submissionUUID) in an ORA assignment. - **Response Values** + * (GET) `api/ora_staff_grader/assessments/feedback/to` + List all assessments given by a user (according to + their submissionUUID) in an ORA assignment. - If the request for information about the user is successful, the - request returns an HTTP 200 "OK" response. + **Query Params**: - The HTTP 200 response has the following values. + * `oraLocation` (str): ORA location for XBlock handling + * `submissionUUID` (str): The ORA submission UUID - * expiration: The course expiration date for given user course pair - or null if the course does not expire. - * certificate: Information about the user's earned certificate in the - course. - * course: A collection of the following data about the course. + **Response**: - * courseware_access: A JSON representation with access information for the course, - including any access errors. + { + assessments (List[dict]): [ + { + "assessment_id: (str) Assessment id + "scorer_name: (str) Scorer name + "scorer_username: (str) Scorer username + "scorer_email: (str) Scorer email + "assessment_date: (str) Assessment date + "assessment_scores (List[dict]) [ + { + "criterion_name: (str) Criterion name + "score_earned: (int) Score earned + "score_type: (str) Score type + } + ] + "problem_step (str) Problem step (Self, Peer, or Staff) + "feedback: (str) Feedback of the assessment + } + ] + } - * course_about: The URL to the course about page. - * course_sharing_utm_parameters: Encoded UTM parameters to be included in course sharing url - * course_handouts: The URI to get data for course handouts. - * course_image: The path to the course image. - * course_updates: The URI to get data for course updates. - * discussion_url: The URI to access data for course discussions if - it is enabled, otherwise null. - * end: The end date of the course. - * id: The unique ID of the course. - * name: The name of the course. - * number: The course number. - * org: The organization that created the course. - * start: The date and time when the course starts. - * start_display: - If start_type is a string, then the advertised_start date for the course. - If start_type is a timestamp, then a formatted date for the start of the course. - If start_type is empty, then the value is None and it indicates that the course has not yet started. - * start_type: One of either "string", "timestamp", or "empty" - * subscription_id: A unique "clean" (alphanumeric with '_') ID of - the course. - * video_outline: The URI to get the list of all videos that the user - can access in the course. + **Errors**: - * created: The date the course was created. - * is_active: Whether the course is currently active. Possible values - are true or false. - * mode: The type of certificate registration for this course (honor or - certified). - * url: URL to the downloadable version of the certificate, if exists. - parameters: [] + * `MissingParamResponse` (HTTP 400) for missing params + * `BadOraLocationResponse` (HTTP 400) for bad ORA location + * `XBlockInternalError` (HTTP 500) for an issue with ORA + * `UnknownError` (HTTP 500) for other errors + parameters: + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' - schema: - type: array - items: - $ref: '#/definitions/CourseEnrollment' tags: - - mobile - parameters: - - name: api_version - in: path - required: true - type: string - - name: username - in: path - required: true - type: string - /mobile/{api_version}/users/{username}/course_status_info/{course_id}: + - ora_staff_grader + parameters: [] + /ora_staff_grader/assessments/feedback/to/: get: - operationId: mobile_users_course_status_info_read - description: Get the ID of the module that the specified user last visited in - the specified course. - parameters: [] + operationId: ora_staff_grader_assessments_feedback_get_to + summary: View for fetching assessment feedback for a submission. + description: |- + **Methods** + + * (GET) `api/ora_staff_grader/assessments/feedback/from` + List all assessments received by a user (according to + their submissionUUID) in an ORA assignment. + + * (GET) `api/ora_staff_grader/assessments/feedback/to` + List all assessments given by a user (according to + their submissionUUID) in an ORA assignment. + + **Query Params**: + + * `oraLocation` (str): ORA location for XBlock handling + * `submissionUUID` (str): The ORA submission UUID + + **Response**: + + { + assessments (List[dict]): [ + { + "assessment_id: (str) Assessment id + "scorer_name: (str) Scorer name + "scorer_username: (str) Scorer username + "scorer_email: (str) Scorer email + "assessment_date: (str) Assessment date + "assessment_scores (List[dict]) [ + { + "criterion_name: (str) Criterion name + "score_earned: (int) Score earned + "score_type: (str) Score type + } + ] + "problem_step (str) Problem step (Self, Peer, or Staff) + "feedback: (str) Feedback of the assessment + } + ] + } + + **Errors**: + + * `MissingParamResponse` (HTTP 400) for missing params + * `BadOraLocationResponse` (HTTP 400) for bad ORA location + * `XBlockInternalError` (HTTP 500) for an issue with ORA + * `UnknownError` (HTTP 500) for other errors + parameters: + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - mobile - patch: - operationId: mobile_users_course_status_info_partial_update - description: Update the ID of the module that the specified user last visited - in the specified course. + - ora_staff_grader + parameters: [] + /ora_staff_grader/assessments/feedback/{id}/: + get: + operationId: ora_staff_grader_assessments_feedback_read + summary: View for fetching assessment feedback for a submission. + description: |- + **Methods** + + * (GET) `api/ora_staff_grader/assessments/feedback/from` + List all assessments received by a user (according to + their submissionUUID) in an ORA assignment. + + * (GET) `api/ora_staff_grader/assessments/feedback/to` + List all assessments given by a user (according to + their submissionUUID) in an ORA assignment. + + **Query Params**: + + * `oraLocation` (str): ORA location for XBlock handling + * `submissionUUID` (str): The ORA submission UUID + + **Response**: + + { + assessments (List[dict]): [ + { + "assessment_id: (str) Assessment id + "scorer_name: (str) Scorer name + "scorer_username: (str) Scorer username + "scorer_email: (str) Scorer email + "assessment_date: (str) Assessment date + "assessment_scores (List[dict]) [ + { + "criterion_name: (str) Criterion name + "score_earned: (int) Score earned + "score_type: (str) Score type + } + ] + "problem_step (str) Problem step (Self, Peer, or Staff) + "feedback: (str) Feedback of the assessment + } + ] + } + + **Errors**: + + * `MissingParamResponse` (HTTP 400) for missing params + * `BadOraLocationResponse` (HTTP 400) for bad ORA location + * `XBlockInternalError` (HTTP 500) for an issue with ORA + * `UnknownError` (HTTP 500) for other errors parameters: [] responses: '200': description: '' tags: - - mobile + - ora_staff_grader parameters: - - name: api_version - in: path - required: true - type: string - - name: course_id - in: path - required: true - type: string - - name: username - in: path - required: true - type: string + - name: id + in: path + required: true + type: string /ora_staff_grader/initialize: get: operationId: ora_staff_grader_initialize_read @@ -7003,7 +7436,7 @@ paths: '200': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /ora_staff_grader/mock/initialize: get: @@ -7014,7 +7447,7 @@ paths: '200': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /ora_staff_grader/mock/submission: get: @@ -7025,7 +7458,7 @@ paths: '200': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /ora_staff_grader/mock/submission/grade: get: @@ -7036,7 +7469,7 @@ paths: '200': description: '' tags: - - ora_staff_grader + - ora_staff_grader post: operationId: ora_staff_grader_mock_submission_grade_create description: Save a grade update to the data store @@ -7045,7 +7478,7 @@ paths: '201': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /ora_staff_grader/mock/submission/lock: post: @@ -7056,7 +7489,7 @@ paths: '201': description: '' tags: - - ora_staff_grader + - ora_staff_grader delete: operationId: ora_staff_grader_mock_submission_lock_delete description: Delete a submission lock, updating lock status @@ -7065,7 +7498,7 @@ paths: '204': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /ora_staff_grader/mock/submission/status: get: @@ -7076,7 +7509,7 @@ paths: '200': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /ora_staff_grader/submission: get: @@ -7087,7 +7520,7 @@ paths: '200': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /ora_staff_grader/submission/batch/unlock: get: @@ -7099,7 +7532,7 @@ paths: '200': description: '' tags: - - ora_staff_grader + - ora_staff_grader post: operationId: ora_staff_grader_submission_batch_unlock_create description: Batch delete submission locks @@ -7108,7 +7541,7 @@ paths: '201': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /ora_staff_grader/submission/files: get: @@ -7122,7 +7555,7 @@ paths: '200': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /ora_staff_grader/submission/grade: get: @@ -7133,7 +7566,7 @@ paths: '200': description: '' tags: - - ora_staff_grader + - ora_staff_grader post: operationId: ora_staff_grader_submission_grade_create description: Update a grade @@ -7142,7 +7575,7 @@ paths: '201': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /ora_staff_grader/submission/lock: get: @@ -7155,7 +7588,7 @@ paths: '200': description: '' tags: - - ora_staff_grader + - ora_staff_grader post: operationId: ora_staff_grader_submission_lock_create description: Claim a submission lock @@ -7164,7 +7597,7 @@ paths: '201': description: '' tags: - - ora_staff_grader + - ora_staff_grader delete: operationId: ora_staff_grader_submission_lock_delete description: Clear a submission lock @@ -7173,7 +7606,7 @@ paths: '204': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /ora_staff_grader/submission/status: get: @@ -7184,7 +7617,7 @@ paths: '200': description: '' tags: - - ora_staff_grader + - ora_staff_grader parameters: [] /organizations/v0/organizations/: get: @@ -7195,23 +7628,23 @@ paths: - retrieve single organization (GET .../) - create or update an organization via the PUT endpoint (PUT .../) parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -7229,7 +7662,7 @@ paths: items: $ref: '#/definitions/Organization' tags: - - organizations + - organizations parameters: [] /organizations/v0/organizations/{short_name}/: get: @@ -7246,7 +7679,7 @@ paths: schema: $ref: '#/definitions/Organization' tags: - - organizations + - organizations put: operationId: organizations_v0_organizations_update summary: We perform both Update and Create action via the PUT method. @@ -7257,44 +7690,44 @@ paths: (2) existing organizations updated through the API always end up Active, regardless of whether or not they were previously active. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/Organization' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/Organization' responses: '200': description: '' schema: $ref: '#/definitions/Organization' tags: - - organizations + - organizations patch: operationId: organizations_v0_organizations_partial_update description: We disable PATCH because all updates and creates should use the PUT action above. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/Organization' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/Organization' responses: '200': description: '' schema: $ref: '#/definitions/Organization' tags: - - organizations + - organizations parameters: - - name: short_name - in: path - description: Unique, short string identifier for organization. Please do not - use spaces or special characters. Only allowed special characters are period - (.), hyphen (-) and underscore (_). - required: true - type: string - pattern: '[^/+]+' + - name: short_name + in: path + description: Unique, short string identifier for organization. Please do not + use spaces or special characters. Only allowed special characters are period + (.), hyphen (-) and underscore (_). + required: true + type: string + pattern: '[^/+]+' /profile_images/v1/{username}/remove: post: operationId: profile_images_v1_remove_create @@ -7304,12 +7737,12 @@ paths: '201': description: '' tags: - - profile_images + - profile_images parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /profile_images/v1/{username}/upload: post: operationId: profile_images_v1_upload_create @@ -7319,15 +7752,15 @@ paths: '201': description: '' consumes: - - multipart/form-data - - application/x-www-form-urlencoded + - multipart/form-data + - application/x-www-form-urlencoded tags: - - profile_images + - profile_images parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /program_enrollments/v1/integration-reset: post: operationId: program_enrollments_v1_integration-reset_create @@ -7337,7 +7770,7 @@ paths: '201': description: '' tags: - - program_enrollments + - program_enrollments parameters: [] /program_enrollments/v1/programs/enrollments/: get: @@ -7348,7 +7781,7 @@ paths: '200': description: '' tags: - - program_enrollments + - program_enrollments parameters: [] /program_enrollments/v1/programs/readonly_access/: get: @@ -7359,28 +7792,28 @@ paths: '200': description: '' tags: - - program_enrollments + - program_enrollments parameters: [] /program_enrollments/v1/programs/{program_uuid}/courses/{course_id}/enrollments/: get: operationId: program_enrollments_v1_programs_courses_enrollments_list description: Get a list of students enrolled in a course within a program. parameters: - - name: cursor - in: query - description: The pagination cursor value. - required: false - type: string - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: cursor + in: query + description: The pagination cursor value. + required: false + type: string + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - program_enrollments + - program_enrollments post: operationId: program_enrollments_v1_programs_courses_enrollments_create description: Enroll a list of students in a course in a program @@ -7389,7 +7822,7 @@ paths: '201': description: '' tags: - - program_enrollments + - program_enrollments put: operationId: program_enrollments_v1_programs_courses_enrollments_update description: Create or Update the program course enrollments of a list of learners @@ -7398,7 +7831,7 @@ paths: '200': description: '' tags: - - program_enrollments + - program_enrollments patch: operationId: program_enrollments_v1_programs_courses_enrollments_partial_update description: Modify the program course enrollments of a list of learners @@ -7407,65 +7840,65 @@ paths: '200': description: '' tags: - - program_enrollments + - program_enrollments parameters: - - name: course_id - in: path - required: true - type: string - - name: program_uuid - in: path - required: true - type: string + - name: program_uuid + in: path + required: true + type: string + - name: course_id + in: path + required: true + type: string /program_enrollments/v1/programs/{program_uuid}/courses/{course_id}/grades/: get: operationId: program_enrollments_v1_programs_courses_grades_list description: Defines the GET list endpoint for ProgramCourseGrade objects. parameters: - - name: cursor - in: query - description: The pagination cursor value. - required: false - type: string - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: cursor + in: query + description: The pagination cursor value. + required: false + type: string + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - program_enrollments + - program_enrollments parameters: - - name: course_id - in: path - required: true - type: string - - name: program_uuid - in: path - required: true - type: string + - name: program_uuid + in: path + required: true + type: string + - name: course_id + in: path + required: true + type: string /program_enrollments/v1/programs/{program_uuid}/enrollments/: get: operationId: program_enrollments_v1_programs_enrollments_list description: Defines the GET list endpoint for ProgramEnrollment objects. parameters: - - name: cursor - in: query - description: The pagination cursor value. - required: false - type: string - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: cursor + in: query + description: The pagination cursor value. + required: false + type: string + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - program_enrollments + - program_enrollments post: operationId: program_enrollments_v1_programs_enrollments_create description: Create program enrollments for a list of learners @@ -7474,7 +7907,7 @@ paths: '201': description: '' tags: - - program_enrollments + - program_enrollments put: operationId: program_enrollments_v1_programs_enrollments_update description: Create/update program enrollments for a list of learners @@ -7483,7 +7916,7 @@ paths: '200': description: '' tags: - - program_enrollments + - program_enrollments patch: operationId: program_enrollments_v1_programs_enrollments_partial_update description: Update program enrollments for a list of learners @@ -7492,12 +7925,12 @@ paths: '200': description: '' tags: - - program_enrollments + - program_enrollments parameters: - - name: program_uuid - in: path - required: true - type: string + - name: program_uuid + in: path + required: true + type: string /program_enrollments/v1/programs/{program_uuid}/overview/: get: operationId: program_enrollments_v1_programs_overview_read @@ -7511,12 +7944,12 @@ paths: schema: $ref: '#/definitions/CourseRunOverviewList' tags: - - program_enrollments + - program_enrollments parameters: - - name: program_uuid - in: path - required: true - type: string + - name: program_uuid + in: path + required: true + type: string /program_enrollments/v1/users/{username}/programs/{program_uuid}/courses: get: operationId: program_enrollments_v1_users_programs_courses_list @@ -7583,30 +8016,30 @@ paths: } ``` parameters: - - name: cursor - in: query - description: The pagination cursor value. - required: false - type: string - - name: page_size - in: query - description: Number of results to return per page. Defaults to 10. Maximum - is 25. - type: integer - - name: username - in: path - description: The username of the user for which enrollment overviews will - be fetched. For now, this must be the requesting user; otherwise, 403 - will be returned. In the future, global staff users may be able to supply - other usernames. - type: string - required: true - - name: program_uuid - in: path - description: UUID of a program. Enrollments will be returned for course - runs in this program. - type: string - required: true + - name: cursor + in: query + description: The pagination cursor value. + required: false + type: string + - name: page_size + in: query + description: Number of results to return per page. Defaults to 10. Maximum + is 25. + type: integer + - name: username + in: path + description: The username of the user for which enrollment overviews will + be fetched. For now, this must be the requesting user; otherwise, 403 will + be returned. In the future, global staff users may be able to supply other + usernames. + type: string + required: true + - name: program_uuid + in: path + description: UUID of a program. Enrollments will be returned for course runs + in this program. + type: string + required: true responses: '200': description: '' @@ -7620,16 +8053,16 @@ paths: '404': description: The requested program does not exist. tags: - - program_enrollments + - program_enrollments parameters: - - name: program_uuid - in: path - required: true - type: string - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string + - name: program_uuid + in: path + required: true + type: string /send_account_activation_email: post: operationId: send_account_activation_email_create @@ -7639,7 +8072,7 @@ paths: '201': description: '' tags: - - send_account_activation_email + - send_account_activation_email parameters: [] /team/v0/bulk_team_membership/{course_id}: get: @@ -7650,7 +8083,7 @@ paths: '200': description: '' tags: - - team + - team post: operationId: team_v0_bulk_team_membership_create description: Process uploaded CSV to modify team memberships for given course @@ -7660,32 +8093,32 @@ paths: '201': description: '' tags: - - team + - team parameters: - - name: course_id - in: path - required: true - type: string + - name: course_id + in: path + required: true + type: string /team/v0/team_membership/: get: operationId: team_v0_team_membership_list description: GET /api/team/v0/team_membership parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - team + - team post: operationId: team_v0_team_membership_create description: POST /api/team/v0/team_membership @@ -7694,7 +8127,7 @@ paths: '201': description: '' tags: - - team + - team parameters: [] /team/v0/team_membership/{team_id},{username}: get: @@ -7705,7 +8138,7 @@ paths: '200': description: '' tags: - - team + - team delete: operationId: team_v0_team_membership_delete description: DELETE /api/team/v0/team_membership/{team_id},{username} @@ -7714,36 +8147,36 @@ paths: '204': description: '' tags: - - team + - team parameters: - - name: team_id - in: path - required: true - type: string - - name: username - in: path - required: true - type: string + - name: team_id + in: path + required: true + type: string + - name: username + in: path + required: true + type: string /team/v0/teams/: get: operationId: team_v0_teams_list description: GET /api/team/v0/teams/ parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - team + - team post: operationId: team_v0_teams_create description: POST /api/team/v0/teams/ @@ -7752,7 +8185,7 @@ paths: '201': description: '' tags: - - team + - team parameters: [] /team/v0/teams/{team_id}: get: @@ -7763,9 +8196,9 @@ paths: '200': description: '' consumes: - - application/merge-patch+json + - application/merge-patch+json tags: - - team + - team patch: operationId: team_v0_teams_partial_update description: Checks for validation errors, then updates the model using the @@ -7775,9 +8208,9 @@ paths: '200': description: '' consumes: - - application/merge-patch+json + - application/merge-patch+json tags: - - team + - team delete: operationId: team_v0_teams_delete description: DELETE /api/team/v0/teams/{team_id} @@ -7786,59 +8219,59 @@ paths: '204': description: '' consumes: - - application/merge-patch+json + - application/merge-patch+json tags: - - team + - team parameters: - - name: team_id - in: path - required: true - type: string + - name: team_id + in: path + required: true + type: string /team/v0/teams/{team_id}/assignments: get: operationId: team_v0_teams_assignments_list description: GET v0/teams/{team_id_pattern}/assignments parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - team + - team parameters: - - name: team_id - in: path - required: true - type: string + - name: team_id + in: path + required: true + type: string /team/v0/topics/: get: operationId: team_v0_topics_list description: GET /api/team/v0/topics/?course_id={course_id} parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' tags: - - team + - team parameters: [] /team/v0/topics/{topic_id},{course_id}: get: @@ -7849,16 +8282,16 @@ paths: '200': description: '' tags: - - team + - team parameters: - - name: course_id - in: path - required: true - type: string - - name: topic_id - in: path - required: true - type: string + - name: topic_id + in: path + required: true + type: string + - name: course_id + in: path + required: true + type: string /third_party_auth/v0/providers/user_status: get: operationId: third_party_auth_v0_providers_user_status_list @@ -7880,9 +8313,9 @@ paths: '200': description: '' tags: - - third_party_auth + - third_party_auth parameters: [] - /third_party_auth/v0/providers/{provider_id}{var}/users: + /third_party_auth/v0/providers/{provider_id}/users: get: operationId: third_party_auth_v0_providers_users_list summary: Map between the third party auth account IDs (remote_id) and EdX username. @@ -7954,23 +8387,23 @@ paths: * remote_id: The Id from third party auth provider parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -7988,16 +8421,12 @@ paths: items: $ref: '#/definitions/UserMapping' tags: - - third_party_auth + - third_party_auth parameters: - - name: provider_id - in: path - required: true - type: string - - name: var - in: path - required: true - type: string + - name: provider_id + in: path + required: true + type: string /third_party_auth/v0/users/: get: operationId: third_party_auth_v0_users_list @@ -8008,7 +8437,7 @@ paths: '200': description: '' tags: - - third_party_auth + - third_party_auth parameters: [] /third_party_auth/v0/users/{username}: get: @@ -8020,12 +8449,12 @@ paths: '200': description: '' tags: - - third_party_auth + - third_party_auth parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /third_party_auth_context: get: operationId: third_party_auth_context_list @@ -8041,7 +8470,7 @@ paths: '200': description: '' tags: - - third_party_auth_context + - third_party_auth_context parameters: [] /toggles/v0/state/: get: @@ -8052,7 +8481,7 @@ paths: '200': description: '' tags: - - toggles + - toggles parameters: [] /user/v1/account/password_reset/: get: @@ -8064,7 +8493,7 @@ paths: '200': description: '' tags: - - user + - user parameters: [] /user/v1/account/password_reset/token/validate/: post: @@ -8075,7 +8504,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/v1/account/registration/: get: @@ -8086,7 +8515,7 @@ paths: '200': description: '' tags: - - user + - user post: operationId: user_v1_account_registration_create summary: Create the user's account. @@ -8100,7 +8529,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/v1/accounts: get: @@ -8114,10 +8543,10 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - user + - user parameters: [] /user/v1/accounts/cancel_retirement/: post: @@ -8131,7 +8560,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/deactivate_logout/: post: @@ -8145,7 +8574,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/name_change/: post: @@ -8164,7 +8593,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/name_change/{username}/confirm/: post: @@ -8177,12 +8606,12 @@ paths: '201': description: '' tags: - - user + - user parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /user/v1/accounts/replace_usernames/: post: operationId: user_v1_accounts_replace_usernames_create @@ -8224,7 +8653,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/retire/: post: @@ -8237,15 +8666,14 @@ paths: } ``` - Retires the user with the given username. This includes - retiring this username, the associated email address, and - any other PII associated with this user. + Retires the user with the given username. This includes retiring this username, the associated email address, + and any other PII associated with this user. parameters: [] responses: '201': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/retire_misc/: post: @@ -8264,7 +8692,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/retirement_cleanup/: post: @@ -8283,7 +8711,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/retirement_partner_report/: post: @@ -8298,7 +8726,7 @@ paths: '201': description: '' tags: - - user + - user put: operationId: user_v1_accounts_retirement_partner_report_update summary: PUT /api/user/v1/accounts/retirement_partner_report/ @@ -8316,7 +8744,7 @@ paths: '200': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/retirement_partner_report_cleanup/: post: @@ -8332,7 +8760,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/retirement_queue/: get: @@ -8348,7 +8776,7 @@ paths: '200': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/retirements_by_status_and_date/: get: @@ -8366,7 +8794,7 @@ paths: '200': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/search_emails: post: @@ -8382,10 +8810,10 @@ paths: '201': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - user + - user parameters: [] /user/v1/accounts/update_retirement_status/: patch: @@ -8410,7 +8838,7 @@ paths: '200': description: '' tags: - - user + - user parameters: [] /user/v1/accounts/verifications/{attempt_id}/: get: @@ -8422,12 +8850,12 @@ paths: '200': description: '' tags: - - user + - user parameters: - - name: attempt_id - in: path - required: true - type: string + - name: attempt_id + in: path + required: true + type: string /user/v1/accounts/{username}: get: operationId: user_v1_accounts_read @@ -8437,10 +8865,10 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - user + - user patch: operationId: user_v1_accounts_partial_update summary: PATCH /api/user/v1/accounts/{username}/ @@ -8451,15 +8879,15 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - user + - user parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /user/v1/accounts/{username}/deactivate/: post: operationId: user_v1_accounts_deactivate_create @@ -8470,12 +8898,12 @@ paths: '201': description: '' tags: - - user + - user parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /user/v1/accounts/{username}/image: post: operationId: user_v1_accounts_image_create @@ -8485,10 +8913,10 @@ paths: '201': description: '' consumes: - - multipart/form-data - - application/x-www-form-urlencoded + - multipart/form-data + - application/x-www-form-urlencoded tags: - - user + - user delete: operationId: user_v1_accounts_image_delete description: DELETE /api/user/v1/accounts/{username}/image @@ -8497,15 +8925,15 @@ paths: '204': description: '' consumes: - - multipart/form-data - - application/x-www-form-urlencoded + - multipart/form-data + - application/x-www-form-urlencoded tags: - - user + - user parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /user/v1/accounts/{username}/retirement_status/: get: operationId: user_v1_accounts_retirement_status_read @@ -8518,12 +8946,12 @@ paths: '200': description: '' tags: - - user + - user parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /user/v1/accounts/{username}/verification_status/: get: operationId: user_v1_accounts_verification_status_list @@ -8533,12 +8961,12 @@ paths: '200': description: '' tags: - - user + - user parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /user/v1/accounts/{username}/verifications/: get: operationId: user_v1_accounts_verifications_list @@ -8553,34 +8981,34 @@ paths: items: $ref: '#/definitions/IDVerificationDetails' tags: - - user + - user parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /user/v1/forum_roles/{name}/users/: get: operationId: user_v1_forum_roles_users_list description: Forum roles are represented by a list of user dicts parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -8598,12 +9026,12 @@ paths: items: $ref: '#/definitions/user_api.User' tags: - - user + - user parameters: - - name: name - in: path - required: true - type: string + - name: name + in: path + required: true + type: string /user/v1/me: get: operationId: user_v1_get @@ -8613,10 +9041,10 @@ paths: '200': description: '' consumes: - - application/json - - application/merge-patch+json + - application/json + - application/merge-patch+json tags: - - user + - user parameters: [] /user/v1/preferences/email_opt_in/: post: @@ -8630,7 +9058,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/v1/preferences/time_zones/: get: @@ -8667,30 +9095,30 @@ paths: items: $ref: '#/definitions/CountryTimeZone' tags: - - user + - user parameters: [] /user/v1/preferences/{pref_key}/users/: get: operationId: user_v1_preferences_users_list description: DRF class for listing a user's preferences parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -8708,12 +9136,12 @@ paths: items: $ref: '#/definitions/user_api.User' tags: - - user + - user parameters: - - name: pref_key - in: path - required: true - type: string + - name: pref_key + in: path + required: true + type: string /user/v1/preferences/{username}: get: operationId: user_v1_preferences_read @@ -8723,9 +9151,9 @@ paths: '200': description: '' consumes: - - application/merge-patch+json + - application/merge-patch+json tags: - - user + - user patch: operationId: user_v1_preferences_partial_update description: PATCH /api/user/v1/preferences/{username}/ @@ -8734,14 +9162,14 @@ paths: '200': description: '' consumes: - - application/merge-patch+json + - application/merge-patch+json tags: - - user + - user parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /user/v1/preferences/{username}/{preference_key}: get: operationId: user_v1_preferences_read @@ -8751,7 +9179,7 @@ paths: '200': description: '' tags: - - user + - user put: operationId: user_v1_preferences_update description: PUT /api/user/v1/preferences/{username}/{preference_key} @@ -8760,7 +9188,7 @@ paths: '200': description: '' tags: - - user + - user delete: operationId: user_v1_preferences_delete description: DELETE /api/user/v1/preferences/{username}/{preference_key} @@ -8769,16 +9197,16 @@ paths: '204': description: '' tags: - - user + - user parameters: - - name: preference_key - in: path - required: true - type: string - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string + - name: preference_key + in: path + required: true + type: string /user/v1/skill_level/{job_id}/: get: operationId: user_v1_skill_level_read @@ -8788,44 +9216,44 @@ paths: '200': description: '' tags: - - user + - user parameters: - - name: job_id - in: path - required: true - type: string + - name: job_id + in: path + required: true + type: string /user/v1/user_prefs/: get: operationId: user_v1_user_prefs_list description: DRF class for interacting with the UserPreference ORM parameters: - - name: key - in: query - description: '' - required: false - type: string - - name: user - in: query - description: '' - required: false - type: string - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: key + in: query + description: key + required: false + type: string + - name: user + in: query + description: user + required: false + type: string + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -8843,7 +9271,7 @@ paths: items: $ref: '#/definitions/UserPreference' tags: - - user + - user parameters: [] /user/v1/user_prefs/{id}/: get: @@ -8856,35 +9284,35 @@ paths: schema: $ref: '#/definitions/UserPreference' tags: - - user + - user parameters: - - name: id - in: path - description: A unique integer value identifying this user preference. - required: true - type: integer + - name: id + in: path + description: A unique integer value identifying this user preference. + required: true + type: integer /user/v1/users/: get: operationId: user_v1_users_list description: DRF class for interacting with the User ORM object parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -8902,7 +9330,7 @@ paths: items: $ref: '#/definitions/user_api.User' tags: - - user + - user parameters: [] /user/v1/users/{id}/: get: @@ -8915,13 +9343,13 @@ paths: schema: $ref: '#/definitions/user_api.User' tags: - - user + - user parameters: - - name: id - in: path - description: A unique integer value identifying this user. - required: true - type: integer + - name: id + in: path + description: A unique integer value identifying this user. + required: true + type: integer /user/v1/validation/registration: post: operationId: user_v1_validation_registration_create @@ -8947,7 +9375,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/v2/account/registration/: get: @@ -8958,7 +9386,7 @@ paths: '200': description: '' tags: - - user + - user post: operationId: user_v2_account_registration_create summary: Create the user's account. @@ -8972,7 +9400,7 @@ paths: '201': description: '' tags: - - user + - user parameters: [] /user/{api_version}/account/login_session/: get: @@ -8983,7 +9411,7 @@ paths: '200': description: '' tags: - - user + - user post: operationId: user_account_login_session_create summary: Log in a user. @@ -9001,12 +9429,12 @@ paths: '201': description: '' tags: - - user + - user parameters: - - name: api_version - in: path - required: true - type: string + - name: api_version + in: path + required: true + type: string /user_tours/discussion_tours/{tour_id}/: get: operationId: user_tours_discussion_tours_read @@ -9016,7 +9444,7 @@ paths: '200': description: '' tags: - - user_tours + - user_tours put: operationId: user_tours_discussion_tours_update description: Update an existing tour with the data in the request body. @@ -9025,12 +9453,12 @@ paths: '200': description: '' tags: - - user_tours + - user_tours parameters: - - name: tour_id - in: path - required: true - type: string + - name: tour_id + in: path + required: true + type: string /user_tours/v1/{username}: get: operationId: user_tours_v1_read @@ -9045,7 +9473,7 @@ paths: 400 if there is a not allowed request (requesting a user you don't have access to) 401 if unauthorized request - 403 if waffle flag is not enabled + 403 if tours are disabled 404 if the UserTour does not exist (shouldn't happen, but safety first) parameters: [] responses: @@ -9054,68 +9482,68 @@ paths: schema: $ref: '#/definitions/UserTour' tags: - - user_tours + - user_tours put: operationId: user_tours_v1_update description: Unsupported method. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/UserTour' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/UserTour' responses: '200': description: '' schema: $ref: '#/definitions/UserTour' tags: - - user_tours + - user_tours patch: operationId: user_tours_v1_partial_update summary: Patch the User Tour for the request.user. description: Supports updating the `course_home_tour_status` and `show_courseware_tour` fields. parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/UserTour' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/UserTour' responses: '200': description: '' schema: $ref: '#/definitions/UserTour' tags: - - user_tours + - user_tours parameters: - - name: username - in: path - required: true - type: string + - name: username + in: path + required: true + type: string /val/v0/videos/: get: operationId: val_v0_videos_list description: GETs or POST video objects parameters: - - name: page - in: query - description: A page number within the paginated result set. - required: false - type: integer - - name: page_size - in: query - description: Number of results to return per page. - required: false - type: integer + - name: page + in: query + description: A page number within the paginated result set. + required: false + type: integer + - name: page_size + in: query + description: Number of results to return per page. + required: false + type: integer responses: '200': description: '' schema: required: - - count - - results + - count + - results type: object properties: count: @@ -9133,24 +9561,54 @@ paths: items: $ref: '#/definitions/Video' tags: - - val + - val post: operationId: val_v0_videos_create description: GETs or POST video objects parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/Video' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/Video' responses: '201': description: '' schema: $ref: '#/definitions/Video' tags: - - val + - val parameters: [] + /val/v0/videos/course-transcripts/{course_id}/: + get: + operationId: val_v0_videos_course-transcripts_read + description: Returns all transcript data for a course when given a course_id. + parameters: [] + responses: + '200': + description: '' + tags: + - val + parameters: + - name: course_id + in: path + required: true + type: string + /val/v0/videos/courses/{course_id}/video-ids: + get: + operationId: val_v0_videos_courses_video-ids_list + description: Returns all video_ids for a course when given a course_id. + parameters: [] + responses: + '200': + description: '' + tags: + - val + parameters: + - name: course_id + in: path + required: true + type: string /val/v0/videos/missing-hls/: post: operationId: val_v0_videos_missing-hls_create @@ -9189,7 +9647,7 @@ paths: '201': description: '' tags: - - val + - val put: operationId: val_v0_videos_missing-hls_update summary: Update a single profile for a given video. @@ -9211,7 +9669,7 @@ paths: '200': description: '' tags: - - val + - val parameters: [] /val/v0/videos/status/: patch: @@ -9222,7 +9680,7 @@ paths: '200': description: '' tags: - - val + - val parameters: [] /val/v0/videos/video-images/update/: post: @@ -9234,7 +9692,7 @@ paths: '201': description: '' tags: - - val + - val parameters: [] /val/v0/videos/video-transcripts/create/: post: @@ -9245,7 +9703,7 @@ paths: '201': description: '' tags: - - val + - val parameters: [] /val/v0/videos/{edx_video_id}: get: @@ -9258,39 +9716,39 @@ paths: schema: $ref: '#/definitions/Video' tags: - - val + - val put: operationId: val_v0_videos_update description: Gets a video instance given its edx_video_id parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/Video' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/Video' responses: '200': description: '' schema: $ref: '#/definitions/Video' tags: - - val + - val patch: operationId: val_v0_videos_partial_update description: Gets a video instance given its edx_video_id parameters: - - name: data - in: body - required: true - schema: - $ref: '#/definitions/Video' + - name: data + in: body + required: true + schema: + $ref: '#/definitions/Video' responses: '200': description: '' schema: $ref: '#/definitions/Video' tags: - - val + - val delete: operationId: val_v0_videos_delete description: Gets a video instance given its edx_video_id @@ -9299,13 +9757,13 @@ paths: '204': description: '' tags: - - val + - val parameters: - - name: edx_video_id - in: path - required: true - type: string - pattern: ^[a-zA-Z0-9\-_]*$ + - name: edx_video_id + in: path + required: true + type: string + pattern: ^[a-zA-Z0-9\-_]*$ /xblock/v2/xblocks/{usage_key_str}/: get: operationId: xblock_v2_xblocks_read @@ -9320,12 +9778,37 @@ paths: '200': description: '' tags: - - xblock + - xblock parameters: - - name: usage_key_str - in: path - required: true - type: string + - name: usage_key_str + in: path + required: true + type: string + /xblock/v2/xblocks/{usage_key_str}/fields/: + get: + operationId: xblock_v2_xblocks_fields_list + description: retrieves the xblock, returning display_name, data, and metadata + parameters: [] + responses: + '200': + description: '' + tags: + - xblock + post: + operationId: xblock_v2_xblocks_fields_create + description: edits the xblock, saving changes to data and metadata only (display_name + included in metadata) + parameters: [] + responses: + '201': + description: '' + tags: + - xblock + parameters: + - name: usage_key_str + in: path + required: true + type: string /xblock/v2/xblocks/{usage_key_str}/handler_url/{handler_name}/: get: operationId: xblock_v2_xblocks_handler_url_read @@ -9339,16 +9822,16 @@ paths: '200': description: '' tags: - - xblock + - xblock parameters: - - name: handler_name - in: path - required: true - type: string - - name: usage_key_str - in: path - required: true - type: string + - name: usage_key_str + in: path + required: true + type: string + - name: handler_name + in: path + required: true + type: string /xblock/v2/xblocks/{usage_key_str}/view/{view_name}/: get: operationId: xblock_v2_xblocks_view_read @@ -9358,25 +9841,25 @@ paths: '200': description: '' tags: - - xblock + - xblock parameters: - - name: usage_key_str - in: path - required: true - type: string - - name: view_name - in: path - required: true - type: string + - name: usage_key_str + in: path + required: true + type: string + - name: view_name + in: path + required: true + type: string definitions: CCXCourse: required: - - master_course_id - - display_name - - coach_email - - start - - due - - max_students_allowed + - master_course_id + - display_name + - coach_email + - start + - due + - max_students_allowed type: object properties: ccx_course_id: @@ -9411,7 +9894,7 @@ definitions: readOnly: true CohortUsersAPI: required: - - username + - username type: object properties: username: @@ -9433,8 +9916,8 @@ definitions: readOnly: true commerce.CourseMode: required: - - name - - price + - name + - price type: object properties: name: @@ -9469,10 +9952,26 @@ definitions: type: string format: date-time x-nullable: true + android_sku: + title: Android SKU + description: 'OPTIONAL: This is the Android SKU registered on play store for + this mode of the course. Leave this blank if the course has not yet been + migrated to the ecommerce service.' + type: string + maxLength: 255 + x-nullable: true + ios_sku: + title: IOS SKU + description: 'OPTIONAL: This is the iOS SKU registered on app store for this + mode of the course. Leave this blank if the course has not yet been migrated + to the ecommerce service.' + type: string + maxLength: 255 + x-nullable: true commerce.Course: required: - - id - - modes + - id + - modes type: object properties: id: @@ -9506,7 +10005,7 @@ definitions: readOnly: true CourseTab: required: - - tab_id + - tab_id type: object properties: tab_id: @@ -9521,23 +10020,39 @@ definitions: title: Url type: string readOnly: true + CourseModeSerrializer: + required: + - slug + - name + type: object + properties: + slug: + title: Slug + type: string + minLength: 1 + name: + title: Name + type: string + minLength: 1 CourseHomeMetadata: required: - - celebrations - - course_access - - course_id - - is_enrolled - - is_self_paced - - is_staff - - number - - org - - original_user_is_staff - - start - - tabs - - title - - username - - user_timezone - - can_view_certificate + - celebrations + - course_access + - course_id + - is_enrolled + - is_self_paced + - is_staff + - number + - org + - original_user_is_staff + - start + - tabs + - title + - username + - user_timezone + - can_view_certificate + - course_modes + - is_new_discussion_sidebar_view_enabled type: object properties: can_show_upgrade_sock: @@ -9607,15 +10122,22 @@ definitions: can_view_certificate: title: Can view certificate type: boolean + course_modes: + type: array + items: + $ref: '#/definitions/CourseModeSerrializer' + is_new_discussion_sidebar_view_enabled: + title: Is new discussion sidebar view enabled + type: boolean DateSummary: required: - - complete - - date - - date_type - - description - - link_text - - title - - extra_info + - complete + - date + - date_type + - description + - link_text + - title + - extra_info type: object properties: assignment_type: @@ -9664,10 +10186,10 @@ definitions: readOnly: true DatesTab: required: - - course_date_blocks - - has_ended - - learner_is_full_access - - user_timezone + - course_date_blocks + - has_ended + - learner_is_full_access + - user_timezone type: object properties: dates_banner_info: @@ -9688,12 +10210,19 @@ definitions: title: User timezone type: string minLength: 1 + CourseBlock: + type: object + properties: + blocks: + title: Blocks + type: string + readOnly: true CertificateData: required: - - cert_status - - cert_web_view_url - - download_url - - certificate_available_date + - cert_status + - cert_web_view_url + - download_url + - certificate_available_date type: object properties: cert_status: @@ -9712,16 +10241,9 @@ definitions: title: Certificate available date type: string format: date-time - CourseBlock: - type: object - properties: - blocks: - title: Blocks - type: string - readOnly: true CourseGoals: required: - - selected_goal + - selected_goal type: object properties: selected_goal: @@ -9736,8 +10258,8 @@ definitions: default: false CourseTool: required: - - analytics_id - - title + - analytics_id + - title type: object properties: analytics_id: @@ -9754,9 +10276,9 @@ definitions: readOnly: true DatesWidget: required: - - course_date_blocks - - dates_tab_link - - user_timezone + - course_date_blocks + - dates_tab_link + - user_timezone type: object properties: course_date_blocks: @@ -9773,8 +10295,8 @@ definitions: minLength: 1 EnrollAlert: required: - - can_enroll - - extra_text + - can_enroll + - extra_text type: object properties: can_enroll: @@ -9786,8 +10308,8 @@ definitions: minLength: 1 ResumeCourse: required: - - has_visited_course - - url + - has_visited_course + - url type: object properties: has_visited_course: @@ -9800,21 +10322,21 @@ definitions: minLength: 1 OutlineTab: required: - - access_expiration - - cert_data - - course_blocks - - course_goals - - course_tools - - dates_widget - - enroll_alert - - enrollment_mode - - enable_proctored_exams - - handouts_html - - has_ended - - offer - - resume_course - - welcome_message_html - - user_has_passing_grade + - access_expiration + - cert_data + - course_blocks + - course_goals + - course_tools + - dates_widget + - enroll_alert + - enrollment_mode + - enable_proctored_exams + - handouts_html + - has_ended + - offer + - resume_course + - welcome_message_html + - user_has_passing_grade type: object properties: dates_banner_info: @@ -9880,9 +10402,9 @@ definitions: type: boolean CourseGrade: required: - - letter_grade - - percent - - is_passing + - letter_grade + - percent + - is_passing type: object properties: letter_grade: @@ -9897,7 +10419,7 @@ definitions: type: boolean GradingPolicy: required: - - grade_range + - grade_range type: object properties: assignment_policies: @@ -9912,13 +10434,13 @@ definitions: x-nullable: true SubsectionScores: required: - - assignment_type - - display_name - - has_graded_assignment - - num_points_earned - - num_points_possible - - percent_graded - - show_correctness + - assignment_type + - display_name + - has_graded_assignment + - num_points_earned + - num_points_possible + - percent_graded + - show_correctness type: object properties: assignment_type: @@ -9971,8 +10493,8 @@ definitions: readOnly: true SectionScores: required: - - display_name - - subsections + - display_name + - subsections type: object properties: display_name: @@ -9985,9 +10507,9 @@ definitions: $ref: '#/definitions/SubsectionScores' VerificationData: required: - - link - - status - - status_date + - link + - status + - status_date type: object properties: link: @@ -10005,20 +10527,21 @@ definitions: format: date-time ProgressTab: required: - - access_expiration - - certificate_data - - completion_summary - - course_grade - - credit_course_requirements - - end - - enrollment_mode - - grading_policy - - has_scheduled_content - - section_scores - - studio_url - - username - - user_has_passing_grade - - verification_data + - access_expiration + - certificate_data + - completion_summary + - course_grade + - credit_course_requirements + - end + - enrollment_mode + - grading_policy + - has_scheduled_content + - section_scores + - studio_url + - username + - user_has_passing_grade + - verification_data + - disable_progress_graph type: object properties: can_show_upgrade_sock: @@ -10081,9 +10604,12 @@ definitions: type: boolean verification_data: $ref: '#/definitions/VerificationData' + disable_progress_graph: + title: Disable progress graph + type: boolean Lti: required: - - lti_config + - lti_config type: object properties: lti_1p1_client_key: @@ -10105,14 +10631,14 @@ definitions: title: Version type: string enum: - - lti_1p1 - - lti_1p3 + - lti_1p1 + - lti_1p3 lti_config: title: Lti config type: object CourseLiveConfiguration: required: - - provider_type + - provider_type type: object properties: course_key: @@ -10142,10 +10668,10 @@ definitions: type: boolean course_modes.CourseMode: required: - - course_id - - mode_slug - - mode_display_name - - currency + - course_id + - mode_slug + - mode_display_name + - currency type: object properties: course_id: @@ -10206,9 +10732,9 @@ definitions: readOnly: true Image: required: - - raw - - small - - large + - raw + - small + - large type: object properties: raw: @@ -10228,10 +10754,10 @@ definitions: minLength: 1 _CourseApiMediaCollection: required: - - banner_image - - course_image - - course_video - - image + - banner_image + - course_image + - course_video + - image type: object properties: banner_image: @@ -10244,22 +10770,22 @@ definitions: $ref: '#/definitions/Image' Course: required: - - effort - - end - - enrollment_start - - enrollment_end - - id - - media - - name - - number - - org - - short_description - - start - - start_display - - start_type - - pacing - - mobile_available - - invitation_only + - effort + - end + - enrollment_start + - enrollment_end + - id + - media + - name + - number + - org + - short_description + - start + - start_display + - start_type + - pacing + - mobile_available + - invitation_only type: object properties: blocks_url: @@ -10337,22 +10863,22 @@ definitions: minLength: 1 CourseDetail: required: - - effort - - end - - enrollment_start - - enrollment_end - - id - - media - - name - - number - - org - - short_description - - start - - start_display - - start_type - - pacing - - mobile_available - - invitation_only + - effort + - end + - enrollment_start + - enrollment_end + - id + - media + - name + - number + - org + - short_description + - start + - start_display + - start_type + - pacing + - mobile_available + - invitation_only type: object properties: blocks_url: @@ -10434,7 +10960,7 @@ definitions: readOnly: true CreditCourse: required: - - course_key + - course_key type: object properties: course_key: @@ -10445,7 +10971,7 @@ definitions: type: boolean CreditEligibility: required: - - username + - username type: object properties: username: @@ -10464,11 +10990,11 @@ definitions: format: date-time CreditProvider: required: - - id - - display_name - - url - - status_url - - description + - id + - display_name + - url + - status_url + - description type: object properties: id: @@ -10517,8 +11043,8 @@ definitions: minLength: 1 BlackoutDate: required: - - start - - end + - start + - end type: object properties: start: @@ -10533,8 +11059,8 @@ definitions: format: date-time ReasonCodeSeralizer: required: - - code - - label + - code + - label type: object properties: code: @@ -10549,20 +11075,20 @@ definitions: minLength: 1 CourseMetadataSerailizer: required: - - id - - blackouts - - thread_list_url - - following_thread_list_url - - topics_url - - allow_anonymous - - allow_anonymous_to_peers - - user_roles - - user_is_privileged - - provider - - enable_in_context - - group_at_subsection - - post_close_reasons - - edit_reasons + - id + - blackouts + - thread_list_url + - following_thread_list_url + - topics_url + - allow_anonymous + - allow_anonymous_to_peers + - user_roles + - user_is_privileged + - provider + - enable_in_context + - group_at_subsection + - post_close_reasons + - edit_reasons type: object properties: id: @@ -10672,9 +11198,9 @@ definitions: readOnly: true VerifiedName: required: - - username - - verified_name - - profile_name + - username + - verified_name + - profile_name type: object properties: id: @@ -10713,8 +11239,8 @@ definitions: x-nullable: true UpdateVerifiedName: required: - - username - - status + - username + - status type: object properties: id: @@ -10752,7 +11278,7 @@ definitions: minLength: 1 VerifiedNameConfig: required: - - username + - username type: object properties: change_date: @@ -10770,7 +11296,7 @@ definitions: x-nullable: true CourseEnrollmentsApiList: required: - - course_id + - course_id type: object properties: created: @@ -10778,6 +11304,7 @@ definitions: type: string format: date-time readOnly: true + x-nullable: true mode: title: Mode type: string @@ -10796,9 +11323,9 @@ definitions: minLength: 1 CourseEntitlement: required: - - user - - course_uuid - - mode + - user + - course_uuid + - mode type: object properties: user: @@ -10858,9 +11385,9 @@ definitions: readOnly: true ExperimentData: required: - - experiment_id - - key - - value + - experiment_id + - key + - value type: object properties: id: @@ -10898,9 +11425,9 @@ definitions: readOnly: true ExperimentDataCreate: required: - - experiment_id - - key - - value + - experiment_id + - key + - value type: object properties: id: @@ -10937,9 +11464,9 @@ definitions: readOnly: true ExperimentKeyValue: required: - - experiment_id - - key - - value + - experiment_id + - key + - value type: object properties: id: @@ -10973,9 +11500,9 @@ definitions: ReportDownload: description: Report Download required: - - url - - name - - link + - url + - name + - link type: object properties: url: @@ -10996,7 +11523,7 @@ definitions: minLength: 1 ReportDownloadsList: required: - - downloads + - downloads type: object properties: downloads: @@ -11006,7 +11533,7 @@ definitions: $ref: '#/definitions/ReportDownload' ProblemResponseReportPostParams: required: - - problem_locations + - problem_locations type: object properties: problem_locations: @@ -11028,8 +11555,8 @@ definitions: minLength: 1 ProblemResponsesReportStatus: required: - - status - - task_id + - status + - task_id type: object properties: status: @@ -11045,15 +11572,15 @@ definitions: format: uuid InstructorTask: required: - - status - - task_type - - task_id - - created - - task_input - - requester - - task_state - - duration_sec - - task_message + - status + - task_type + - task_id + - created + - task_input + - requester + - task_state + - duration_sec + - task_message type: object properties: status: @@ -11107,7 +11634,7 @@ definitions: minLength: 1 InstructorTasksList: required: - - tasks + - tasks type: object properties: tasks: @@ -11117,8 +11644,8 @@ definitions: $ref: '#/definitions/InstructorTask' ScheduledBulkEmail: required: - - task - - task_due + - task + - task_due type: object properties: id: @@ -11136,18 +11663,11 @@ definitions: title: Task due type: string format: date-time - LearnerPathwayProgress: - type: object - properties: - learner_pathway_progress: - title: Learner pathway progress - type: string - readOnly: true LtiAgsLineItem: required: - - resourceId - - scoreMaximum - - label + - resourceId + - scoreMaximum + - label type: object properties: id: @@ -11183,7 +11703,7 @@ definitions: format: date-time mobile_api.User: required: - - username + - username type: object properties: id: @@ -11223,6 +11743,7 @@ definitions: type: string format: date-time readOnly: true + x-nullable: true mode: title: Mode type: string @@ -11243,10 +11764,80 @@ definitions: title: Course modes type: string readOnly: true + Notification: + required: + - app_name + - notification_type + type: object + properties: + id: + title: ID + type: integer + readOnly: true + app_name: + title: App name + type: string + maxLength: 64 + minLength: 1 + notification_type: + title: Notification type + type: string + maxLength: 64 + minLength: 1 + content_context: + title: Content context + type: object + content: + title: Content + type: string + readOnly: true + content_url: + title: Content url + type: string + format: uri + maxLength: 200 + x-nullable: true + last_read: + title: Last read + type: string + format: date-time + x-nullable: true + last_seen: + title: Last seen + type: string + format: date-time + x-nullable: true + created: + title: Created + type: string + format: date-time + readOnly: true + CourseOverview: + required: + - id + type: object + properties: + id: + title: Id + type: string + maxLength: 255 + minLength: 1 + display_name: + title: Display name + type: string + minLength: 1 + x-nullable: true + NotificationCourseEnrollment: + required: + - course + type: object + properties: + course: + $ref: '#/definitions/CourseOverview' Organization: required: - - name - - short_name + - name + - short_name type: object properties: id: @@ -11297,9 +11888,9 @@ definitions: minLength: 1 DueDate: required: - - name - - url - - date + - name + - url + - date type: object properties: name: @@ -11316,13 +11907,13 @@ definitions: format: date-time CourseRunOverview: required: - - course_run_id - - display_name - - course_run_url - - start_date - - end_date - - course_run_status - - due_dates + - course_run_id + - display_name + - course_run_url + - start_date + - end_date + - course_run_status + - due_dates type: object properties: course_run_id: @@ -11361,9 +11952,9 @@ definitions: description: The user's status of the course run. type: string enum: - - in_progress - - upcoming - - completed + - in_progress + - upcoming + - completed emails_enabled: title: Emails enabled description: Boolean representing whether emails are enabled for the course;if @@ -11391,7 +11982,7 @@ definitions: minLength: 1 CourseRunOverviewList: required: - - course_runs + - course_runs type: object properties: course_runs: @@ -11400,7 +11991,7 @@ definitions: $ref: '#/definitions/CourseRunOverview' PageOfCourseRunOverview: required: - - results + - results type: object properties: previous: @@ -11434,9 +12025,9 @@ definitions: readOnly: true IDVerificationDetails: required: - - status - - expiration_datetime - - updated_at + - status + - expiration_datetime + - updated_at type: object properties: type: @@ -11498,8 +12089,8 @@ definitions: readOnly: true CountryTimeZone: required: - - time_zone - - description + - time_zone + - description type: object properties: time_zone: @@ -11512,9 +12103,9 @@ definitions: minLength: 1 UserPreference: required: - - user - - key - - value + - user + - key + - value type: object properties: user: @@ -11541,18 +12132,18 @@ definitions: title: Course home tour status type: string enum: - - show-existing-user-tour - - show-new-user-tour - - no-tour + - show-existing-user-tour + - show-new-user-tour + - no-tour show_courseware_tour: title: Show courseware tour type: boolean EncodedVideo: required: - - url - - file_size - - bitrate - - profile + - url + - file_size + - bitrate + - profile type: object properties: created: @@ -11582,10 +12173,10 @@ definitions: pattern: ^[a-zA-Z0-9\-_]*$ Video: required: - - encoded_videos - - edx_video_id - - duration - - status + - encoded_videos + - edx_video_id + - duration + - status type: object properties: encoded_videos: From 8bfa916ea32d96f3125d4514599f13f8d6c9f9d5 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Tue, 11 Jun 2024 13:26:50 -0400 Subject: [PATCH 4/4] chore: Run `make upgrade-package package=drf-yasg` --- requirements/edx/base.txt | 22 +++------------------ requirements/edx/development.txt | 33 ++------------------------------ requirements/edx/doc.txt | 28 ++------------------------- requirements/edx/testing.txt | 28 ++------------------------- 4 files changed, 9 insertions(+), 102 deletions(-) diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 53d2350191f3..08296914d13a 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -135,12 +135,6 @@ code-annotations==1.8.0 # edx-toggles codejail-includes==1.0.0 # via -r requirements/edx/kernel.in -coreapi==2.3.3 - # via drf-yasg -coreschema==0.0.4 - # via - # coreapi - # drf-yasg crowdsourcehinter-xblock==0.7 # via -r requirements/edx/bundled.in cryptography==42.0.8 @@ -384,9 +378,8 @@ drf-jwt==1.19.2 # via edx-drf-extensions drf-spectacular==0.27.2 # via -r requirements/edx/kernel.in -drf-yasg==1.21.5 +drf-yasg==1.21.7 # via - # -c requirements/edx/../constraints.txt # django-user-tasks # edx-api-doc-tools edx-ace==1.8.0 @@ -599,12 +592,8 @@ ipaddress==1.0.23 # via -r requirements/edx/kernel.in isodate==0.6.1 # via python3-saml -itypes==1.2.0 - # via coreapi jinja2==3.1.4 - # via - # code-annotations - # coreschema + # via code-annotations jmespath==1.0.1 # via # boto3 @@ -945,6 +934,7 @@ pyyaml==6.0.1 # -r requirements/edx/kernel.in # code-annotations # drf-spectacular + # drf-yasg # edx-django-release-util # edx-i18n-tools # xblock @@ -967,7 +957,6 @@ requests==2.32.3 # -r requirements/edx/paver.txt # algoliasearch # analytics-python - # coreapi # django-oauth-toolkit # edx-bulk-grades # edx-drf-extensions @@ -995,10 +984,6 @@ rpds-py==0.18.1 # via # jsonschema # referencing -ruamel-yaml==0.18.6 - # via drf-yasg -ruamel-yaml-clib==0.2.8 - # via ruamel-yaml rules==3.4 # via # -r requirements/edx/kernel.in @@ -1128,7 +1113,6 @@ unicodecsv==0.14.1 # edx-enterprise uritemplate==4.1.1 # via - # coreapi # drf-spectacular # drf-yasg urllib3==1.26.18 diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index 696a7e0ae3ef..5f88ff872982 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -265,17 +265,6 @@ colorama==0.4.6 # via # -r requirements/edx/testing.txt # tox -coreapi==2.3.3 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # drf-yasg -coreschema==0.0.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # coreapi - # drf-yasg coverage[toml]==7.5.3 # via # -r requirements/edx/testing.txt @@ -639,9 +628,8 @@ drf-spectacular==0.27.2 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt -drf-yasg==1.21.5 +drf-yasg==1.21.7 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # django-user-tasks @@ -1023,17 +1011,11 @@ isort==5.13.2 # via # -r requirements/edx/testing.txt # pylint -itypes==1.2.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # coreapi jinja2==3.1.4 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt # code-annotations - # coreschema # diff-cover # fastapi # sphinx @@ -1699,6 +1681,7 @@ pyyaml==6.0.1 # -r requirements/edx/testing.txt # code-annotations # drf-spectacular + # drf-yasg # edx-django-release-util # edx-i18n-tools # sphinxcontrib-openapi @@ -1734,7 +1717,6 @@ requests==2.32.3 # -r requirements/edx/testing.txt # algoliasearch # analytics-python - # coreapi # django-oauth-toolkit # djangorestframework-stubs # edx-bulk-grades @@ -1772,16 +1754,6 @@ rpds-py==0.18.1 # -r requirements/edx/testing.txt # jsonschema # referencing -ruamel-yaml==0.18.6 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # drf-yasg -ruamel-yaml-clib==0.2.8 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # ruamel-yaml rules==3.4 # via # -r requirements/edx/doc.txt @@ -2084,7 +2056,6 @@ uritemplate==4.1.1 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt - # coreapi # drf-spectacular # drf-yasg urllib3==1.26.18 diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt index 35a6c945e776..f932c6769615 100644 --- a/requirements/edx/doc.txt +++ b/requirements/edx/doc.txt @@ -176,15 +176,6 @@ code-annotations==1.8.0 # edx-toggles codejail-includes==1.0.0 # via -r requirements/edx/base.txt -coreapi==2.3.3 - # via - # -r requirements/edx/base.txt - # drf-yasg -coreschema==0.0.4 - # via - # -r requirements/edx/base.txt - # coreapi - # drf-yasg crowdsourcehinter-xblock==0.7 # via -r requirements/edx/base.txt cryptography==42.0.8 @@ -455,9 +446,8 @@ drf-jwt==1.19.2 # edx-drf-extensions drf-spectacular==0.27.2 # via -r requirements/edx/base.txt -drf-yasg==1.21.5 +drf-yasg==1.21.7 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # django-user-tasks # edx-api-doc-tools @@ -695,15 +685,10 @@ isodate==0.6.1 # via # -r requirements/edx/base.txt # python3-saml -itypes==1.2.0 - # via - # -r requirements/edx/base.txt - # coreapi jinja2==3.1.4 # via # -r requirements/edx/base.txt # code-annotations - # coreschema # sphinx jmespath==1.0.1 # via @@ -1116,6 +1101,7 @@ pyyaml==6.0.1 # -r requirements/edx/base.txt # code-annotations # drf-spectacular + # drf-yasg # edx-django-release-util # edx-i18n-tools # sphinxcontrib-openapi @@ -1142,7 +1128,6 @@ requests==2.32.3 # -r requirements/edx/base.txt # algoliasearch # analytics-python - # coreapi # django-oauth-toolkit # edx-bulk-grades # edx-drf-extensions @@ -1172,14 +1157,6 @@ rpds-py==0.18.1 # -r requirements/edx/base.txt # jsonschema # referencing -ruamel-yaml==0.18.6 - # via - # -r requirements/edx/base.txt - # drf-yasg -ruamel-yaml-clib==0.2.8 - # via - # -r requirements/edx/base.txt - # ruamel-yaml rules==3.4 # via # -r requirements/edx/base.txt @@ -1379,7 +1356,6 @@ unicodecsv==0.14.1 uritemplate==4.1.1 # via # -r requirements/edx/base.txt - # coreapi # drf-spectacular # drf-yasg urllib3==1.26.18 diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt index 4aa5b3e67ad5..0044ebabc2e8 100644 --- a/requirements/edx/testing.txt +++ b/requirements/edx/testing.txt @@ -198,15 +198,6 @@ codejail-includes==1.0.0 # via -r requirements/edx/base.txt colorama==0.4.6 # via tox -coreapi==2.3.3 - # via - # -r requirements/edx/base.txt - # drf-yasg -coreschema==0.0.4 - # via - # -r requirements/edx/base.txt - # coreapi - # drf-yasg coverage[toml]==7.5.3 # via # -r requirements/edx/coverage.txt @@ -488,9 +479,8 @@ drf-jwt==1.19.2 # edx-drf-extensions drf-spectacular==0.27.2 # via -r requirements/edx/base.txt -drf-yasg==1.21.5 +drf-yasg==1.21.7 # via - # -c requirements/edx/../constraints.txt # -r requirements/edx/base.txt # django-user-tasks # edx-api-doc-tools @@ -765,16 +755,11 @@ isort==5.13.2 # via # -r requirements/edx/testing.in # pylint -itypes==1.2.0 - # via - # -r requirements/edx/base.txt - # coreapi jinja2==3.1.4 # via # -r requirements/edx/base.txt # -r requirements/edx/coverage.txt # code-annotations - # coreschema # diff-cover # fastapi jmespath==1.0.1 @@ -1269,6 +1254,7 @@ pyyaml==6.0.1 # -r requirements/edx/base.txt # code-annotations # drf-spectacular + # drf-yasg # edx-django-release-util # edx-i18n-tools # uvicorn @@ -1295,7 +1281,6 @@ requests==2.32.3 # -r requirements/edx/base.txt # algoliasearch # analytics-python - # coreapi # django-oauth-toolkit # edx-bulk-grades # edx-drf-extensions @@ -1327,14 +1312,6 @@ rpds-py==0.18.1 # -r requirements/edx/base.txt # jsonschema # referencing -ruamel-yaml==0.18.6 - # via - # -r requirements/edx/base.txt - # drf-yasg -ruamel-yaml-clib==0.2.8 - # via - # -r requirements/edx/base.txt - # ruamel-yaml rules==3.4 # via # -r requirements/edx/base.txt @@ -1517,7 +1494,6 @@ unidiff==0.7.5 uritemplate==4.1.1 # via # -r requirements/edx/base.txt - # coreapi # drf-spectacular # drf-yasg urllib3==1.26.18