Skip to content

Initial variant support#3605

Open
jkachel wants to merge 5 commits into
mainfrom
jkachel/11401-initial-variant-support
Open

Initial variant support#3605
jkachel wants to merge 5 commits into
mainfrom
jkachel/11401-initial-variant-support

Conversation

@jkachel
Copy link
Copy Markdown
Contributor

@jkachel jkachel commented May 22, 2026

This is pretty WIP but getting this out so people can build off the API and do some testing.

What are the relevant tickets?

mitodl/hq#11401

Description (What does it do?)

Gets variant support built out for courses and runs.

Courses get a "possible variants" field that tells you what the course should have. This is exposed in the v2/courses API. A list of variant runs isn't in here; this is covered later.

Course runs get a couple new fields, variant_length and variant_industry, which are enums. The v2/courses API includes filtering for these like it does for language. (These fields are wrapped up in a mixin so that they can be put elsewhere and all this can be consistent.)

There's a new API in v3/courses/variants/ that takes a list of course IDs, a contract ID, and the variant options. Assuming the user is in the contract, this will return the runs that match the request or the default for each course.

How can this be tested?

The migrations set up a default set of variant options. The default is language = "en", industry = "", length = "".

You can add more variants through the Course page in the Django Admin. There's a new inline that should work for this. You can also set the variants in the Course Runs in Django Admin too. They're at the top of the page because the fields come from a mixin now (including language; I will fix this but it's not fixed now).

You will need courses in a B2B contract to test the variant stuff. This is technically B2B only other than the languages. The language fields that were there in the API are still there for that reason.

When you hit the v2/courses API, you should see a list of the possible variants that the course should support. You can then feed that into the v3/courses/variants/ API and get back the appropriate course runs for a given contract. See below for notes/questions.

Additional Context

As noted this is pretty WIP, there are tests failing and other tests need to be written, and the management commands will need some work too. But I don't think the API will change, unless someone needs me to change something about it.

I added the language validation stuff in for this - digging through the translation effort, it looks like we are tagging the runs using the language codes from openedx-translations. These are technically ISO 639-1 two-letter codes plus a locale code (es-419, de-DE, zh-HK). There's some code in here that decodes those using a lookup table and using pycountry for the ISO code - we should probably do something similar for how we display these in the frontend (since AFAIK it's just a hard-coded LUT there?).

It's really important that you fix up some of your course runs for this stuff to work. The default variant set expects an "en" language course run at least within your given contract, so make sure you have one. Setting the languages on these via a migration or something is actually kind of non-trivial given the constraints we have on the course run model.

Questions:

  • The variants API returns the course runs that match and the default runs. Should it just do one or the other?
  • The variants API is an "and" for the variant options - if you want english, healthcare, and short, then you will only get runs that match that (plus the defaults). I am assuming this is what we want, since the dropdown will be specific combinations, but is there a reason we might want these to be an "or" instead?

jkachel added 5 commits May 21, 2026 15:48
…s; added fields and migration; added to API output and included for filtering in v2/courses

more to do and no tests, but good stopping point
… other apps); add supported variant tracking table; add variant options mixin, update CourseRun to use that
… v2 serializer, regen the spec, few other ancillary fixes
…st prefetch according to B2B options; add migration to add default variant; fix some other issues that popped up
…ut a list of the variant runs for a given course
@github-actions
Copy link
Copy Markdown

OpenAPI Changes

