Skip to content

Release 0.138.7#3335

Merged
odlbot merged 9 commits intoreleasefrom
release-candidate
Mar 2, 2026
Merged

Release 0.138.7#3335
odlbot merged 9 commits intoreleasefrom
release-candidate

Conversation

@odlbot
Copy link
Copy Markdown
Contributor

@odlbot odlbot commented Feb 25, 2026

Chris Chudzicki

James Kachel

cp-at-mit

@github-actions
Copy link
Copy Markdown

OpenAPI Changes

Show/hide ## Changes for v0.yaml:
## Changes for v0.yaml:
54 changes: 14 error, 0 warning, 40 info
error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/discounts/{parent_lookup_discount}/products/
		added 'subschema #3' to the 'results/items/product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v0/discounts/{parent_lookup_discount}/products/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '201'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/discounts/{parent_lookup_discount}/products/{id}/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API PATCH /api/v0/discounts/{parent_lookup_discount}/products/{id}/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API PUT /api/v0/discounts/{parent_lookup_discount}/products/{id}/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/orders/history/
		added 'subschema #3' to the 'results/items/lines/items/product/allOf[#/components/schemas/Product]/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/orders/history/{id}/
		added 'subschema #3' to the 'lines/items/product/allOf[#/components/schemas/Product]/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/products/
		added 'subschema #3' to the 'results/items/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/products/all/
		added 'subschema #3' to the 'results/items/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v0/products/all/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '201'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/products/all/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API PATCH /api/v0/products/all/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API PUT /api/v0/products/all/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/products/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

info	[api-schema-removed] 	
	in components/schemas
		removed the schema 'PaginatedV2ProgramList'

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/course_runs/
		added the required property '/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/course_runs/{id}/
		added the required property 'enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/courses/
		added the required property 'results/items/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/courses/{id}/
		added the required property 'courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/enrollments/
		added the required property '/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v1/enrollments/
		added the required property 'run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API PATCH /api/v1/enrollments/{id}/
		added the required property 'run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API PUT /api/v1/enrollments/{id}/
		added the required property 'run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/program_enrollments/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/program_enrollments/
		added the required property '/items/program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API DELETE /api/v1/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API DELETE /api/v1/program_enrollments/{id}/
		added the required property 'program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/program_enrollments/{id}/
		added the required property 'program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/programs/
		added the required property 'results/items/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/programs/{id}/
		added the required property 'courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/course_certificates/{cert_uuid}/
		added the required property 'course_run/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/course_certificates/{cert_uuid}/
		added the required property 'course_run/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/courses/
		added the required property 'results/items/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/courses/
		added the required property 'results/items/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/courses/{id}/
		added the required property 'courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/courses/{id}/
		added the required property 'programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/enrollments/
		added the required property '/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/enrollments/
		added the required property '/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v2/enrollments/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v2/enrollments/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/pages/?fields=*&type=cms.coursepage
		added the required property 'items/items/course_details/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/pages/{id}/
		added the required property '/oneOf[#/components/schemas/CoursePageItem]/course_details/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/program_enrollments/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/program_enrollments/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API DELETE /api/v2/program_enrollments/{id}/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API DELETE /api/v2/program_enrollments/{id}/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/programs/
		added the required property 'results/items/products' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/programs/{id}/
		added the required property 'products' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v2/verified_program_enrollments/{program_id}/{courserun_id}/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v2/verified_program_enrollments/{program_id}/{courserun_id}/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '201' status

