Skip to content

Release 0.56.2#3000

Closed
odlbot wants to merge 3 commits intoreleasefrom
release-candidate
Closed

Release 0.56.2#3000
odlbot wants to merge 3 commits intoreleasefrom
release-candidate

Conversation

@odlbot
Copy link
Contributor

@odlbot odlbot commented Mar 2, 2026

Anastasia Beglova

@github-actions
Copy link

github-actions bot commented Mar 2, 2026

OpenAPI Changes

Show/hide 412 changes: 30 error, 21 warning, 361 info
412 changes: 30 error, 21 warning, 361 info
error	[response-property-one-of-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added '#/components/schemas/DocumentResource' to the 'results/items/' 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/v1/featured/
		added '#/components/schemas/DocumentResource' to the 'results/items/' response property 'oneOf' list for the response status '200'

error	[response-body-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		added '#/components/schemas/DocumentResource' to the response body 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added '#/components/schemas/DocumentResource' to the 'results/items/' response property 'oneOf' list for the response status '200'

error	[response-body-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		added '#/components/schemas/DocumentResource' to the response body 'oneOf' list for the response status '200'

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		added '#/components/schemas/DocumentResource' to the '/items/resource/allOf[#/components/schemas/LearningResource]/' 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/v1/learning_resources/{id}/similar/
		added '#/components/schemas/DocumentResource' to the '/items/' 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/v1/learning_resources/{id}/userlists/
		added '#/components/schemas/DocumentResource' to the '/items/resource/allOf[#/components/schemas/LearningResource]/' 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/v1/learning_resources/{id}/vector_similar/
		added '#/components/schemas/DocumentResource' to the '/items/' 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/v1/learning_resources/{learning_resource_id}/items/
		added '#/components/schemas/DocumentResource' to the 'results/items/resource/allOf[#/components/schemas/LearningResource]/' 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/v1/learning_resources/{learning_resource_id}/items/{id}/
		added '#/components/schemas/DocumentResource' to the 'resource/allOf[#/components/schemas/LearningResource]/' 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/v1/learning_resources_search/
		added '#/components/schemas/DocumentResource' to the 'results/items/' response property 'oneOf' list for the response status '200'

error	[request-property-enum-value-removed] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		removed the enum value 'learning_material' of the request property 'resource_type/items/' (media type: application/json)

error	[request-property-enum-value-removed] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		removed the enum value 'learning_material' of the request property 'resource_type/items/' (media type: multipart/form-data)

error	[request-property-enum-value-removed] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		removed the enum value 'learning_material' of the request property 'resource_type/items/' (media type: application/x-www-form-urlencoded)

error	[request-property-enum-value-removed] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		removed the enum value 'resource_category' of the request property 'aggregations/items/' (media type: application/json)

error	[request-property-enum-value-removed] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		removed the enum value 'resource_category' of the request property 'aggregations/items/' (media type: multipart/form-data)

error	[request-property-enum-value-removed] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		removed the enum value 'resource_category' of the request property 'aggregations/items/' (media type: application/x-www-form-urlencoded)

error	[response-property-one-of-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learningpaths/{learning_resource_id}/items/
		added '#/components/schemas/DocumentResource' to the 'results/items/resource/allOf[#/components/schemas/LearningResource]/' 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/v1/learningpaths/{learning_resource_id}/items/
		added '#/components/schemas/DocumentResource' to the 'resource/allOf[#/components/schemas/LearningResource]/' 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/v1/learningpaths/{learning_resource_id}/items/{id}/
		added '#/components/schemas/DocumentResource' to the 'resource/allOf[#/components/schemas/LearningResource]/' 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/v1/learningpaths/{learning_resource_id}/items/{id}/
		added '#/components/schemas/DocumentResource' to the 'resource/allOf[#/components/schemas/LearningResource]/' 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/v1/podcasts/{learning_resource_id}/items/
		added '#/components/schemas/DocumentResource' to the 'results/items/resource/allOf[#/components/schemas/LearningResource]/' 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/v1/podcasts/{learning_resource_id}/items/{id}/
		added '#/components/schemas/DocumentResource' to the 'resource/allOf[#/components/schemas/LearningResource]/' 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/v1/userlists/{userlist_id}/items/
		added '#/components/schemas/DocumentResource' to the 'results/items/resource/allOf[#/components/schemas/LearningResource]/' 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/v1/userlists/{userlist_id}/items/
		added '#/components/schemas/DocumentResource' to the 'resource/allOf[#/components/schemas/LearningResource]/' 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/v1/userlists/{userlist_id}/items/{id}/
		added '#/components/schemas/DocumentResource' to the 'resource/allOf[#/components/schemas/LearningResource]/' 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/v1/userlists/{userlist_id}/items/{id}/
		added '#/components/schemas/DocumentResource' to the 'resource/allOf[#/components/schemas/LearningResource]/' 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/v1/video_playlists/{learning_resource_id}/items/
		added '#/components/schemas/DocumentResource' to the 'results/items/resource/allOf[#/components/schemas/LearningResource]/' 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/v1/video_playlists/{learning_resource_id}/items/{id}/
		added '#/components/schemas/DocumentResource' to the 'resource/allOf[#/components/schemas/LearningResource]/' response property 'oneOf' list for the response status '200'

warning	[request-parameter-removed] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/courses/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resource_display_info/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/summary/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_user_subscription/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_user_subscription/check/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-property-removed] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		removed the request property 'resource_category' (media type: application/x-www-form-urlencoded)

warning	[request-property-removed] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		removed the request property 'resource_category' (media type: multipart/form-data)

warning	[request-property-removed] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		removed the request property 'resource_category' (media type: application/json)

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learningpaths/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/podcast_episodes/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/podcasts/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/programs/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/video_playlists/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

warning	[request-parameter-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/videos/
		deleted the 'query' request parameter 'resource_category'
		This is a warning because some apps may return an error when receiving a parameter that they do not expect. It is recommended to deprecate the parameter first.

info	[new-optional-request-parameter] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added the new optional 'query' request parameter 'resource_type_group'

info	[response-property-default-value-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-property-discriminator-mapping-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added 'document' discriminator mapping keys to the 'results/items/' response property for the response status '200'

info	[response-property-discriminator-mapping-deleted] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		removed 'learning_material' discriminator mapping keys from the 'results/items/' response property for the response status '200'

info	[response-property-one-of-removed] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		removed '#/components/schemas/LearningMaterialResource' from the 'results/items/' response property 'oneOf' list for the response status '200'

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v0.yaml	
	in API GET /api/v0/vector_learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

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

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

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		added the new optional 'query' request parameter 'resource_type_group'

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-property-discriminator-mapping-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		added 'document' discriminator mapping keys to the 'results/items/' response property for the response status '200'

info	[response-property-discriminator-mapping-deleted] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		removed 'learning_material' discriminator mapping keys from the 'results/items/' response property for the response status '200'

info	[response-property-one-of-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		removed '#/components/schemas/LearningMaterialResource' from the 'results/items/' response property 'oneOf' list for the response status '200'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		added the required property 'results/items/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		added the required property 'results/items/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		added the required property 'results/items/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		added the required property 'results/items/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		added the required property 'results/items/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		added the required property 'results/items/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		added the required property 'results/items/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		added the required property 'results/items/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/
		added the required property 'results/items/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

info	[response-body-discriminator-mapping-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		added 'document' mapping keys to the response discriminator for the response status '200'

info	[response-body-discriminator-mapping-deleted] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		removed 'learning_material' mapping keys from the response discriminator for the response status '200'

info	[response-body-one-of-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		removed '#/components/schemas/LearningMaterialResource' from the response body 'oneOf' list for the response status '200'

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		added the required property '/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		added the required property '/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		added the required property '/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		added the required property '/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		added the required property '/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		added the required property '/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		added the required property '/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		added the required property '/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/featured/{id}/
		added the required property '/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resource_display_info/
		added the new optional 'query' request parameter 'resource_type_group'

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added the new optional 'query' request parameter 'resource_type_group'

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-property-discriminator-mapping-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added 'document' discriminator mapping keys to the 'results/items/' response property for the response status '200'

info	[response-property-discriminator-mapping-deleted] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		removed 'learning_material' discriminator mapping keys from the 'results/items/' response property for the response status '200'

info	[response-property-one-of-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		removed '#/components/schemas/LearningMaterialResource' from the 'results/items/' response property 'oneOf' list for the response status '200'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added the required property 'results/items/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added the required property 'results/items/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added the required property 'results/items/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added the required property 'results/items/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added the required property 'results/items/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added the required property 'results/items/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added the required property 'results/items/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added the required property 'results/items/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/
		added the required property 'results/items/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/summary/
		added the new optional 'query' request parameter 'resource_type_group'

info	[response-body-discriminator-mapping-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		added 'document' mapping keys to the response discriminator for the response status '200'

info	[response-body-discriminator-mapping-deleted] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		removed 'learning_material' mapping keys from the response discriminator for the response status '200'

info	[response-body-one-of-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		removed '#/components/schemas/LearningMaterialResource' from the response body 'oneOf' list for the response status '200'

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		added the required property '/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		added the required property '/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		added the required property '/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		added the required property '/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		added the required property '/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		added the required property '/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		added the required property '/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		added the required property '/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/
		added the required property '/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-property-discriminator-mapping-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		added 'document' discriminator mapping keys to the '/items/resource/allOf[#/components/schemas/LearningResource]/' response property for the response status '200'

info	[response-property-discriminator-mapping-deleted] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		removed 'learning_material' discriminator mapping keys from the '/items/resource/allOf[#/components/schemas/LearningResource]/' response property for the response status '200'

info	[response-property-one-of-removed] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		removed '#/components/schemas/LearningMaterialResource' from the '/items/resource/allOf[#/components/schemas/LearningResource]/' response property 'oneOf' list for the response status '200'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/learning_paths/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		added the new optional 'query' request parameter 'resource_type_group'

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-property-discriminator-mapping-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		added 'document' discriminator mapping keys to the '/items/' response property for the response status '200'

info	[response-property-discriminator-mapping-deleted] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		removed 'learning_material' discriminator mapping keys from the '/items/' response property for the response status '200'

info	[response-property-one-of-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		removed '#/components/schemas/LearningMaterialResource' from the '/items/' response property 'oneOf' list for the response status '200'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		added the required property '/items/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		added the required property '/items/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		added the required property '/items/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		added the required property '/items/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		added the required property '/items/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		added the required property '/items/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		added the required property '/items/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		added the required property '/items/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/similar/
		added the required property '/items/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-property-discriminator-mapping-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		added 'document' discriminator mapping keys to the '/items/resource/allOf[#/components/schemas/LearningResource]/' response property for the response status '200'

info	[response-property-discriminator-mapping-deleted] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		removed 'learning_material' discriminator mapping keys from the '/items/resource/allOf[#/components/schemas/LearningResource]/' response property for the response status '200'

info	[response-property-one-of-removed] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		removed '#/components/schemas/LearningMaterialResource' from the '/items/resource/allOf[#/components/schemas/LearningResource]/' response property 'oneOf' list for the response status '200'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API PATCH /api/v1/learning_resources/{id}/userlists/
		added the required property '/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		added the new optional 'query' request parameter 'resource_type_group'

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-property-discriminator-mapping-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		added 'document' discriminator mapping keys to the '/items/' response property for the response status '200'

info	[response-property-discriminator-mapping-deleted] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		removed 'learning_material' discriminator mapping keys from the '/items/' response property for the response status '200'

info	[response-property-one-of-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		removed '#/components/schemas/LearningMaterialResource' from the '/items/' response property 'oneOf' list for the response status '200'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		added the required property '/items/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		added the required property '/items/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		added the required property '/items/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		added the required property '/items/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		added the required property '/items/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		added the required property '/items/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		added the required property '/items/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		added the required property '/items/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{id}/vector_similar/
		added the required property '/items/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-property-discriminator-mapping-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		added 'document' discriminator mapping keys to the 'results/items/resource/allOf[#/components/schemas/LearningResource]/' response property for the response status '200'

info	[response-property-discriminator-mapping-deleted] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		removed 'learning_material' discriminator mapping keys from the 'results/items/resource/allOf[#/components/schemas/LearningResource]/' response property for the response status '200'

info	[response-property-one-of-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		removed '#/components/schemas/LearningMaterialResource' from the 'results/items/resource/allOf[#/components/schemas/LearningResource]/' response property 'oneOf' list for the response status '200'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		added the required property 'results/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		added the required property 'results/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		added the required property 'results/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		added the required property 'results/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		added the required property 'results/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		added the required property 'results/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		added the required property 'results/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		added the required property 'results/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/
		added the required property 'results/items/resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-property-discriminator-mapping-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		added 'document' discriminator mapping keys to the 'resource/allOf[#/components/schemas/LearningResource]/' response property for the response status '200'

info	[response-property-discriminator-mapping-deleted] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		removed 'learning_material' discriminator mapping keys from the 'resource/allOf[#/components/schemas/LearningResource]/' response property for the response status '200'

info	[response-property-one-of-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		removed '#/components/schemas/LearningMaterialResource' from the 'resource/allOf[#/components/schemas/LearningResource]/' response property 'oneOf' list for the response status '200'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		added the required property 'resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		added the required property 'resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		added the required property 'resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		added the required property 'resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		added the required property 'resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		added the required property 'resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		added the required property 'resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		added the required property 'resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources/{learning_resource_id}/items/{id}/
		added the required property 'resource/allOf[#/components/schemas/LearningResource]/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		added the new optional 'query' request parameter 'resource_type_group'

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

info	[response-property-discriminator-mapping-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		added 'document' discriminator mapping keys to the 'results/items/' response property for the response status '200'

info	[response-property-discriminator-mapping-deleted] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		removed 'learning_material' discriminator mapping keys from the 'results/items/' response property for the response status '200'

info	[response-property-one-of-removed] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		removed '#/components/schemas/LearningMaterialResource' from the 'results/items/' response property 'oneOf' list for the response status '200'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/ArticleResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/CourseResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/LearningPathResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/PodcastEpisodeResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/PodcastResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/ProgramResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/VideoPlaylistResource]/resource_type_group' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/VideoResource]/content_files' to the response with the '200' status

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_search/
		added the required property 'results/items/oneOf[#/components/schemas/VideoResource]/resource_type_group' to the response with the '200' status

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_user_subscription/
		added the new optional 'query' request parameter 'resource_type_group'

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learning_resources_user_subscription/check/
		added the new optional 'query' request parameter 'resource_type_group'

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		added the new optional 'query' request parameter 'resource_type_group'

info	[new-optional-request-property] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		added the new optional request property 'resource_type_group' (media type: application/json)

info	[new-optional-request-property] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		added the new optional request property 'resource_type_group' (media type: multipart/form-data)

info	[new-optional-request-property] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		added the new optional request property 'resource_type_group' (media type: application/x-www-form-urlencoded)

info	[request-property-enum-value-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		added the new 'document' enum value to the request property 'resource_type/items/' (media type: application/x-www-form-urlencoded)

info	[request-property-enum-value-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		added the new 'document' enum value to the request property 'resource_type/items/' (media type: multipart/form-data)

info	[request-property-enum-value-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		added the new 'document' enum value to the request property 'resource_type/items/' (media type: application/json)

info	[request-property-enum-value-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		added the new 'resource_type_group' enum value to the request property 'aggregations/items/' (media type: application/json)

info	[request-property-enum-value-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		added the new 'resource_type_group' enum value to the request property 'aggregations/items/' (media type: multipart/form-data)

info	[request-property-enum-value-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learning_resources_user_subscription/subscribe/
		added the new 'resource_type_group' enum value to the request property 'aggregations/items/' (media type: application/x-www-form-urlencoded)

info	[new-optional-request-parameter] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learningpaths/
		added the new optional 'query' request parameter 'resource_type_group'

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learningpaths/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

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

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learningpaths/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '201'

info	[response-required-property-added] at head/openapi/specs/v1.yaml	
	in API POST /api/v1/learningpaths/
		added the required property 'resource_type_group' to the response with the '201' status

info	[response-property-default-value-added] at head/openapi/specs/v1.yaml	
	in API GET /api/v1/learningpaths/{id}/
		the 'resource_category' response's property default value 'Learning Path' was added for the status '200'

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

info	[response-property-default-value-added] a...*[Comment body truncated]*

Comment on lines +37 to +42
migrations.AlterUniqueTogether(
name="contentfile",
unique_together={
("key", "run", "learning_resource", "direct_learning_resource")
},
),
Copy link

Choose a reason for hiding this comment

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

Bug: The query ContentFile.objects.filter(key=s3_path).first() in the OCW loader is now ambiguous due to a change in unique constraints, potentially fetching an incorrect record.
Severity: MEDIUM

Suggested Fix

Update the query in the get_file_content function within learning_resources/etl/ocw.py to be more specific. The filter should include the run or direct_learning_resource in addition to the key to ensure the correct ContentFile object is retrieved, preventing ambiguity.

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: learning_resources/migrations/0103_contentfilechanges.py#L37-L42

Potential issue: A change in the unique constraints for the `ContentFile` model allows
for duplicate `key` values across different parent objects (e.g., different `run`s).
However, the OCW ETL process in `get_file_content` queries for existing files using
`ContentFile.objects.filter(key=s3_path).first()`. This query only filters by `key` and
becomes ambiguous, potentially retrieving the wrong record if multiple `ContentFile`
objects share the same `key`. This can lead to incorrect reprocessing decisions based on
the wrong record's `updated_on` timestamp, causing files to be skipped or reprocessed
unnecessarily.

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

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.

3 participants