Show/hide ## Changes for v0.yaml:
## Changes for v0.yaml:
98 changes: 0 error, 0 warning, 98 info
info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/course_runs/
		added the optional property `items/variant_industry` to the response with the `200` status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/course_runs/
		added the optional property `items/variant_length` 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/
		added the required property `items/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/course_runs/{id}/
		added the optional property `variant_length` 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 `language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/courses/
		added the optional property `results/items/courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/courses/{id}/
		added the optional property `courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/enrollments/
		added the optional property `items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v1/enrollments/
		added the optional property `run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` to the response with the `201` 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]/language_label` to the response with the `201` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API PATCH /api/v1/enrollments/{id}/
		added the optional property `run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` to the response with the `200` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API PUT /api/v1/enrollments/{id}/
		added the optional property `run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` 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]/language_label` to the response with the `200` status

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

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

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/program_enrollments/
		added the optional property `items/program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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]/language_label` 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/language_label` to the response with the `200` status

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

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

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API DELETE /api/v1/program_enrollments/{id}/
		added the optional property `program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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]/language_label` 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/language_label` to the response with the `200` status

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

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

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/program_enrollments/{id}/
		added the optional property `program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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]/language_label` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/programs/
		added the optional property `results/items/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v1/programs/{id}/
		added the optional property `courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/course_certificates/{cert_uuid}/
		added the optional property `course_run/variant_length` 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]/possible_variant_sets` 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/language_label` to the response with the `200` status

info	[new-optional-request-parameter] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/courses/
		added the new optional `query` request parameter `courseruns__variant_industry`

info	[new-optional-request-parameter] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/courses/
		added the new optional `query` request parameter `courseruns__variant_length`

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/courses/
		added the optional property `results/items/courseruns/items/variant_length` 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/language_label` 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/possible_variant_sets` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/courses/{id}/
		added the optional property `courseruns/items/variant_length` 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/language_label` 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 `possible_variant_sets` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/enrollments/
		added the optional property `items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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]/possible_variant_sets` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v2/enrollments/
		added the optional property `run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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]/course/allOf[#/components/schemas/V2Course]/possible_variant_sets` 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]/language_label` 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/possible_variant_sets` 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/possible_variant_sets` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/program_enrollments/
		added the optional property `items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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]/possible_variant_sets` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API DELETE /api/v2/program_enrollments/{id}/
		added the optional property `items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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]/possible_variant_sets` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v2/program_enrollments/{id}/
		added the optional property `enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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]/possible_variant_sets` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v2/verified_program_enrollments/{courserun_id}/
		added the optional property `run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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/{courserun_id}/
		added the required property `run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/possible_variant_sets` 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/{courserun_id}/
		added the required property `run/allOf[#/components/schemas/V2CourseRunWithCourse]/language_label` to the response with the `201` status