info	[endpoint-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v3/program_enrollments/
		endpoint added



## Changes for v1.yaml:
54 changes: 14 error, 0 warning, 40 info
error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v0/discounts/{parent_lookup_discount}/products/
		added 'subschema #3' to the 'results/items/product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v0/discounts/{parent_lookup_discount}/products/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '201'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v0/discounts/{parent_lookup_discount}/products/{id}/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v0/discounts/{parent_lookup_discount}/products/{id}/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API PUT /api/v0/discounts/{parent_lookup_discount}/products/{id}/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v0/orders/history/
		added 'subschema #3' to the 'results/items/lines/items/product/allOf[#/components/schemas/Product]/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v0/orders/history/{id}/
		added 'subschema #3' to the 'lines/items/product/allOf[#/components/schemas/Product]/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v0/products/
		added 'subschema #3' to the 'results/items/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v0/products/all/
		added 'subschema #3' to the 'results/items/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v0/products/all/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '201'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v0/products/all/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v0/products/all/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API PUT /api/v0/products/all/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v0/products/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

info	[api-schema-removed] 	
	in components/schemas
		removed the schema 'PaginatedV2ProgramList'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/course_runs/
		added the required property '/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/course_runs/{id}/
		added the required property 'enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/
		added the required property 'results/items/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{id}/
		added the required property 'courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/enrollments/
		added the required property '/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/enrollments/
		added the required property 'run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/enrollments/{id}/
		added the required property 'run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PUT /api/v1/enrollments/{id}/
		added the required property 'run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/program_enrollments/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/program_enrollments/
		added the required property '/items/program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API DELETE /api/v1/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API DELETE /api/v1/program_enrollments/{id}/
		added the required property 'program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/program_enrollments/{id}/
		added the required property 'program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/programs/
		added the required property 'results/items/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/programs/{id}/
		added the required property 'courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/course_certificates/{cert_uuid}/
		added the required property 'course_run/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/course_certificates/{cert_uuid}/
		added the required property 'course_run/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/courses/
		added the required property 'results/items/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/courses/
		added the required property 'results/items/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/courses/{id}/
		added the required property 'courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/courses/{id}/
		added the required property 'programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/enrollments/
		added the required property '/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/enrollments/
		added the required property '/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v2/enrollments/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v2/enrollments/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/pages/?fields=*&type=cms.coursepage
		added the required property 'items/items/course_details/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/pages/{id}/
		added the required property '/oneOf[#/components/schemas/CoursePageItem]/course_details/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/program_enrollments/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/program_enrollments/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API DELETE /api/v2/program_enrollments/{id}/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API DELETE /api/v2/program_enrollments/{id}/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/programs/
		added the required property 'results/items/products' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/programs/{id}/
		added the required property 'products' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v2/verified_program_enrollments/{program_id}/{courserun_id}/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v2/verified_program_enrollments/{program_id}/{courserun_id}/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '201' status

info	[endpoint-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v3/program_enrollments/
		endpoint added



## Changes for v2.yaml:
54 changes: 14 error, 0 warning, 40 info
error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v0/discounts/{parent_lookup_discount}/products/
		added 'subschema #3' to the 'results/items/product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API POST /api/v0/discounts/{parent_lookup_discount}/products/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '201'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v0/discounts/{parent_lookup_discount}/products/{id}/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API PATCH /api/v0/discounts/{parent_lookup_discount}/products/{id}/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API PUT /api/v0/discounts/{parent_lookup_discount}/products/{id}/
		added 'subschema #3' to the 'product/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v0/orders/history/
		added 'subschema #3' to the 'results/items/lines/items/product/allOf[#/components/schemas/Product]/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v0/orders/history/{id}/
		added 'subschema #3' to the 'lines/items/product/allOf[#/components/schemas/Product]/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v0/products/
		added 'subschema #3' to the 'results/items/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v0/products/all/
		added 'subschema #3' to the 'results/items/purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API POST /api/v0/products/all/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '201'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v0/products/all/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API PATCH /api/v0/products/all/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API PUT /api/v0/products/all/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v0/products/{id}/
		added 'subschema #3' to the 'purchasable_object' response property 'oneOf' list for the response status '200'

info	[api-schema-removed] 	
	in components/schemas
		removed the schema 'PaginatedV2ProgramList'

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/course_runs/
		added the required property '/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/course_runs/{id}/
		added the required property 'enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/courses/
		added the required property 'results/items/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/courses/{id}/
		added the required property 'courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/enrollments/
		added the required property '/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API POST /api/v1/enrollments/
		added the required property 'run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API PATCH /api/v1/enrollments/{id}/
		added the required property 'run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API PUT /api/v1/enrollments/{id}/
		added the required property 'run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/program_enrollments/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/program_enrollments/
		added the required property '/items/program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API DELETE /api/v1/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API DELETE /api/v1/program_enrollments/{id}/
		added the required property 'program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/program_enrollments/{id}/
		added the required property 'program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/programs/
		added the required property 'results/items/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/programs/{id}/
		added the required property 'courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/course_certificates/{cert_uuid}/
		added the required property 'course_run/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/course_certificates/{cert_uuid}/
		added the required property 'course_run/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/courses/
		added the required property 'results/items/courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/courses/
		added the required property 'results/items/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/courses/{id}/
		added the required property 'courseruns/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/courses/{id}/
		added the required property 'programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/enrollments/
		added the required property '/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/enrollments/
		added the required property '/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API POST /api/v2/enrollments/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API POST /api/v2/enrollments/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/pages/?fields=*&type=cms.coursepage
		added the required property 'items/items/course_details/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/pages/{id}/
		added the required property '/oneOf[#/components/schemas/CoursePageItem]/course_details/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/program_enrollments/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/program_enrollments/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API DELETE /api/v2/program_enrollments/{id}/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API DELETE /api/v2/program_enrollments/{id}/
		added the required property '/items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/program_enrollments/{id}/
		added the required property 'enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/programs/
		added the required property 'results/items/products' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/programs/{id}/
		added the required property 'products' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API POST /api/v2/verified_program_enrollments/{program_id}/{courserun_id}/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/programs/items/enrollment_modes' to the response with the '201' status

info	[response-required-property-added] at head/openapi/specs/v2.yaml	
	in API POST /api/v2/verified_program_enrollments/{program_id}/{courserun_id}/
		added the required property 'run/allOf[#/components/schemas/V2CourseRunWithCourse]/enrollment_modes' to the response with the '201' status

info	[endpoint-added] at head/openapi/specs/v2.yaml	
	in API POST /api/v3/program_enrollments/
		endpoint added



Unexpected changes? Ensure your branch is up-to-date with main (consider rebasing).

product_versions, product_object_ids, product_content_types = [], [], []
for product in products:
product_versions.append(Version.objects.get_for_object(product).first())
product_versions.append(Version.objects.get_for_object(product).get())
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: Using .get() instead of .first() on a Version queryset will raise MultipleObjectsReturned or DoesNotExist exceptions, as products commonly have multiple versions.
Severity: CRITICAL

Suggested Fix

Revert the use of .get() back to .first(). The .first() method correctly handles cases where a product has multiple versions by returning the most recent one, or returns None if no versions exist, preventing the application from crashing.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: ecommerce/models.py#L807

Potential issue: The change from `.first()` to `.get()` when fetching product versions
in `PendingOrder._get_or_create()` will cause exceptions during order creation. Since
products typically have multiple versions after any update, the call to `.get()` will
raise a `MultipleObjectsReturned` exception. If a product has no versions, it will raise
`DoesNotExist`. Both scenarios will cause the checkout process to fail with an unhandled
exception, preventing users from completing their purchases.

Did we get this right? 👍 / 👎 to inform future reviews.

@odlbot odlbot merged commit 8b7e345 into release Mar 2, 2026
12 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants