Files
frontend-app-learning/src/pacts/frontend-app-learning-lms.json
Leangseu Kim 36b3c36379 feat: whole course translations (#1330)
* feat: add language selection

chore: update tests so we have less error message

test: update test

* test: update tests

* chore: remove duplicate translation

* chore: lint for console

* chore: remove comments

* chore: make sure the affect url frame refresh after the language selection change

* chore: add whole_course_translation and language to courseware meta (#1305)

* feat: Add feedback widget UI mock

Add unit tests

Fix snapshot

Clean Sequence component logEvent calls

Clean unit test

Put feedback widget behind whole course translation flag

Fix useFeedbackWidget test

* chore: add src and dest translation

* feat: first iteration of plugin translation

chore: update plugin instruction

* feat: Connect FeedbackWidget with backend services (#1325)

Connect FeedbackWidget with backend services

Move feedback widget to unit translation plugin

* feat: Add authentication to WCT feedback endpoints (#1329)

* chore: add fetch config and move feedback widget for the plugin

chore: rewrite and test the api request

chore: rebase

chore: update translation feedback

chore: test

chore: add more tests

* chore: rebase

* chore: update requested change

* chore: update package

* chore: upgrade frontend-lib-special-exams and frontend-lib-learning-assistant

* chore: update tests

* chore: remove unneeded package

* chore: update example config

* chore: add source-map-loader

* fix: feedback widget render error after submit feedback (#1335)

* fix: feedback widget render error after submit feedback

* fix: widget logic

---------

Co-authored-by: Rodrigo Martin <rodrigom_94@hotmail.com>
2024-03-27 13:39:36 -04:00

763 lines
26 KiB
JSON

{
"consumer": {
"name": "frontend-app-learning"
},
"provider": {
"name": "lms"
},
"interactions": [
{
"description": "a request to fetch tab",
"providerState": "Tab data exists for course_id course-v1:edX+DemoX+Demo_Course",
"request": {
"method": "GET",
"path": "/api/course_home/v1/course_metadata/course-v1:edX+DemoX+Demo_Course"
},
"response": {
"status": 200,
"headers": {
},
"body": {
"can_show_upgrade_sock": false,
"verified_mode": {
"access_expiration_date": null,
"currency": "USD",
"currency_symbol": "$",
"price": 149,
"sku": "8CF08E5",
"upgrade_url": "http://localhost:18130/basket/add/?sku=8CF08E5"
},
"celebrations": {
"first_section": false,
"streak_length_to_celebrate": null,
"streak_discount_enabled": false
},
"course_access": {
"has_access": true,
"error_code": null,
"developer_message": null,
"user_message": null,
"additional_context_user_message": null,
"user_fragment": null
},
"course_id": "course-v1:edX+DemoX+Demo_Course",
"is_enrolled": true,
"is_self_paced": false,
"is_staff": true,
"number": "DemoX",
"org": "edX",
"original_user_is_staff": true,
"start": "2013-02-05T05:00:00Z",
"tabs": [
{
"tab_id": "courseware",
"title": "Course",
"url": "http://localhost:2000/course/course-v1:edX+DemoX+Demo_Course/home"
}
],
"title": "Demonstration Course",
"username": "edx"
},
"matchingRules": {
"$.body.can_show_upgrade_sock": {
"match": "type"
},
"$.body.verified_mode": {
"match": "type"
},
"$.body.celebrations": {
"match": "type"
},
"$.body.course_access.has_access": {
"match": "type"
},
"$.body.course_id": {
"match": "regex",
"regex": "[\\w\\-~.:]"
},
"$.body.is_enrolled": {
"match": "type"
},
"$.body.is_self_paced": {
"match": "type"
},
"$.body.is_staff": {
"match": "type"
},
"$.body.number": {
"match": "type"
},
"$.body.org": {
"match": "type"
},
"$.body.original_user_is_staff": {
"match": "type"
},
"$.body.start": {
"match": "regex",
"regex": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$"
},
"$.body.tabs": {
"min": 1
},
"$.body.tabs[*].*": {
"match": "type"
},
"$.body.title": {
"match": "type"
},
"$.body.username": {
"match": "type"
}
}
}
},
{
"description": "a request to fetch dates tab",
"providerState": "course date blocks exist for course_id course-v1:edX+DemoX+Demo_Course",
"request": {
"method": "GET",
"path": "/api/course_home/v1/dates/course-v1:edX+DemoX+Demo_Course"
},
"response": {
"status": 200,
"headers": {
},
"body": {
"dates_banner_info": {
"missed_deadlines": false,
"content_type_gating_enabled": false,
"missed_gated_content": false,
"verified_upgrade_link": "http://localhost:18130/basket/add/?sku=8CF08E5"
},
"course_date_blocks": [
{
"assignment_type": null,
"complete": null,
"date": "2013-02-05T05:00:00Z",
"date_type": "verified-upgrade-deadline",
"description": "You are still eligible to upgrade to a Verified Certificate! Pursue it to highlight the knowledge and skills you gain in this course.",
"learner_has_access": true,
"link": "http://localhost:18130/basket/add/?sku=8CF08E5",
"link_text": "Upgrade to Verified Certificate",
"title": "Verification Upgrade Deadline",
"extra_info": null,
"first_component_block_id": ""
}
],
"has_ended": false,
"learner_is_full_access": true,
"user_timezone": null
},
"matchingRules": {
"$.body.dates_banner_info": {
"match": "type"
},
"$.body.course_date_blocks": {
"min": 1
},
"$.body.course_date_blocks[*].*": {
"match": "type"
},
"$.body.course_date_blocks[*].date": {
"match": "regex",
"regex": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$"
},
"$.body.course_date_blocks[*].date_type": {
"match": "regex",
"regex": "^(event|todays-date|course-start-date|course-end-date|assignment-due-date|course-expired-date|certificate-available-date|verified-upgrade-deadline|verification-deadline-date)$"
},
"$.body.has_ended": {
"match": "type"
},
"$.body.learner_is_full_access": {
"match": "type"
}
}
}
},
{
"description": "a request to get course blocks",
"providerState": "Blocks data exists for course_id course-v1:edX+DemoX+Demo_Course",
"request": {
"method": "GET",
"path": "/api/courses/v2/blocks/",
"query": "course_id=course-v1%3AedX%2BDemoX%2BDemo_Course&username=Mock+User&depth=3&requested_fields=children%2Ceffort_activities%2Ceffort_time%2Cshow_gated_sections%2Cgraded%2Cspecial_exam_info%2Chas_scheduled_content"
},
"response": {
"status": 200,
"headers": {
},
"body": {
"root": "block-v1:edX+DemoX+Demo_Course+type@course+block@course",
"blocks": {
"block-v1:edX+DemoX+Demo_Course+type@course+block@course": {
"id": "block-v1:edX+DemoX+Demo_Course+type@course+block@course",
"block_id": "course",
"lms_web_url": "/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@course+block@course",
"legacy_web_url": "/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@course+block@course?experience=legacy",
"student_view_url": "/xblock/block-v1:edX+DemoX+Demo_Course+type@course+block@course",
"type": "course",
"display_name": "Demonstration Course"
}
}
},
"matchingRules": {
"$.body.root": {
"match": "type"
},
"$.body.blocks": {
"match": "type"
}
}
}
},
{
"description": "a request to get course metadata",
"providerState": "course metadata exists for course_id course-v1:edX+DemoX+Demo_Course",
"request": {
"method": "GET",
"path": "/api/courseware/course/course-v1:edX+DemoX+Demo_Course",
"query": "browser_timezone=Asia%2FKarachi"
},
"response": {
"status": 200,
"headers": {
},
"body": {
"access_expiration": {
"expiration_date": "2013-02-05T05:00:00Z",
"masquerading_expired_course": false,
"upgrade_deadline": "2013-02-05T05:00:00Z",
"upgrade_url": "link"
},
"can_show_upgrade_sock": false,
"content_type_gating_enabled": false,
"end": "2013-02-05T05:00:00Z",
"enrollment": {
"mode": "audit",
"is_active": true
},
"enrollment_start": "2013-02-05T05:00:00Z",
"enrollment_end": "2013-02-05T05:00:00Z",
"id": "course-v1:edX+DemoX+Demo_Course",
"license": "all-rights-reserved",
"name": "Demonstration Course",
"number": "DemoX",
"offer": {
"code": "code",
"expiration_date": "2013-02-05T05:00:00Z",
"original_price": "$99",
"discounted_price": "$99",
"percentage": 50,
"upgrade_url": "url"
},
"org": "edX",
"related_programs": null,
"short_description": "",
"start": "2013-02-05T05:00:00Z",
"tabs": [
{
"title": "Course",
"slug": "courseware",
"priority": 0,
"type": "courseware",
"url": "http://localhost:2000/course/course-v1:edX+DemoX+Demo_Course/home"
}
],
"user_timezone": null,
"verified_mode": {
"access_expiration_date": "2013-02-05T05:00:00Z",
"currency": "USD",
"currency_symbol": "$",
"price": 149,
"sku": "8CF08E5",
"upgrade_url": "http://localhost:18130/basket/add/?sku=8CF08E5"
},
"show_calculator": false,
"original_user_is_staff": true,
"is_staff": true,
"course_access": {
"has_access": true,
"error_code": null,
"developer_message": null,
"user_message": null,
"additional_context_user_message": null,
"user_fragment": null
},
"notes": {
"enabled": false,
"visible": true
},
"marketing_url": null,
"celebrations": {
"first_section": false,
"streak_length_to_celebrate": null,
"streak_discount_enabled": false
},
"user_has_passing_grade": false,
"course_exit_page_is_active": false,
"certificate_data": {
"cert_status": "audit_passing",
"cert_web_view_url": null,
"certificate_available_date": null
},
"verify_identity_url": null,
"verification_status": "none",
"linkedin_add_to_profile_url": null,
"user_needs_integrity_signature": false,
"learning_assistant_enabled": false,
"language": "en",
"whole_course_translation_enabled": false
},
"matchingRules": {
"$.body.access_expiration.expiration_date": {
"match": "regex",
"regex": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$"
},
"$.body.access_expiration.masquerading_expired_course": {
"match": "type"
},
"$.body.access_expiration.upgrade_deadline": {
"match": "regex",
"regex": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$"
},
"$.body.access_expiration.upgrade_url": {
"match": "type"
},
"$.body.can_show_upgrade_sock": {
"match": "type"
},
"$.body.content_type_gating_enabled": {
"match": "type"
},
"$.body.end": {
"match": "regex",
"regex": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$"
},
"$.body.enrollment.mode": {
"match": "regex",
"regex": "^(audit|verified)$"
},
"$.body.enrollment.is_active": {
"match": "type"
},
"$.body.enrollment_start": {
"match": "regex",
"regex": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$"
},
"$.body.enrollment_end": {
"match": "regex",
"regex": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$"
},
"$.body.id": {
"match": "regex",
"regex": "[\\w\\-~.:]"
},
"$.body.license": {
"match": "type"
},
"$.body.name": {
"match": "type"
},
"$.body.number": {
"match": "type"
},
"$.body.offer.code": {
"match": "type"
},
"$.body.offer.expiration_date": {
"match": "regex",
"regex": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$"
},
"$.body.offer.original_price": {
"match": "type"
},
"$.body.offer.discounted_price": {
"match": "type"
},
"$.body.offer.percentage": {
"match": "type"
},
"$.body.offer.upgrade_url": {
"match": "type"
},
"$.body.org": {
"match": "type"
},
"$.body.short_description": {
"match": "type"
},
"$.body.start": {
"match": "regex",
"regex": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$"
},
"$.body.tabs": {
"min": 1
},
"$.body.tabs[*].*": {
"match": "type"
},
"$.body.verified_mode": {
"match": "type"
},
"$.body.verified_mode.access_expiration_date": {
"match": "regex",
"regex": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$"
},
"$.body.show_calculator": {
"match": "type"
},
"$.body.original_user_is_staff": {
"match": "type"
},
"$.body.is_staff": {
"match": "type"
},
"$.body.course_access": {
"match": "type"
},
"$.body.notes.enabled": {
"match": "type"
},
"$.body.notes.visible": {
"match": "type"
},
"$.body.celebrations.first_section": {
"match": "type"
},
"$.body.celebrations.streak_discount_enabled": {
"match": "type"
},
"$.body.user_has_passing_grade": {
"match": "type"
},
"$.body.course_exit_page_is_active": {
"match": "type"
},
"$.body.certificate_data.cert_status": {
"match": "type"
},
"$.body.verification_status": {
"match": "type"
},
"$.body.user_needs_integrity_signature": {
"match": "type"
},
"$.body.learning_assistant_enabled": {
"match": "type"
},
"$.body.whole_course_translation_enabled": {
"match": "type"
}
}
}
},
{
"description": "a request to get sequence metadata",
"providerState": "sequence metadata data exists for sequence_id block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
"request": {
"method": "GET",
"path": "/api/courseware/sequence/block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions"
},
"response": {
"status": 200,
"headers": {
},
"body": {
"items": [
{
"content": "",
"page_title": "Pointing on a Picture",
"type": "problem",
"id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@2152d4a4aadc4cb0af5256394a3d1fc7",
"bookmarked": false,
"path": "Example Week 1: Getting Started > Homework - Question Styles > Pointing on a Picture",
"graded": true,
"contains_content_type_gated_content": false,
"href": ""
}
],
"item_id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
"is_time_limited": false,
"is_proctored": false,
"is_hidden_after_due": true,
"position": null,
"tag": "sequential",
"banner_text": null,
"save_position": false,
"show_completion": false,
"gated_content": {
"prereq_id": null,
"prereq_url": null,
"prereq_section_name": null,
"gated": false,
"gated_section_name": "Homework - Question Styles"
},
"display_name": "Homework - Question Styles",
"format": "Homework"
},
"matchingRules": {
"$.body.items": {
"min": 1
},
"$.body.items[*].*": {
"match": "type"
},
"$.body.item_id": {
"match": "type"
},
"$.body.is_time_limited": {
"match": "type"
},
"$.body.is_proctored": {
"match": "type"
},
"$.body.tag": {
"match": "type"
},
"$.body.save_position": {
"match": "type"
},
"$.body.show_completion": {
"match": "type"
},
"$.body.gated_content": {
"match": "type"
},
"$.body.display_name": {
"match": "type"
},
"$.body.format": {
"match": "type"
}
}
}
},
{
"description": "a request to set sequence position against activeUnitIndex",
"providerState": "sequence position data exists for course_id course-v1:edX+DemoX+Demo_Course, sequence_id block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions and activeUnitIndex 0",
"request": {
"method": "POST",
"path": "/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions/handler/goto_position",
"body": {
"position": 1
}
},
"response": {
"status": 200,
"headers": {
},
"body": {
"success": true
},
"matchingRules": {
"$.body.success": {
"match": "type"
}
}
}
},
{
"description": "a request to get completion block",
"providerState": "completion block data exists for course_id course-v1:edX+DemoX+Demo_Course, sequence_id block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions and usageId block-v1:edX+DemoX+Demo_Course+type@vertical+block@47dbd5f836544e61877a483c0b75606c",
"request": {
"method": "POST",
"path": "/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions/handler/get_completion",
"body": {
"usage_key": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@47dbd5f836544e61877a483c0b75606c"
}
},
"response": {
"status": 200,
"headers": {
},
"body": {
"complete": true
},
"matchingRules": {
"$.body.complete": {
"match": "type"
}
}
}
},
{
"description": "a request to get Resume block",
"providerState": "Resume block exists for course_id course-v1:edX+DemoX+Demo_Course",
"request": {
"method": "GET",
"path": "/api/courseware/resume/course-v1:edX+DemoX+Demo_Course"
},
"response": {
"status": 200,
"headers": {
},
"body": {
"block_id": "642fadf46d074aabb637f20af320fb31",
"section_id": "642fadf46d074aabb637f20af320fb87",
"unit_id": "642fadf46d074aabb637f20af320fb99"
},
"matchingRules": {
"$.body.block_id": {
"match": "type"
},
"$.body.section_id": {
"match": "type"
},
"$.body.unit_id": {
"match": "type"
}
}
}
},
{
"description": "a request to send activation email",
"providerState": "A logged-in user may or may not be active",
"request": {
"method": "POST",
"path": "/api/send_account_activation_email"
},
"response": {
"status": 200,
"headers": {
}
}
},
{
"description": "a request to get a learning sequence outline",
"providerState": "Learning sequence outline exists for course_id course-v1:edX+DemoX+Demo_Course",
"request": {
"method": "GET",
"path": "/api/learning_sequences/v1/course_outline/course-v1:edX+DemoX+Demo_Course"
},
"response": {
"status": 200,
"headers": {
},
"body": {
"course_key": "block-v1:edX+DemoX+Demo_Course",
"title": "Demo Course",
"outline": {
"sections": [
],
"sequences": [
]
}
},
"matchingRules": {
"$.body.course_key": {
"match": "type"
},
"$.body.title": {
"match": "type"
}
}
}
},
{
"description": "a request to get an outline",
"providerState": "Outline exists for course_id course-v1:edX+DemoX+Demo_Course",
"request": {
"method": "GET",
"path": "/api/learning_sequences/v1/course_outline/course-v1:edX+DemoX+Demo_Course"
},
"response": {
"status": 200,
"headers": {
},
"body": {
"course_key": "block-v1:edX+DemoX+Demo_Course",
"title": "Demo Course",
"outline": {
"sections": [
],
"sequences": {
}
}
},
"matchingRules": {
"$.body.course_key": {
"match": "type"
},
"$.body.title": {
"match": "type"
}
}
}
},
{
"description": "a request to get an outline",
"providerState": "Outline exists with inaccessible sequences for course_id course-v1:edX+DemoX+Demo_Course",
"request": {
"method": "GET",
"path": "/api/learning_sequences/v1/course_outline/course-v1:edX+DemoX+Demo_Course"
},
"response": {
"status": 200,
"headers": {
},
"body": {
"course_key": "block-v1:edX+DemoX+Demo_Course",
"title": "Demo Course",
"outline": {
"sections": [
{
"id": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@partial",
"title": "Partially accessible",
"sequence_ids": [
"block-v1:edX+DemoX+Demo_Course+type@sequential+block@accessible",
"block-v1:edX+DemoX+Demo_Course+type@sequential+block@nope1"
]
},
{
"id": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@nope",
"title": "Wholly inaccessible",
"sequence_ids": [
"block-v1:edX+DemoX+Demo_Course+type@sequential+block@nope2"
]
}
],
"sequences": {
"block-v1:edX+DemoX+Demo_Course+type@sequential+block@accessible": {
"id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@accessible",
"title": "Can access",
"accessible": true
},
"block-v1:edX+DemoX+Demo_Course+type@sequential+block@nope1": {
"id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@nope1",
"title": "Cannot access",
"accessible": false
},
"block-v1:edX+DemoX+Demo_Course+type@sequential+block@nope2": {
"id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@nope2",
"title": "Still cannot access",
"accessible": false
}
}
}
},
"matchingRules": {
"$.body.course_key": {
"match": "type"
},
"$.body.title": {
"match": "type"
},
"$.body.outline": {
"match": "type"
}
}
}
}
],
"metadata": {
"pactSpecification": {
"version": "2.0.0"
}
}
}