info	[endpoint-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v3/courses/variant_runs/
		endpoint added

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v3/enrollments/
		added the optional property `items/run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_industry` to the response with the `200` status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v3/enrollments/
		added the optional property `items/run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_length` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v3/enrollments/
		added the optional property `run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_industry` to the response with the `201` status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v3/enrollments/
		added the optional property `run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_length` to the response with the `201` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API POST /api/v3/enrollments/
		added the required property `run/allOf[#/components/schemas/CourseRunWithCourseV3]/language_label` to the response with the `201` status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v3/enrollments/{id}/
		added the optional property `run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_industry` to the response with the `200` status

info	[response-optional-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v3/enrollments/{id}/
		added the optional property `run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_length` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v3/enrollments/{id}/
		added the required property `run/allOf[#/components/schemas/CourseRunWithCourseV3]/language_label` to the response with the `200` status



## Changes for v1.yaml:
98 changes: 0 error, 0 warning, 98 info
info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/course_runs/
		added the optional property `items/variant_industry` to the response with the `200` status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/course_runs/
		added the optional property `items/variant_length` 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/
		added the required property `items/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/course_runs/{id}/
		added the optional property `variant_length` 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 `language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/
		added the optional property `results/items/courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/{id}/
		added the optional property `courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/enrollments/
		added the optional property `items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/enrollments/
		added the optional property `run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` to the response with the `201` 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]/language_label` to the response with the `201` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/enrollments/{id}/
		added the optional property `run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` to the response with the `200` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API PUT /api/v1/enrollments/{id}/
		added the optional property `run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` 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]/language_label` to the response with the `200` status

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

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

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/program_enrollments/
		added the optional property `items/program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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]/language_label` 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/language_label` to the response with the `200` status

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

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

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API DELETE /api/v1/program_enrollments/{id}/
		added the optional property `program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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]/language_label` 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/language_label` to the response with the `200` status

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

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

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/program_enrollments/{id}/
		added the optional property `program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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]/language_label` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/programs/
		added the optional property `results/items/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/programs/{id}/
		added the optional property `courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/course_certificates/{cert_uuid}/
		added the optional property `course_run/variant_length` 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]/possible_variant_sets` 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/language_label` to the response with the `200` status

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/courses/
		added the new optional `query` request parameter `courseruns__variant_industry`

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/courses/
		added the new optional `query` request parameter `courseruns__variant_length`

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/courses/
		added the optional property `results/items/courseruns/items/variant_length` 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/language_label` 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/possible_variant_sets` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/courses/{id}/
		added the optional property `courseruns/items/variant_length` 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/language_label` 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 `possible_variant_sets` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/enrollments/
		added the optional property `items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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]/possible_variant_sets` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v2/enrollments/
		added the optional property `run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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]/course/allOf[#/components/schemas/V2Course]/possible_variant_sets` 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]/language_label` 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/possible_variant_sets` 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/possible_variant_sets` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/program_enrollments/
		added the optional property `items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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]/possible_variant_sets` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API DELETE /api/v2/program_enrollments/{id}/
		added the optional property `items/enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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]/possible_variant_sets` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v2/program_enrollments/{id}/
		added the optional property `enrollments/items/run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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]/possible_variant_sets` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v2/verified_program_enrollments/{courserun_id}/
		added the optional property `run/allOf[#/components/schemas/V2CourseRunWithCourse]/variant_length` 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/{courserun_id}/
		added the required property `run/allOf[#/components/schemas/V2CourseRunWithCourse]/course/allOf[#/components/schemas/V2Course]/possible_variant_sets` 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/{courserun_id}/
		added the required property `run/allOf[#/components/schemas/V2CourseRunWithCourse]/language_label` to the response with the `201` status

info	[endpoint-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v3/courses/variant_runs/
		endpoint added

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v3/enrollments/
		added the optional property `items/run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_industry` to the response with the `200` status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v3/enrollments/
		added the optional property `items/run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_length` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v3/enrollments/
		added the optional property `run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_industry` to the response with the `201` status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v3/enrollments/
		added the optional property `run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_length` to the response with the `201` status

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

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v3/enrollments/{id}/
		added the optional property `run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_industry` to the response with the `200` status

info	[response-optional-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v3/enrollments/{id}/
		added the optional property `run/allOf[#/components/schemas/CourseRunWithCourseV3]/variant_length` to the response with the `200` status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v3/enrollments/{id}/
		added the required property `run/allOf[#/components/schemas/CourseRunWithCourseV3]/language_label` to the response with the `200` status



## Changes for v2.yaml:
98 changes: 0 error, 0 warning, 98 info
info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/course_runs/
		added the optional property `items/variant_industry` to the response with the `200` status

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/course_runs/
		added the optional property `items/variant_length` 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/
		added the required property `items/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/course_runs/{id}/
		added the optional property `variant_length` 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 `language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/courses/
		added the optional property `results/items/courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/courses/{id}/
		added the optional property `courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/enrollments/
		added the optional property `items/run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API POST /api/v1/enrollments/
		added the optional property `run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` to the response with the `201` 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]/language_label` to the response with the `201` status

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API PATCH /api/v1/enrollments/{id}/
		added the optional property `run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` to the response with the `200` 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]/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API PUT /api/v1/enrollments/{id}/
		added the optional property `run/allOf[#/components/schemas/V1CourseRunWithCourse]/variant_length` 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]/language_label` to the response with the `200` status

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

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

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/program_enrollments/
		added the optional property `items/program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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]/language_label` 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/language_label` to the response with the `200` status

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

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

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API DELETE /api/v1/program_enrollments/{id}/
		added the optional property `program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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]/language_label` 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/language_label` to the response with the `200` status

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

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

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/program_enrollments/{id}/
		added the optional property `program/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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]/language_label` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/programs/
		added the optional property `results/items/courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v1/programs/{id}/
		added the optional property `courses/allOf[#/components/schemas/V1CourseWithCourseRuns]/courseruns/items/variant_length` 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/language_label` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/course_certificates/{cert_uuid}/
		added the optional property `course_run/variant_length` 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]/possible_variant_sets` 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/language_label` to the response with the `200` status

info	[new-optional-request-parameter] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/courses/
		added the new optional `query` request parameter `courseruns__variant_industry`

info	[new-optional-request-parameter] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/courses/
		added the new optional `query` request parameter `courseruns__variant_length`

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/courses/
		added the optional property `results/items/courseruns/items/variant_length` 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/language_label` 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/possible_variant_sets` to the response with the `200` status

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

info	[response-optional-property-added] at head/openapi/specs/v2.yaml	
	in API GET /api/v2/courses/{id}/
		added the optional property `courseruns/items/variant_length` 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/language_label` 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 `possible_variant_sets` to the response with the `200` status

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

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

info	[response-required-property-add...*[Comment body truncated]*

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant