scorm_engine 0.7.3 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (181) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +2 -0
  3. data/lib/scorm_engine/api/endpoints.rb +2 -0
  4. data/lib/scorm_engine/api/endpoints/configuration.rb +94 -0
  5. data/lib/scorm_engine/configuration.rb +8 -6
  6. data/lib/scorm_engine/faraday/connection.rb +10 -4
  7. data/lib/scorm_engine/faraday/request.rb +17 -4
  8. data/lib/scorm_engine/models/dispatch_zip.rb +2 -0
  9. data/lib/scorm_engine/models/registration.rb +2 -0
  10. data/lib/scorm_engine/version.rb +1 -1
  11. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about/is_successful.yml +24 -15
  12. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about/knows_the_platform.yml +24 -15
  13. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about/knows_the_version.yml +24 -15
  14. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/accepts_before_option.yml +23 -15
  15. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/accepts_since_option.yml +23 -15
  16. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/is_successful.yml +23 -15
  17. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/tracks_combined_counts.yml +23 -15
  18. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/tracks_per_tenantcounts.yml +23 -15
  19. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_delete_app_configuration/fails_when_settings_are_invalid.yml +46 -0
  20. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_delete_app_configuration/is_successful.yml +42 -0
  21. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/includeMetadata/is_successful.yml +931 -0
  22. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/includeMetadata/returns_metadata_in_raw_response_when_included_in_options.yml +931 -0
  23. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/is_successful.yml +64 -0
  24. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/returns_settings_and_values.yml +64 -0
  25. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/fails_when_settings_are_invalid.yml +48 -0
  26. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/is_successful.yml +44 -0
  27. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/persists_the_settings.yml +207 -0
  28. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_delete_course/fails_when_id_is_invalid.yml +23 -15
  29. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_delete_course/works.yml +19 -9
  30. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_detail/fails_when_id_is_invalid.yml +23 -15
  31. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_detail/is_successful.yml +24 -16
  32. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_detail/results/sucessfully_creates_the_Course_attributes.yml +24 -16
  33. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_preview/fails_when_id_is_invalid.yml +23 -15
  34. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_preview/is_successful.yml +23 -15
  35. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_preview/results/returns_a_URL_string.yml +23 -15
  36. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_course_id_option/fetches_a_single_course_but_perhaps_multiple_versions.yml +23 -15
  37. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_course_id_option/returns_404_when_ID_is_invalid.yml +23 -15
  38. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_more_option_pagination_/returns_all_the_courses.yml +65 -45
  39. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_more_option_pagination_/returns_the_more_key_in_the_raw_response.yml +32 -24
  40. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_since_option/fails_when_passed_an_invalid_value.yml +20 -10
  41. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_since_option/works.yml +42 -19
  42. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/is_successful.yml +32 -19
  43. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/results/is_an_enumerator_of_Course_models.yml +32 -19
  44. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/results/sucessfully_creates_the_Course_attributes.yml +32 -19
  45. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration/fails_when_id_is_invalid.yml +23 -15
  46. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration/is_successful.yml +23 -15
  47. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration/results/makes_settings_available_as_key/value_pairs.yml +23 -15
  48. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/fails_when_course_id_is_invalid.yml +23 -15
  49. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  50. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/is_successful.yml +41 -19
  51. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/results/returns_the_value_as_a_string.yml +41 -19
  52. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/fails_when_id_is_invalid.yml +25 -15
  53. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/fails_when_settings_are_invalid.yml +24 -12
  54. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/is_successful.yml +21 -9
  55. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/persists_the_settings.yml +88 -48
  56. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/fails_when_course_id_is_invalid.yml +25 -15
  57. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  58. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/is_successful.yml +41 -19
  59. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/results/persists_the_changes.yml +61 -29
  60. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/successful_imports/works.yml +102 -95
  61. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/unsuccessful_imports/fails_to_import_given_an_invalid_url.yml +73 -294
  62. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_post_course_import/unsuccessful_imports/fails_to_import_a_previously_existing_course.yml +21 -9
  63. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/returns_success_even_when_id_is_invalid.yml +19 -9
  64. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/works.yml +19 -9
  65. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination/fails_when_id_is_invalid.yml +22 -14
  66. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination/is_successful.yml +22 -14
  67. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination/results/sucessfully_creates_the_destination_attributes.yml +22 -14
  68. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination_dispatches_registration_count/fails_when_invalid.yml +22 -14
  69. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination_dispatches_registration_count/works.yml +20 -10
  70. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_more_option_pagination_/returns_all_the_destinations.yml +48 -31
  71. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_more_option_pagination_/returns_the_more_key_in_the_raw_response.yml +23 -15
  72. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_since_option/fails_when_passed_an_invalid_value.yml +22 -13
  73. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_since_option/works.yml +24 -15
  74. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/is_successful.yml +23 -15
  75. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/results/is_an_enumerator_of_Destination_models.yml +23 -15
  76. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/results/sucessfully_creates_the_Destination_attributes.yml +65 -13
  77. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination/is_successful.yml +40 -18
  78. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination/is_successful_even_if_the_destination_id_is_not_unique.yml +21 -9
  79. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_enabled/fails_when_invalid.yml +24 -12
  80. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_enabled/works_when_false.yml +21 -9
  81. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_enabled/works_when_true.yml +21 -9
  82. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_registration_instancing/fails_when_invalid.yml +24 -12
  83. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_registration_instancing/works_when_false.yml +21 -9
  84. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_registration_instancing/works_when_true.yml +21 -9
  85. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_put_destination/is_successful.yml +21 -9
  86. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_put_destination/results/sucessfully_creates_the_destination_attributes.yml +43 -23
  87. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch/returns_success_even_when_id_is_invalid.yml +19 -7
  88. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch/works.yml +19 -7
  89. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch_registration_count/is_successful.yml +19 -7
  90. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch_registration_count/succeeds_even_when_id_is_invalid.yml +19 -7
  91. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch/fails_when_id_is_invalid.yml +22 -12
  92. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch/is_successful.yml +23 -13
  93. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch/results/sucessfully_creates_the_dispatch_attributes.yml +23 -13
  94. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_enabled/is_false_when_disabled.yml +39 -15
  95. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_enabled/is_true_when_enabled.yml +39 -15
  96. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/fails_when_id_is_invalid.yml +41 -19
  97. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/is_successful.yml +42 -20
  98. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/results/sucessfully_creates_the_dispatch_attributes.yml +42 -20
  99. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/fails_given_an_invalid_id.yml +22 -12
  100. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/fails_given_an_invalid_type.yml +20 -8
  101. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works.yml +24 -12
  102. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works_when_type_is_AICC.yml +24 -12
  103. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works_when_type_is_SCORM12.yml +24 -12
  104. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works_when_type_is_SCORM2004-3RD.yml +23 -11
  105. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_more_option_pagination_/returns_all_the_dispatches.yml +47 -27
  106. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_more_option_pagination_/returns_the_more_key_in_the_raw_response.yml +23 -13
  107. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_since_option/fails_when_passed_an_invalid_value.yml +20 -8
  108. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_since_option/works.yml +23 -13
  109. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/is_successful.yml +23 -13
  110. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/results/is_an_enumerator_of_dispatch_models.yml +23 -13
  111. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/results/sucessfully_creates_the_dispatch_attributes.yml +21 -44
  112. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_post_dispatch/is_successful.yml +38 -14
  113. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_post_dispatch/updates_if_same_dispatch_id.yml +65 -33
  114. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch/is_successful.yml +19 -7
  115. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch/results/sucessfully_creates_the_dispatch_attributes.yml +42 -20
  116. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch_enabled/fails_when_invalid.yml +22 -10
  117. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch_enabled/works_when_false.yml +19 -7
  118. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch_enabled/works_when_true.yml +19 -7
  119. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/is_successful.yml +23 -15
  120. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/reports_the_api_is_up.yml +23 -15
  121. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/with_invalid_password/is_unsuccessful.yml +25 -17
  122. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/with_invalid_password/returns_status_403.yml +25 -17
  123. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_delete_registration/is_failure_when_registration_does_not_exist.yml +23 -13
  124. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_delete_registration/is_successful_when_registration_exists.yml +19 -7
  125. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_exists/is_false_when_registration_does_not_exist.yml +23 -13
  126. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_exists/is_true_when_registration_exists.yml +20 -8
  127. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_instances/includes_results_we_expect.yml +26 -14
  128. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_instances/is_successful.yml +26 -14
  129. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_instances/returns_an_array_of_registrations.yml +26 -14
  130. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_launch_link/fails_when_id_is_invalid.yml +23 -13
  131. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_launch_link/is_successful.yml +23 -13
  132. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_launch_link/results/returns_a_URL_string.yml +23 -13
  133. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/detail/does_not_return_activity_details_by_default.yml +24 -14
  134. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/detail/returns_activity_details_if_requested.yml +24 -14
  135. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/fails_when_registration_does_not_exist.yml +23 -13
  136. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/returns_a_registration_when_it_exists.yml +24 -14
  137. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_course_id/excludes_results.yml +22 -12
  138. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_course_id/includes_results.yml +26 -14
  139. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_learner_id/excludes_results.yml +22 -12
  140. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_learner_id/includes_results.yml +26 -14
  141. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/includes_results_we_expect.yml +26 -14
  142. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/is_successful.yml +26 -14
  143. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/returns_an_array_of_registrations.yml +26 -14
  144. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/fails_if_course_id_is_invalid.yml +22 -10
  145. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/fails_if_registration_id_already_exists.yml +20 -8
  146. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/is_successful.yml +38 -14
  147. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/is_successful_even_when_given_a_UTF8/slashed_username.yml +38 -14
  148. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration/fails_when_id_is_invalid.yml +23 -15
  149. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration/is_successful.yml +23 -15
  150. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration/results/makes_settings_available_as_key/value_pairs.yml +23 -15
  151. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/fails_when_registration_id_is_invalid.yml +23 -15
  152. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  153. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/is_successful.yml +41 -19
  154. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/results/returns_the_value_as_a_string.yml +41 -19
  155. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/fails_when_id_is_invalid.yml +25 -15
  156. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/fails_when_settings_are_invalid.yml +24 -12
  157. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/is_successful.yml +21 -9
  158. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/persists_the_settings.yml +88 -48
  159. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/fails_when_registration_id_is_invalid.yml +25 -15
  160. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  161. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/is_successful.yml +41 -19
  162. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/results/persists_the_changes.yml +61 -29
  163. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_LaunchHistory/_get_registration_launch_history/fails_when_registration_does_not_exist.yml +23 -15
  164. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_LaunchHistory/_get_registration_launch_history/is_successful.yml +23 -31
  165. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_LaunchHistory/_get_registration_launch_history/returns_an_array_of_registration_launch_histories.yml +23 -31
  166. data/spec/scorm_engine/api/endpoints/about_spec.rb +1 -1
  167. data/spec/scorm_engine/api/endpoints/configuration_spec.rb +82 -0
  168. data/spec/scorm_engine/api/endpoints/courses/configuration_spec.rb +5 -5
  169. data/spec/scorm_engine/api/endpoints/courses_spec.rb +6 -6
  170. data/spec/scorm_engine/api/endpoints/destinations_spec.rb +2 -2
  171. data/spec/scorm_engine/api/endpoints/dispatches_spec.rb +1 -1
  172. data/spec/scorm_engine/api/endpoints/registrations/configuration_spec.rb +5 -5
  173. data/spec/scorm_engine/api/endpoints/registrations_spec.rb +4 -4
  174. data/spec/scorm_engine/api/endpoints/tenants/configuration_spec.rb +1 -1
  175. data/spec/scorm_engine/faraday/connection_spec.rb +23 -5
  176. data/spec/scorm_engine/models/base_spec.rb +9 -7
  177. data/spec/spec_helper.rb +5 -2
  178. data/spec/support/scorm_engine.rb +2 -4
  179. metadata +54 -31
  180. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/raises_ArgumentError_when_destination_id_is_missing.yml +0 -32
  181. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/when_dispatch_has_registrations/knows_it_s_registration_count.yml +0 -63
@@ -0,0 +1,931 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://<SCORM_ENGINE_HOST>/ScormEngineInterface/api/v2/appManagement/configuration?includeMetadata=true
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - ScormEngine Ruby Gem 0.8.2
12
+ Authorization:
13
+ - Basic <BASIC_AUTH>
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ content-type:
20
+ - application/json
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - close
25
+ date:
26
+ - Fri, 13 Nov 2020 17:36:39 GMT
27
+ p3p:
28
+ - CP="NOI"
29
+ server:
30
+ - Apache
31
+ x-xss-protection:
32
+ - 1; mode=block
33
+ x-cache:
34
+ - Miss from cloudfront
35
+ via:
36
+ - 1.1 a7bf7cf3a377b5000ee61eea3824eb75.cloudfront.net (CloudFront)
37
+ x-amz-cf-pop:
38
+ - DEN52-C1
39
+ x-amz-cf-id:
40
+ - fD67gIErf47hY69lywqWjA8Para2Y5Kd5By1ByCxzpKDMiaVV_xBbg==
41
+ body:
42
+ encoding: UTF-8
43
+ string: '{"settingItems":[{"id":"UseNativePostgreSqlUpserts","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"By
44
+ default, Engine will use the INSERT / ON CONFLICT upserts for PostgreSQL databases
45
+ instead of first trying to insert and then updating if there''s a conflict.
46
+ Must be using PostgreSQL 9.5+ to use this setting. To disable the behavior
47
+ for older versions of PostgreSQL, set this value to false.","level":"Base"}},{"id":"PlayerLaunchType","effectiveValue":"FRAMESET","effectiveValueSource":"system","metadata":{"dataType":"Enum.LaunchTypeValue","settingDescription":"Specifies
48
+ how the player as a whole should be launched for this course.","level":"Registration","validValues":[{"value":"FRAMESET","valueDescription":"Display
49
+ the player or SCO in a child frameset."},{"value":"NEW_WINDOW","valueDescription":"Display
50
+ the player or SCO in a popup window."},{"value":"NEW_WINDOW_AFTER_CLICK","valueDescription":"Display
51
+ the player or SCO in a popup window after prompting the user to click a link
52
+ to avoid popup blocker restrictions."},{"value":"NEW_WINDOW_WITHOUT_BROWSER_TOOLBAR","valueDescription":"Display
53
+ the player or SCO in a popup window (without toolbar)."},{"value":"NEW_WINDOW_AFTER_CLICK_WITHOUT_BROWSER_TOOLBAR","valueDescription":"Display
54
+ the player or SCO in a popup window (without toolbar) after prompting the
55
+ user to click a link to avoid popup blocker restrictions."}]}},{"id":"AiccSessionPerLaunch","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"If
56
+ true, the AICC session ID will be created for each launch, and only valid
57
+ until that launch session has terminated. Otherwise sessions will be precreated
58
+ for a registration and valid as long as that registration exists.","level":"System"}},{"id":"UseSystemDatabaseForTenantSettings","effectiveValue":"true","effectiveValueSource":"fallback","metadata":{"dataType":"bool","settingDescription":"Should
59
+ the system database be used to store tenant settings (other than the connection
60
+ string)? Note: if disabled, setting tenant settings other than connection
61
+ string will fail until a valid connection string is configured for the tenant.","level":"Base","fallback":"SystemDatabaseEnabled"}},{"id":"PlayerFinalScoCourseNotSatisfiedTimeoutExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
62
+ navigation behavior the SCP should display when a SCO at the end of the course
63
+ that has not been satisfied exits with an exit type of timeout.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
64
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
65
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
66
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
67
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
68
+ not take any action"}]}},{"id":"WebContentForceNewWindow","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"If
69
+ true, opens webpage media content in a new window/tab rather than inside the
70
+ AU. This gets around websites that are configured to not load in an iframe
71
+ (see ''X-Frame-Options'' response header).","level":"Registration"}},{"id":"PlayerCaptureHistoryDetailed","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
72
+ if the course should return detailed attempt information to the server","level":"Registration"}},{"id":"xAPIRewriteStatementModifier","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"mergedJson","settingDescription":"If
73
+ rusticiRewrite=true is passed on the statements request, then this setting
74
+ will be used to modify statements as they are returned. It is expected to
75
+ be a JSON object with an ''overlay'' and/or a ''knownRegistrationOverlay''
76
+ property. These overlays, from each configuration level (eg: system, tenant,
77
+ and registration) will be merged into any statements read from this tenant
78
+ (the knownRegistrationOverlay will only be applied to statements for which
79
+ the registration can be looked up). The ID for the statement will be changed
80
+ and the original ID will be noted in an extension property. See ''Dynamic
81
+ Setting Values''","level":"Registration"}},{"id":"ApiRollupRegistrationDuringSession","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Should
82
+ rollup registration postbacks be sent during a learning session, instead of
83
+ waiting for the learner to exit?.","level":"Registration"}},{"id":"ApiPostbackTimeoutSeconds","effectiveValue":"10","effectiveValueSource":"default","metadata":{"default":"10","dataType":"int","settingDescription":"Timeout
84
+ in seconds for API rollup registration postback.","level":"Tenant"}},{"id":"MaxRowsPerDatabaseUpsert","effectiveValue":"1","effectiveValueSource":"default","metadata":{"default":"1","dataType":"nonNegativeInt","settingDescription":"The
85
+ maximum number of rows we should send in a single datbase upsert (merge) statement.
86
+ Set to 0 for no limit.","level":"System"}},{"id":"AllowedTenantNameRegex","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Applies
87
+ to v1 API automatic tenant creation only. A regular expression matching only
88
+ allowed tenant names that, if given, restricts tenant creation to only those
89
+ names that match. This setting uses the .NET reguandlar expression language
90
+ (even on Java). If AllowedTenantNames is also given, it will be checked first,
91
+ and only names not matched there will be validated against this regex. Note
92
+ that this setting does not prevent previously-created tenants from being accessed;
93
+ this setting only restricts what new tenants can be created.","level":"System"}},{"id":"ConfigurationEncryptionExceptions","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"delimitedString","settingDescription":"A
94
+ comma delimited list of setting ids to encrypt or avoid encrypting, ignoring
95
+ the default for that setting. Prefix settings to encrypt with ''+'' and settings
96
+ to avoid encrypting with ''-''.","level":"Special"}},{"id":"PlayerCommMaxFailedSubmissions","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"nonNegativeInt","settingDescription":"Specifies
97
+ the maximum number of times the client to server communication can fail before
98
+ the system stops trying and the learner is notified that there is an error.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"PlayerLookaheadSequencerMode","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.LookaheadSequencerModeValue","settingDescription":"Determines
99
+ how the Lookahead Sequencer should function on the client side. The Lookahead
100
+ Sequencer is used intelligently enable/disable activities and controls within
101
+ the Scorm Content Player based on possible future paths.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"],"validValues":[{"value":"DISABLED","valueDescription":"Completely
102
+ Disabled"},{"value":"ENABLED","valueDescription":"Fully Enabled"},{"value":"REALTIME","valueDescription":"Enabled,
103
+ with real-time status updates"}]}},{"id":"SupplementalQueryStringParametersForAllActivities","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"delimitedString","settingDescription":"Specifies
104
+ parameter names that, when appended to the launch url, will be forwarded to
105
+ all content activity pages.","level":"Registration"}},{"id":"PlayerShowProgressBar","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
106
+ whether the interface should show a progress bar","level":"Registration"}},{"id":"LrsAuthCacheSecondsFailure","effectiveValue":"60","effectiveValueSource":"default","metadata":{"default":"60","dataType":"int","settingDescription":"The
107
+ default amount of time to cache an unsuccessful LRS auth callback. This value
108
+ acts as a timeout that will prevent multiple quick requests (eg, DoS) to the
109
+ callback page should there be an issue connecting or getting a response.","level":"Tenant"}},{"id":"PlayerDebugLookAheadAudit","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Should
110
+ the debugger capture LookAhead Sequencing data at the audit level","level":"Registration","learningStandards":["SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"PlayerCourseStructureStartsOpen","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
111
+ whether the interface should show the course outline when the course loads
112
+ or if it should initially be collaspsed and hidden. Only valid if ShowCourseStructure
113
+ is true.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION","AICC","CMI5"]}},{"id":"PlayerRequiredWidth","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"nonNegativeInt","settingDescription":"The
114
+ number of pixels in width the course must occupy to function correctly.","level":"Registration"}},{"id":"HashAccountPasswords","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"If
115
+ true then when storing configuration settings of type ''accounts'', any passwords
116
+ provided that are not bcrypt hashes will be converted to bcrypt hashes.","level":"System"}},{"id":"PlayerIntermediateScoNotSatisfiedNormalExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
117
+ navigation behavior the SCP should display when a SCO in the middle of a course
118
+ that has not been satisfied exits with an exit type of normal.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
119
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
120
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
121
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
122
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
123
+ not take any action"}]}},{"id":"PlayerIsSatisfactionTracked","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Does
124
+ this course package actually report satisfaction (pass/fail) in a meaningful
125
+ way?","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"ApiMaxAuthTokenLifetimeSeconds","effectiveValue":"28800","effectiveValueSource":"default","metadata":{"default":"28800","dataType":"int","settingDescription":"Maximum
126
+ amount of seconds from now an API token expiration may be set to, when creating
127
+ a token. Note: there is no way to invalidate individual tokens besides waiting
128
+ for them to expire, so be careful with long lived tokens.","level":"System"}},{"id":"FilePathToUploadedZippedPackage","effectiveValue":"/var/scormengine/content/uploads/${TenantName}/uploads","effectiveValueSource":"base","metadata":{"dataType":"fileStore","settingDescription":"The
129
+ path or file store (see file stores) where uploaded zip files should be placed.
130
+ In a future release this may be used to allow different Engine instances to
131
+ receive an upload and process the import, but for now there is no reason this
132
+ shouldn''t just be set to a temporary directory on the local file system.","level":"Tenant"}},{"id":"PlayerForceObjectiveCompletionSetByContent","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Override
133
+ the manifest settings for \"Objective Set By Content\" and \"Completion Set
134
+ By Content\" with true values.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"PlayerWrapScoWindowWithApi","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"When
135
+ a SCO is launched in a new window, this specifies whether the window should
136
+ be wrapped with a shell window containing a copy of the SCORM API. This setting
137
+ allows content with errors in the use of its API finder algorithm to still
138
+ be delivered in a new window. Essentially, this mimics the structure of the
139
+ ADL Test Suite.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"ForwardedHost","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"The
140
+ original (before proxying) value of the \"Host\" header field in Engine requests
141
+ (i.e. the targeted host of a request at its origin). As with the \"Host\"
142
+ HTTP header, this value may come with a port number appended.","level":"System"}},{"id":"PDFContentStylesheetPath","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Web
143
+ path (absolute or relative) to a CSS file that allows for customization of
144
+ elements in the Media Content AU that are specific to PDF content.","level":"Registration"}},{"id":"UserCountReportMaxOffsetMS","effectiveValue":"3600000","effectiveValueSource":"default","metadata":{"default":"3600000","dataType":"int","settingDescription":"The
145
+ maximum number of MS to offset the time to send the next report by (actual
146
+ amount is a random number up to this value). It should not be necessary to
147
+ change this value except for testing.","level":"System"}},{"id":"MaxPersistRuntimeDataAttempts","effectiveValue":"1","effectiveValueSource":"default","metadata":{"default":"1","dataType":"positiveInt","settingDescription":"Maximum
148
+ number of attempts to save course runtime data.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"PlayerScoreOverridesStatus","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Determines
149
+ whether or not the status derived from a score should override the actual
150
+ status.","level":"Registration","learningStandards":["SCORM11","SCORM12","AICC"]}},{"id":"xAPIStatementPipeMaxBackoffHours","effectiveValue":"24","effectiveValueSource":"default","metadata":{"default":"24","dataType":"nonNegativeInt","settingDescription":"When
151
+ piping statements, we may encounter an error when calling the API of either
152
+ LRS. If we do, we retry after a set amount of time, that doubles with each
153
+ successive failure. This value sets a maximum amount of time (in hours) we
154
+ will wait between retries. If 0 is given, there is no maximum.","level":"System"}},{"id":"WebPathToContentRootHistory","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"delimitedWebPath","settingDescription":"A
155
+ list of historical values used for WebPathToContentRoot, which allows the
156
+ launch links of packages uploaded when these historical values were in effect
157
+ to be updated so as to reflect the current value. These entries are not required
158
+ to be in historical order.","level":"Tenant"}},{"id":"PDFContentPageDurationThreshold","effectiveValue":"5","effectiveValueSource":"default","metadata":{"default":"5","dataType":"nonNegativeInt","settingDescription":"Number
159
+ of seconds the user must view a document page before the page will be counted
160
+ towards progress/completion calculation.","level":"Registration"}},{"id":"LtiConsumerDescription","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"One-line
161
+ description of the product providing LTI support.","level":"Tenant"}},{"id":"ApiRollupRegistrationAuthUser","effectiveValue":"scorm","effectiveValueSource":"system","metadata":{"default":"","dataType":"string","settingDescription":"User
162
+ name to use when posting registration data.","level":"Registration"}},{"id":"xAPILaunchTokenCleanupIntervalInSeconds","effectiveValue":"7200","effectiveValueSource":"default","metadata":{"default":"7200","dataType":"positiveInt","settingDescription":"How
163
+ long to wait between each execution of the background task that cleans up
164
+ expired xAPI launch tokens. Default is 2 hours.","level":"System"}},{"id":"LtiConsumerUrl","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Url
165
+ to the website of the product providing LTI support.","level":"Tenant"}},{"id":"UsePlayerForTinCanLaunches","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Sets
166
+ whether Tin Can launches should use Engine''s player rather than launching
167
+ the course directly.","level":"Registration"}},{"id":"LtiBaseUrl","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"absoluteHttpUri","settingDescription":"The
168
+ fully-qualified URL to the ''/api'' path under the Engine application. This
169
+ value is used for determining absolute URLs for endpoints LTI 1.1 and 1.3
170
+ tools need to access, so the URL *must* be fully-qualified and accessible
171
+ from LTI tools. If this value ever changes, then LTI tools may need to be
172
+ re-configured.","level":"System"}},{"id":"PlayerFinalScoCourseSatisfiedSuspendExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
173
+ navigation behavior the SCP should display when a SCO at the end of the course
174
+ that has been satisfied exits with an exit type of suspend.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
175
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
176
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
177
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
178
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
179
+ not take any action"}]}},{"id":"PlayerFinalScoCourseSatisfiedTimeoutExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
180
+ navigation behavior the SCP should display when a SCO at the end of the course
181
+ that has been satisfied exits with an exit type of timeout.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
182
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
183
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
184
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
185
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
186
+ not take any action"}]}},{"id":"UseDeltaRecordResultsPayload","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"If
187
+ this setting is enabled, the payloads for RecordResults requests will be trimmed
188
+ to only include data that has been updated since the previous successful RecordResults
189
+ request. This configuration can be used along with CompressRecordResultsPayload
190
+ to greatly reduce the size of the RecordResults payload.","level":"Registration"}},{"id":"PlayerPreventWindowResize","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
191
+ whether the player should allow the learner to resize its windows.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION","AICC"]}},{"id":"TenantIdLength","effectiveValue":"2","effectiveValueSource":"default","metadata":{"default":"2","dataType":"positiveInt","settingDescription":"The
192
+ length, in bytes, of the tenancy field in the database","level":"Base"}},{"id":"PlayerDesiredFullScreen","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
193
+ that the course is best experienced when it occupies the full screen.","level":"Registration"}},{"id":"MediaContentStylesheetPath","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Web
194
+ path (absolute or relative) to a CSS file that allows for customization of
195
+ elements in the Media Content AU that are not specific to a certain content
196
+ type.","level":"Registration"}},{"id":"HashContentFilesForActivityId","effectiveValue":"false","effectiveValueSource":"base","metadata":{"default":"true","dataType":"bool","settingDescription":"Specifies
197
+ whether or not non-xAPI content files should be hashed to generate an activity
198
+ ID during import. If true, then all of the files in the content directory
199
+ are hashed to generate the activity ID. If false, then only the manifest file
200
+ is hashed.","level":"Tenant"}},{"id":"Go1PartnerPortalId","effectiveValue":"-1","effectiveValueSource":"default","metadata":{"default":"-1","dataType":"int","settingDescription":"Partner
201
+ portal ID to send to Go1 when provisioning a new portal. -1 (or any negative
202
+ value) indicates there is no partner portal to associate, and no value will
203
+ be sent.","level":"System"}},{"id":"SimpleQueueRetryInitialDelaySeconds","effectiveValue":"600","effectiveValueSource":"default","metadata":{"default":"600","dataType":"int","settingDescription":"How
204
+ long to mark tasks as ineligible for processing when picking them up. This
205
+ time will be doubled after each retry.","level":"System"}},{"id":"PromptOnPlayerClose","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"Constant
206
+ value used by the default integration implementation that represents the key
207
+ used in the configuration repository to specify whether the SCORM Player should
208
+ prompt the user for confirmation before unloading due to the browser window
209
+ being closed","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"PlayerScaleRawScore","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"In
210
+ SCORM 2004 content, if a SCO sets a raw score but not a scaled score, should
211
+ the raw score count as the normative score for the SCO?","level":"Registration","learningStandards":["SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"PlayerDebugControlDetailed","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Should
212
+ the debugger capture control data at the detailed level","level":"Registration"}},{"id":"PlayerDebugSequencingAudit","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Should
213
+ the debugger capture Sequencing data at the audit level","level":"Registration"}},{"id":"PlayerShowCourseStructure","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
214
+ whether the interface should show the course outline to the learner","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION","AICC","CMI5"]}},{"id":"PlayerIntermediateScoSatisfiedNormalExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
215
+ navigation behavior the SCP should display when a SCO that has been satisfied
216
+ in the middle of a course exits with an exit type of normal.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
217
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
218
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
219
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
220
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
221
+ not take any action"}]}},{"id":"ApiPingCheckDatabase","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"Determines
222
+ whether a simple connectivity check of the Engine database should occur in
223
+ the execution of the /ping resource.","level":"System"}},{"id":"PlayerInvokeRollupAtSuspendAll","effectiveValue":"true","effectiveValueSource":"system","metadata":{"default":"","dataType":"bool","settingDescription":"Initiates
224
+ rollup when SuspendAll is invoked.","level":"Registration","learningStandards":["SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"TenancyEnabled","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"\"","level":"System"}},{"id":"ContentConnectorRemoteSearchTimeoutMS","effectiveValue":"5000","effectiveValueSource":"default","metadata":{"default":"5000","dataType":"int","settingDescription":"Time
225
+ to wait for content connector remote searches before returning results from
226
+ whichever connectors have returned results. Where multiple connectors are
227
+ used, this setting is a trade off between limiting how long the user has to
228
+ wait for search results and ensuring complete results.","level":"System"}},{"id":"MediaContentCompletionThreshold","effectiveValue":"95","effectiveValueSource":"default","metadata":{"default":"95","dataType":"nonNegativeInt","settingDescription":"The
229
+ percentage of media that must be consumed before a media course can be considered
230
+ ''Complete''.","level":"Registration"}},{"id":"xAPILaunchTokenLifeInSeconds","effectiveValue":"28800","effectiveValueSource":"default","metadata":{"default":"28800","dataType":"int","settingDescription":"Sets
231
+ the initial life of the TinCan Launch Token. This time is only set when the
232
+ token is first created. Default is 8 hours.","level":"System"}},{"id":"PlayerIntermediateScoNotSatisfiedTimeoutExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
233
+ navigation behavior the SCP should display when a SCO that has not been satisfied
234
+ in the middle of a course exits with an exit type of timeout.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
235
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
236
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
237
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
238
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
239
+ not take any action"}]}},{"id":"SystemHomepageUrl","effectiveValue":"https://<SCORM_ENGINE_HOST>/","effectiveValueSource":"system","metadata":{"dataType":"string","settingDescription":"The
240
+ absolute URL of the canonical, permanent, homepage for this system. Ideally
241
+ this really is the homepage a user would use to access the system, but this
242
+ must be canonical and permanent: that is, it is a single URL the system can
243
+ be identified by. This setting is required for xAPI, in order to create actor
244
+ objects for users in the system. It is also used to construct activity IDs
245
+ during SCORM to xAPI conversion.","level":"Tenant"}},{"id":"ApiRoot","effectiveValue":"/api/","effectiveValueSource":"default","metadata":{"default":"/api/","dataType":"string","settingDescription":"The
246
+ root path (under the main application path) for the API (before the API version).","level":"System"}},{"id":"xAPIStatementPipeSleepTimeMilliseconds","effectiveValue":"10000","effectiveValueSource":"default","metadata":{"default":"10000","dataType":"nonNegativeInt","settingDescription":"When
247
+ no pipes are ready to be processed, the statement pipe thread will sleep for
248
+ this many milliseconds.","level":"System"}},{"id":"ContentAuthCookieFactory","effectiveValue":"RusticiSoftware.ScormContentPlayer.Logic.Utilities.CloudFrontCookieFactory,
249
+ /usr/share/tomcat/CloudFront-PrivateKey.der, APKAIA3TVUCWOFBI6GMA, 480","effectiveValueSource":"base","metadata":{"default":"","dataType":"implementation","settingDescription":"For
250
+ generating cookies to allow access to content. Definition for an ''ICookieAuthFactory''
251
+ implementation. Format: ''full.class.name|assembly.name, constuctorarg1, arg2,
252
+ arg3'' (assembly name is not needed for Java, or where class is in RusticiSoftware.Engine).
253
+ Engine provides an implementation for Amazon CloudFront. Example for CloudFront
254
+ authentication cookies that will expire in 8 hours: ''RusticiSoftware.ScormContentPlayer.Logic.Utilities.CloudFrontCookieFactory,
255
+ /fullpath/to/privatekey.pem, keyPairId, 480''","level":"Tenant"}},{"id":"StorePlayerDebugLogsInFileStoreOnExit","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"Determines
256
+ whether or not the player debug logs will be saved to the file store automatically
257
+ when the player exits. With this setting set to true, if PlayerDebugLogsStorageLocation
258
+ is set, then the player debug logs will be stored in the location configured
259
+ by that setting.","level":"Registration"}},{"id":"ApiUseSignedLaunchLinks","effectiveValue":"True","effectiveValueSource":"base","metadata":{"default":"false","dataType":"bool","settingDescription":"If
260
+ enabled, launch links generated by the API will be signed, and only signed
261
+ launch links will be accepted by the player (so launch links must be generated
262
+ via the API).","level":"Tenant"}},{"id":"PlayerFinalScoCourseNotSatisfiedSuspendExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
263
+ navigation behavior the SCP should display when a SCO at the end of the course
264
+ that has not been satisfied exits with an exit type of suspend.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
265
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
266
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
267
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
268
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
269
+ not take any action"}]}},{"id":"RedirectLaunchPageOnExit","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"When
270
+ using any ''New Window'' variant for PlayerLaunchType, if this setting is
271
+ enabled, automatically returns the launch page to the LMS when the player
272
+ window closes. This setting has no effect if the player launch type is frameset.","level":"Registration"}},{"id":"PlayerIntermediateScoSatisfiedSuspendExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
273
+ navigation behavior the SCP should display when a SCO that has been satisfied
274
+ in the middle of a course exits with an exit type of suspend.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
275
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
276
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
277
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
278
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
279
+ not take any action"}]}},{"id":"xAPIBasicAccounts","effectiveValue":"stmt-viewer
280
+ : SS8j1yuNcCC1Vo83jafS24tGNtV5Vqy : read-only\n RusticiEngine : SS8j1yuNcCC1Vo83jafS24tGNtV5Vqy
281
+ : root","effectiveValueSource":"base","metadata":{"default":"","dataType":"accounts","settingDescription":"A
282
+ set of xAPI accounts can be optionally specified. To use one of these accounts,
283
+ the same username and password must be sent over HTTP basic auth to the xAPI
284
+ endpoint. These should be separated by newlines, and must be of the form username:password:role.
285
+ A bcrypt password hash may be used for the password portion. The roles are
286
+ as follows:\n* user : typical, default permissions, allowing the account to
287
+ assert any statement, and read only those statements they have asserted or
288
+ play some role in\n* read-only : allowed to read all statements and state
289
+ documents, but not write anything\n* write-only : allowed to write any statement
290
+ or xAPI document, but not read anything\n* root : allowed to read and write
291
+ any statement or xAPI document","level":"Tenant"}},{"id":"PlayerUseMeasureProgressBar","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
292
+ whether the interface should determine progress bar progress using Measure
293
+ Rollup or individual SCO completion.","level":"Registration"}},{"id":"DefaultCommCommitFrequency","effectiveValue":"20000","effectiveValueSource":"base","metadata":{"default":"10000","dataType":"int","settingDescription":"\"","level":"System"}},{"id":"ConfigurationCacheMaxEntries","effectiveValue":"2000","effectiveValueSource":"default","metadata":{"default":"2000","dataType":"nonNegativeInt","settingDescription":"The
294
+ number of cache entries at which to clear the configuration cache to prevent
295
+ excessive memory usage. This includes an entry for each tenant and package
296
+ referenced. (Registration specific configuration items are not cached.) Set
297
+ to 0 to disable caching.","level":"Base"}},{"id":"RusticiEngineScriptsUrl","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Web
298
+ path to the Rustici Engine scripts directory","level":"Base"}},{"id":"SSPEnabled","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Can
299
+ be disabled if no content is ever going to use SSP. Marginal player performance
300
+ may be perceived by doing so.","level":"System"}},{"id":"PlayerValidateInteractionResponses","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Determines
301
+ whether the interaction responses are validated for expected SCORM format. Use
302
+ this setting when you want to include descriptive text in addition to the
303
+ single number/character allowed by SCORM 1.2. This affects both the user
304
+ response and the correct response","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"xAPIValidations","effectiveValue":"AttachmentContentTransferEncoding,
305
+ SignatureContentType, NoUnexpectedParameters, IdenticalDocumentsCanConflict,
306
+ StatementSchemaValidation, StatementSchemaValidationIncludingInteractions,
307
+ NewDocumentsRequireETag","effectiveValueSource":"default","metadata":{"default":"AttachmentContentTransferEncoding,
308
+ SignatureContentType, NoUnexpectedParameters, IdenticalDocumentsCanConflict,
309
+ StatementSchemaValidation, StatementSchemaValidationIncludingInteractions,
310
+ NewDocumentsRequireETag","dataType":"DelimitedEnum.XapiValidation","settingDescription":"xAPI
311
+ validations that are required to pass the conformance test (and indeed to
312
+ conform to xAPI), but were not present in prior releases of Engine. These
313
+ should be left on if possible, but are provided as a setting to enable non-conforming
314
+ requests to work if needed. To disable all xAPI validations, use the value
315
+ \"none\".","level":"Tenant","validValues":[{"value":"AttachmentContentTransferEncoding","valueDescription":"(attachments)
316
+ MUST include a Content-Transfer-Encoding field with a value of ''binary''
317
+ in each part''s header after the first (statements) part. Note the above MUST
318
+ applies to the attachment itself, the LRS does not have a ''MUST'' for validating
319
+ this header"},{"value":"SignatureContentType","valueDescription":"xAPI signatures
320
+ have a content type of application/octet-stream"},{"value":"NoUnexpectedParameters","valueDescription":"no
321
+ unexpected parameters are sent on xAPI request"},{"value":"IdenticalDocumentsCanConflict","valueDescription":"xAPI
322
+ does not make an exception to the concurrency rules for document PUT requests
323
+ for identical documents (the same document PUT multiple times). This setting
324
+ will enable checking identical documents for concurrency E-Tags, and possibly
325
+ reject them as a conflict"},{"value":"StatementSchemaValidation","valueDescription":"Validate
326
+ xAPI statements against ''tin-can-json-schema''"},{"value":"StatementSchemaValidationIncludingInteractions","valueDescription":"Validate
327
+ xAPI statements, including interaction activity details included in those
328
+ statements, against ''tin-can-json-schema''"},{"value":"NewDocumentsRequireETag","valueDescription":"xAPI
329
+ does not make an exception to the concurrency rules for document PUT requests
330
+ where a new document is being written This setting will enable checking new
331
+ documents for concurrency E-Tags, and possibly reject them"}]}},{"id":"PlayerResetRunTimeData","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ResetRunTimeDataTimingValue","settingDescription":"Should
332
+ the SCP always persist runtime data when the exit type is suspend, or should
333
+ this be left up to the sequencer?","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"],"validValues":[{"value":"NEVER","valueDescription":"Never
334
+ reset the runtime data"},{"value":"WHEN_EXIT_IS_NOT_SUSPEND","valueDescription":"Use
335
+ the RunTime data''s exit flag to determine when to reset the data"},{"value":"ON_EACH_NEW_SEQUENCING_ATTEMPT","valueDescription":"Reset
336
+ the data whenever a new sequencing attempt begins"}]}},{"id":"PlayerDesiredWidth","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"nonNegativeInt","settingDescription":"The
337
+ number of pixels in width the course would like to have available, if possible,
338
+ during delivery.","level":"Registration"}},{"id":"UserCountReportContractPeriodEndDate","effectiveValue":"12/31/2015","effectiveValueSource":"default","metadata":{"default":"12/31/2015","dataType":"string","settingDescription":"In
339
+ order to ensure taking a user count as soon as possible at the end of each
340
+ contract period, note the end of the contract period","level":"System"}},{"id":"ConcurrentLaunchDetectionEnabled","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Enable
341
+ or disable concurrent launch detection.","level":"Registration"}},{"id":"ShouldExpireLaunchHistory","effectiveValue":"True","effectiveValueSource":"base","metadata":{"default":"false","dataType":"bool","settingDescription":"If
342
+ true, purge old launch history entries when adding new ones. This can potentially
343
+ save a lot of DBMS storage space.","level":"Tenant"}},{"id":"PlayerCommCommitFrequency","effectiveValue":"20000","effectiveValueSource":"base","metadata":{"dataType":"nonNegativeInt","settingDescription":"The
344
+ frequency (in milliseconds) with which the application will check for dirty
345
+ data and try to send it to the server.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"WebPathToContentRoot","effectiveValue":"/courses/${TenantName}","effectiveValueSource":"base","metadata":{"dataType":"webPath","settingDescription":"A
346
+ web path (URL) pointing to the directory that is hosting your course content.
347
+ If you''re hosting the content on the same domain as Engine, then you can
348
+ exclude the domain in your URL (i.e. \"/path/to/content/root\").","level":"Tenant"}},{"id":"UseModernPlayer","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"If
349
+ true (default), uses modern player. If false, uses legacy player. Regardless
350
+ of this configuration setting, either can be overridden by the `player` query
351
+ string parameter (`player=legacy` or `player=modern`)","level":"Registration"}},{"id":"ModernPlayerCustomizationStylesheetUrl","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Web
352
+ path (absolute or relative) to a CSS file to load during modern player start
353
+ up to allow for customization of player appearance.","level":"Registration"}},{"id":"RedactedItems","effectiveValue":"ExternalRegistrationId,
354
+ value, .*secret.*, .*ConnectionString.*, object_value, property_value, .*username.*,
355
+ .*password.*, queue_entry, global_objective_scope, suspended_activity_id,
356
+ api_learner_id, first_name, last_name, api_registration_id, data,asserter_id,
357
+ asserter_json, agent","effectiveValueSource":"default","metadata":{"default":"ExternalRegistrationId,
358
+ value, .*secret.*, .*ConnectionString.*, object_value, property_value, .*username.*,
359
+ .*password.*, queue_entry, global_objective_scope, suspended_activity_id,
360
+ api_learner_id, first_name, last_name, api_registration_id, data,asserter_id,
361
+ asserter_json, agent ","dataType":"delimitedString","settingDescription":"Comma
362
+ delimited, case insensitive list of regular expressions (start and end anchors
363
+ will be added) to match columns, configuration setting ids, or external ID
364
+ class names to redact, if RedactLogs is enabled (otherwise this list has no
365
+ effect).","level":"Base"}},{"id":"AllowedTenantNames","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"delimitedString","settingDescription":"Applies
366
+ to v1 API automatic tenant creation only. A comma- and/or whitespace-delimited
367
+ string enumerating all valid tenant names that, if given, prevents tenants
368
+ with names not contained therein from being created. Note that this setting
369
+ does not prevent previously-created tenants from being accessed; this setting
370
+ only restricts what new tenants can be created.","level":"System"}},{"id":"PlayerEnableFlowNav","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
371
+ whether the interface should allow the learner to use Previous and Next navigation
372
+ elements to go through the course","level":"Registration","learningStandards":["SCORM11","SCORM12","AICC","CMI5"]}},{"id":"PlayerFinalScoCourseSatisfiedLogoutExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
373
+ navigation behavior the SCP should display when a SCO at the end of the course
374
+ that has been satisfied exits with an exit type of logout.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
375
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
376
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
377
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
378
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
379
+ not take any action"}]}},{"id":"MaxParametersPerDatabaseUpsert","effectiveValue":"2100","effectiveValueSource":"default","metadata":{"default":"2100","dataType":"nonNegativeInt","settingDescription":"The
380
+ maximum number of parameters to include in a single database upsert/merge
381
+ statement. Set to 0 for no limit. The default of 2100 is based on limits inherent
382
+ to SqlServer.","level":"System"}},{"id":"PlayerIsIncompleteScoreMeaningful","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"If
383
+ the course is incomplete, is the score still meaningful?","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"ModernPlayerCustomizationScriptUrl","effectiveValue":"https://d2wzd4gs88w14e.cloudfront.net/learn/assets/my-learning/scorm-player-customization-script.min.js","effectiveValueSource":"system","metadata":{"default":"","dataType":"string","settingDescription":"Web
384
+ path (absolute or relative) to a JavaScript file to load during modern player
385
+ start up to allow for customization of player execution.","level":"Registration"}},{"id":"ApiPostbackProcessorSleepSeconds","effectiveValue":"300","effectiveValueSource":"default","metadata":{"default":"300","dataType":"int","settingDescription":"How
386
+ long to sleep between checking for postback tasks to retry (note: the first
387
+ try is always immediate, either by being synchronous or by triggering an async
388
+ check of the queue.)","level":"System"}},{"id":"EncryptConfigurationSettings","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"If
389
+ true (and encryption passsword is specified), configuration settings of type
390
+ ''secretString'' will be encrypted.","level":"Special"}},{"id":"ApiResultLimitSinceNotSpecified","effectiveValue":"10","effectiveValueSource":"default","metadata":{"default":"10","dataType":"int","settingDescription":"Maximum
391
+ number of items to return in a list at once when the ''since'' parameter is
392
+ available and not used. The only reason since is not a required parameter
393
+ is to make testing the API easy, and long lists are not required for that.","level":"System"}},{"id":"ForceExitConcurrentLaunches","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"If
394
+ true, force exit of previous launch without showing concurrent launch detected
395
+ page.","level":"Registration"}},{"id":"PlayerRequiredFullScreen","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
396
+ that the course must be experienced in full screen mode to function correctly.","level":"Registration"}},{"id":"PlayerAlwaysFlowToFirstSco","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Should
397
+ the SCP always launch the first SCO when the course is launched regardless
398
+ of sequencing rules.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"StoreRuntimeDataAsLob","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Determines
399
+ whether runtime data received from player should be stored in a lob column
400
+ or normalized.","level":"Base"}},{"id":"PlayerRollupRuntimeAtScoUnload","effectiveValue":"true","effectiveValueSource":"system","metadata":{"default":"","dataType":"bool","settingDescription":"Initiates
401
+ rollup and transfer of runtime data at ScoUnload for all SCOs.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"LtiJsonWebTokenExpiry","effectiveValue":"300","effectiveValueSource":"default","metadata":{"default":"300","dataType":"positiveInt","settingDescription":"Number
402
+ of seconds from now that JSON Web Tokens sent as part of the LTI launch process
403
+ should expire in.","level":"Tenant"}},{"id":"ContentVaultAuthExpiry","effectiveValue":"43200","effectiveValueSource":"system","metadata":{"default":"2880","dataType":"int","settingDescription":"An
404
+ integer value greater than 300 seconds and less than 31540000 seconds that
405
+ defines the number of seconds content should be made available for a launch","level":"Registration"}},{"id":"GenerateTinCanLaunchStatements","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Specifies
406
+ whether to generate and save ''launched'' statements during Tin Can launches","level":"Registration"}},{"id":"ConfigurationCacheSeconds","effectiveValue":"60","effectiveValueSource":"default","metadata":{"default":"60","dataType":"nonNegativeInt","settingDescription":"The
407
+ number of seconds before cached configuration settings expire. Note that for
408
+ multi web server installations, it may take up to this long for setting changes
409
+ to be applied, except for registration settings that are not cached. Setting
410
+ to zero will disable time-based expiration, but the cache will still clear
411
+ itself if it reaches a size of ConfigurationCacheMaxEntries.","level":"Base"}},{"id":"Lti13PrivacySettings","effectiveValue":"LEARNER_NAME_ONLY","effectiveValueSource":"default","metadata":{"default":"LEARNER_NAME_ONLY","dataType":"Enum.Lti13PrivacySettingValue","settingDescription":"Determines
412
+ which user-identifying information will be sent during launch.","level":"Registration","validValues":[{"value":"LEARNER_NAME_ONLY","valueDescription":"The
413
+ learner''s first name, last name, and full name will be sent to the tool during
414
+ launch. The full name is determined by concatenating the first and last name
415
+ with a space in between."},{"value":"NO_LEARNER_INFO","valueDescription":"No
416
+ identifying information about the user will be sent to the tool during launch."}]}},{"id":"ApiBasicTenantAccounts","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"accounts","settingDescription":"A
417
+ set of basic auth \"accounts\" comprising different API users for a particular
418
+ tenant. The setting takes the form of `username:password[:role]`, where the
419
+ role is optional. At this moment, the only valid role is `tenant`.","level":"Tenant"}},{"id":"RemoteDeliverPageUrl","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Web
420
+ path (absolute or relative) location of the deliver HTML and player static
421
+ files. Must be set to an absolute URL for LTI 1.3 platform support.","level":"Registration"}},{"id":"DefaultModernPlayerTheme","effectiveValue":"default","effectiveValueSource":"default","metadata":{"default":"default","dataType":"string","settingDescription":"(Deprecated)
422
+ See ''ModernPlayerCustomizationStylesheetUrl''. The modern player theme to
423
+ use unless otherwise specified in the launch URL.","level":"Registration"}},{"id":"LtiConsumerEmail","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Url
424
+ to a support email address for the product providing LTI support.","level":"Tenant"}},{"id":"ReadReplicaMaximumExpectedLagMS","effectiveValue":"2000","effectiveValueSource":"default","metadata":{"default":"2000","dataType":"positiveInt","settingDescription":"The
425
+ expected maximum expected amount of lag time before the read replica reflects
426
+ updates. Used to set X-Experience-API-Consistent-Through, and may be used
427
+ in a future version of Engine to determine what other reads may be safely
428
+ serviced via the replica.","level":"Tenant"}},{"id":"UpdateRunTimeDataLockWaitSeconds","effectiveValue":"11","effectiveValueSource":"default","metadata":{"default":"11","dataType":"int","settingDescription":"How
429
+ long to wait for a lock on the registration when updating SCORM runtime data.","level":"System"}},{"id":"PlayerTimeLimit","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"nonNegativeInt","settingDescription":"Time
430
+ limit of the course in minutes, 0 for unlimited (no time limit)","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"Cmi5EntitlementKeyAlternate","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Value
431
+ to be provided to AUs in cmi5 `LMS.LaunchData` as the alternate entitlement
432
+ key.","level":"Registration"}},{"id":"EnableRecordingMetrics","effectiveValue":"True","effectiveValueSource":"base","metadata":{"default":"false","dataType":"bool","settingDescription":"If
433
+ true, Engine will record various metrics and enable an endpoint that exposes
434
+ those metric values for reporting.","level":"Base"}},{"id":"UnRedactedColumns","effectiveValue":"engine_tenant_id,
435
+ scorm_registration_id, tincan_registration_id, update_by, update_dt","effectiveValueSource":"default","metadata":{"default":"engine_tenant_id,
436
+ scorm_registration_id, tincan_registration_id, update_by, update_dt","dataType":"delimitedString","settingDescription":"Comma
437
+ delimited, case insensitive list of regular expressions (start and end anchors
438
+ will be added) to match columns that should NOT be redacted even though they
439
+ appear in a table referenced in ''RedactedTables'', if RedactLogs is enabled
440
+ (otherwise this list has no effect).","level":"Base"}},{"id":"xAPIStatementPipeCooldownMilliseconds","effectiveValue":"60000","effectiveValueSource":"default","metadata":{"default":"60000","dataType":"nonNegativeInt","settingDescription":"The
441
+ minimum amount of time, in milliseconds, that the statement pipe thread will
442
+ wait to poll an endpoint for new statements after running out of new statements.","level":"Tenant"}},{"id":"PlayerShowNavBar","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
443
+ whether the interface should show the navigation bar containing buttons like
444
+ Prev, Next, Exit, etc","level":"Registration"}},{"id":"ApiRollupRegistrationAuthType","effectiveValue":"form","effectiveValueSource":"system","metadata":{"default":"httpbasic","dataType":"string","settingDescription":"Indicates
445
+ how to authorize against the given postbackurl, can be ''form'' or ''httpbasic''.
446
+ If form authentication, the username and password for authentication are submitted
447
+ as form fields ''username'' and ''password'', and the registration data as
448
+ the form field ''data''. If httpbasic authentication is used, the username
449
+ and password are placed in the standard Authorization HTTP header, and the
450
+ registration data is the body of the message. This field is set to ''httpbasic''
451
+ by default.","level":"Registration"}},{"id":"ApiBasicSystemAccounts","effectiveValue":"RusticiEngine
452
+ : SS8j1yuNcCC1Vo83jafS24tGNtV5Vqy : root","effectiveValueSource":"base","metadata":{"default":"","dataType":"accounts","settingDescription":"A
453
+ set of basic auth \"accounts\" comprising different API users for the system.
454
+ The setting takes the form of `username:password[:role]` (the role is optional).
455
+ A bcrypt password hash may be used for the password portion. At this moment,
456
+ the only valid role is `root`.","level":"System"}},{"id":"ApiDoNotCheckAuthentication","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"For
457
+ use when API authentication will be handled by a proxy or other software outside
458
+ of Engine. All API calls will be allowed, IsAllowed() will not be called.","level":"Base"}},{"id":"xAPILargeDocumentsPath","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"fileStore","settingDescription":"The
459
+ root path or file store (see file stores) where large xAPI documents will
460
+ be stored (see xAPIMaxDocumentSizeForDatabaseInBytes to define \"large\").","level":"Tenant"}},{"id":"PlayerRequiredHeight","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"nonNegativeInt","settingDescription":"The
461
+ number of pixels in height the course must occupy to function correctly.","level":"Registration"}},{"id":"xAPIUrl","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"string","settingDescription":"The
462
+ full URL that is used for xAPI requests. If the value is not specified, a
463
+ default value of {RusticiEngineUrl}/{xAPIUrlPrefix}/ will be used. Note: xAPI
464
+ requests will fail if xAPIUrl does not contain /{xAPIUrlPrefix}/","level":"System"}},{"id":"PlayerFinalScoCourseNotSatisfiedLogoutExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
465
+ navigation behavior the SCP should display when a SCO at the end of the course
466
+ that has not been satisfied exits with an exit type of logout.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
467
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
468
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
469
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
470
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
471
+ not take any action"}]}},{"id":"ApiRollupRegistrationPostBackUrl","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Specifies
472
+ a URL to which to post activity and status data within an interval in which
473
+ dirty data is available or as soon as possible when the course is completed.","level":"Registration"}},{"id":"xAPIStatementPipeEnabled","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"If
474
+ true, enable the statement pipe feature.","level":"System"}},{"id":"RedirectOnRefreshUrl","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"webPath","settingDescription":"Optional
475
+ URL the application should redirect to when the learner refreshes the deliver
476
+ page, which otherwise may result in a the content being re-launched. This
477
+ can happen when the user deliberately refreshes the page, or uses the back
478
+ button (except in IE where the back button just shows the existing page from
479
+ cache and does not reload from the server, or re-run scripts)\nRe-launch is
480
+ a problem if the content was not suspended, as a new attempt will be generated
481
+ which will not have all the details from the prior attempt (the prior attempt
482
+ will still be shown in history). So even though the user may have completed
483
+ the initial attempt, they may appear to be incomplete.\nThis is an unusual
484
+ problem, and frequently re-launching after a refresh is the best choice, so
485
+ for now we only recommend assinging a value to this property if you have run
486
+ into the problem described above. The redirect page should minimally make
487
+ it clear to the user how to get back into the content.","level":"Registration"}},{"id":"UserCountReportCustomerId","effectiveValue":"unknown","effectiveValueSource":"default","metadata":{"default":"unknown","dataType":"string","settingDescription":"A
488
+ unique Engine customer identifier provided by Rustici Software.","level":"System"}},{"id":"MaxPersistableStringLength","effectiveValue":"2500000","effectiveValueSource":"default","metadata":{"default":"2500000","dataType":"positiveInt","settingDescription":"The
489
+ maximum string length (in characters) to allow through to the database.","level":"Base"}},{"id":"PlayerShowTitleBar","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
490
+ whether the interface should show the title bar containing the name of the
491
+ package being delivered","level":"Registration"}},{"id":"PlayerForceDisableRootChoice","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Disables
492
+ the Root menu item Choice option. This is to prevent new attempts being initiated
493
+ on the course.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"ValidateManifestsUsingXsd","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Whether
494
+ to additionally validate manifests using an XML parser as well as the Engine
495
+ validation","level":"Tenant"}},{"id":"LtiConsumerProductFamily","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Company
496
+ or brand name of the product providing LTI support.","level":"Tenant"}},{"id":"xAPIEnablePublicEndpoint","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"If
497
+ set, allows unauthenticated access to a public xAPI endpoint.","level":"System"}},{"id":"RedactLogs","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"Redact
498
+ personally identifiable information and credentials when logging.","level":"Base"}},{"id":"ManifestDirPathAcceptedRegex","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"This
499
+ regex will be used to check the manifestDirPath in a preview launch. If the
500
+ manifestDirPath matches this regex, then the manifest will be downloaded and
501
+ validated. Otherwise preview launch will throw an exception. By default this
502
+ setting is empty, meaning that nothing will be accepted and preview launch
503
+ will always throw an exception.","level":"System"}},{"id":"UserCountReportTargetUrl","effectiveValue":"https://cloud.scorm.com/engineUserCount","effectiveValueSource":"default","metadata":{"default":"https://cloud.scorm.com/engineUserCount","dataType":"string","settingDescription":"Where
504
+ will the user count report be sent?","level":"System"}},{"id":"ContentVaultPathModifyingPrefix","effectiveValue":"/vault","effectiveValueSource":"default","metadata":{"default":"/vault","dataType":"string","settingDescription":"Prefix
505
+ the path modifying content vault plugin will add to content paths","level":"Registration"}},{"id":"PlayerStatusRollupModeThresholdScore","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"nullableDouble","settingDescription":"Specifies
506
+ how the player should rollup completion status from individual SCOs to aggregations
507
+ in SCORM 1.2","level":"Registration","learningStandards":["SCORM11","SCORM12","CMI5"]}},{"id":"LtiConsumerName","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Short,
508
+ user-friendly name for the product providing LTI support.","level":"Tenant"}},{"id":"DefaultImportRedirectLocation","effectiveValue":"defaultui/defaultredirect","effectiveValueSource":"default","metadata":{"default":"defaultui/defaultredirect","dataType":"string","settingDescription":"Default
509
+ redirect URL to redirect to after import via `defaultui\\import` page if none
510
+ was supplied.","level":"System"}},{"id":"xAPIMaxRequestSizeInBytes","effectiveValue":"5242880","effectiveValueSource":"default","metadata":{"default":"5242880","dataType":"nonNegativeInt","settingDescription":"The
511
+ maximum number of bytes to accept in an xAPI request before returning an error.
512
+ The default is 5 mebibytes.","level":"System"}},{"id":"LtiConsumerVersion","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Version
513
+ of the instance of the product providing LTI support. Should have a major
514
+ release number followed by a period, the format of minor releases is flexible.","level":"Tenant"}},{"id":"xAPIMaxSizeForDatabaseInBytes","effectiveValue":"64000","effectiveValueSource":"default","metadata":{"default":"64000","dataType":"nonNegativeInt","settingDescription":"Setting
515
+ that determines the max number of bytes to put into a DB for a document or
516
+ attachment before trying to store the document in a file store (see xAPILargeDocumentsPath
517
+ and xAPILargeAttachmentsPath). Unfortunately, documents and attachments stored
518
+ in the database must be kept entirely in memory, and so it is advantageous
519
+ to put larger documents and attachments in the filestore, which supports streaming
520
+ (low memory usage).","level":"Tenant"}},{"id":"Lti11Roles","effectiveValue":"Learner","effectiveValueSource":"default","metadata":{"default":"Learner","dataType":"string","settingDescription":"A
521
+ comma-separated list of roles to associate with a registration. The value
522
+ of this setting will be sent during launch in the ''roles'' field. Changing
523
+ this value has no other effect on platform behavior.","level":"Registration"}},{"id":"PlayerSatisfiedCausesCompletion","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Determines
524
+ whether or not activity Satisfaction will set completion","level":"Registration","learningStandards":["SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"LrsAuthCallbackMaxCacheSize","effectiveValue":"500","effectiveValueSource":"default","metadata":{"default":"500","dataType":"int","settingDescription":"The
525
+ number of cache entries at which to obliterate the auth callback cache to
526
+ prevent excessive memory usage.","level":"Tenant"}},{"id":"PlayerSuspendDataMaxLength","effectiveValue":"64000","effectiveValueSource":"system","metadata":{"dataType":"nonNegativeInt","settingDescription":"Maximum
527
+ suspend data length in bytes.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"ApiPostbackProcessorMaxBatchSize","effectiveValue":"10","effectiveValueSource":"default","metadata":{"default":"10","dataType":"int","settingDescription":"Maximum
528
+ number of rollup registration tasks to dequeue for processing at once.","level":"System"}},{"id":"DatabaseSchema","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"The
529
+ DBMS-level schema to use when connecting to the database. At this moment,
530
+ it is not possible to specify different tenant and system DBMS schemas.","level":"Base"}},{"id":"PlayerEnableChoiceNav","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
531
+ whether the interface should allow the learner to choose specific parts to
532
+ the course to take in any order from the course outline","level":"Registration","learningStandards":["SCORM11","SCORM12","AICC","CMI5"]}},{"id":"PlayerIntermediateScoSatisfiedTimeoutExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
533
+ navigation behavior the SCP should display when a SCO that has been satisfied
534
+ in the middle of a course exits with an exit type of timeout.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
535
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
536
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
537
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
538
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
539
+ not take any action"}]}},{"id":"PlayerUseQuickLookaheadSequencer","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"In
540
+ SCORM 2004 4th Edition and later, determines whether or not to use the Quick
541
+ Lookahead Sequencer","level":"Registration","learningStandards":["SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"PlayerShowCloseItem","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
542
+ whether the interface should show a button that allows the learner to exit
543
+ the SCO","level":"Registration"}},{"id":"Lti13Roles","effectiveValue":"http://purl.imsglobal.org/vocab/lis/v2/institution/person#Student","effectiveValueSource":"default","metadata":{"default":"http://purl.imsglobal.org/vocab/lis/v2/institution/person#Student","dataType":"delimitedString","settingDescription":"A
544
+ comma/whitespace delimited list of roles to associate with a registration.
545
+ The value of this setting will be sent during launch in the ''https://purl.imsglobal.org/spec/lti/claim/roles''
546
+ claim. Changing this value has no other effect on platform behavior.","level":"Registration"}},{"id":"DatabaseRetryCount","effectiveValue":"3","effectiveValueSource":"default","metadata":{"default":"3","dataType":"nonNegativeInt","settingDescription":"The
547
+ number of retries we should attempt an database action when contending for
548
+ shared locks.","level":"Base"}},{"id":"PlayerDebugLookAheadDetailed","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"Should
549
+ the debugger capture LookAhead Sequencing data at the detailed level (use
550
+ care when setting this to true, it can have a noticable performance impact)","level":"Registration","learningStandards":["SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"LrsAuthCacheSecondsSuccess","effectiveValue":"1800","effectiveValueSource":"default","metadata":{"default":"1800","dataType":"int","settingDescription":"The
551
+ default amount of time to cache a successful LRS auth callback. Can be overridden
552
+ via auth callback response for each individual request if necessary","level":"Tenant"}},{"id":"PlayerCompletionStatOfFailedSuccessStat","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.CompletionStatusValue","settingDescription":"Specifies
553
+ the Completion Status value to apply in the case of a Failed Success Status.
554
+ Only applied if set to \"completed\" or \"incomplete\"","level":"Registration","learningStandards":["SCORM11","SCORM12","AICC"],"validValues":[{"value":"Unknown","valueDescription":"The
555
+ completion status is unknown and has not been set yet. Note this is a different
556
+ than the enumeration being undefined, which indicates that the enumeration
557
+ itself is ''null''"},{"value":"Completed","valueDescription":"The learner
558
+ has completed the activity"},{"value":"Incomplete","valueDescription":"The
559
+ learner has started, but not finished the activity"},{"value":"Browsed","valueDescription":"The
560
+ learner viewed the activity, but just to browse it, not as an attempt"},{"value":"Not_Attempted","valueDescription":"The
561
+ learner has not started the activity"}]}},{"id":"PlayerIntermediateScoSatisfiedLogoutExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
562
+ navigation behavior the SCP should display when a SCO that has been satisfied
563
+ in the middle of a course exits with an exit type of logout.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
564
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
565
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
566
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
567
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
568
+ not take any action"}]}},{"id":"PlayerDebugLogsStorageLocation","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"fileStore","settingDescription":"The
569
+ path to the directory or file store (see file stores) where the player debug
570
+ logs will be stored. If this setting is configured, then clicking ''Save Debug
571
+ Log'' in the debugger will save the player debug logs to this location.","level":"Tenant"}},{"id":"xAPIFilesPath","effectiveValue":"RusticiSoftware.ScormContentPlayer.Logic.DataAccess.FileStorage.S3StreamingFileStore,
572
+ us-east-2, bridgestaging-cc-content, xapi/${TenantName}/","effectiveValueSource":"base","metadata":{"default":"RusticiSoftware.ScormContentPlayer.Logic.DataAccess.FileStorage.NullStreamingFileStore","dataType":"fileStore","settingDescription":"This
573
+ setting is a fallback for both xAPILargeDocumentsPath and xAPILargeAttachmentsPath.
574
+ If those settings are not given, this setting will be used instead.","level":"Tenant"}},{"id":"TenantSettingSyntaxEnabled","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Enable
575
+ tenant setting prefix syntax (tenantName.settingId) for configuring tenant
576
+ specific settings in the configuration file. Disabling this when not in use
577
+ can save memory on systems with a large number of tenants.","level":"Base"}},{"id":"ContentVaultSlidingAuthExpiry","effectiveValue":"60","effectiveValueSource":"default","metadata":{"default":"60","dataType":"int","settingDescription":"An
578
+ integer value greater than 60 seconds and less than 31540000 seconds that
579
+ defines how large the ''sliding window'' of content should be available","level":"Registration"}},{"id":"WebHookCustomUserAgent","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Custom
580
+ user agent header to set for web hook requests.","level":"Tenant"}},{"id":"TinCanInteractionsEnabled","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"If
581
+ enabled, Engine will extract runtime interaction details from certain xAPI
582
+ statements and include them in the progress data reported by the API and the
583
+ registration postback (in ''full'' format).","level":"Registration"}},{"id":"UserCountReportEnabled","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"\"","level":"System"}},{"id":"EnableClientDebugger","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"If
584
+ true, enables activating the debugger by typing ?????. This setting will also
585
+ cause the user to be prompted whether they wish to see the debugger if an
586
+ error occurs.","level":"Registration"}},{"id":"WhenToRestartRegistration","effectiveValue":"WHEN_EXISTING_REG_IS_COMPLETE_AND_NEWER_PACKAGE_VERSION_EXISTS","effectiveValueSource":"default","metadata":{"default":"WHEN_EXISTING_REG_IS_COMPLETE_AND_NEWER_PACKAGE_VERSION_EXISTS","dataType":"Enum.RegistrationInstanceIncrementTimingValue","settingDescription":"Determines
587
+ whether or not to restart a registration when launching it.","level":"Registration","validValues":[{"value":"NEVER","valueDescription":"Never
588
+ restart an existing registration (never increment instance id)"},{"value":"WHEN_EXISTING_REG_IS_COMPLETE_AND_NEWER_PACKAGE_VERSION_EXISTS","valueDescription":"Restart
589
+ course (increment instance id) when the overall course when a newer version
590
+ of the associated course package exists and course status is ''Complete''"},{"value":"WHEN_NEWER_PACKAGE_VERSION_EXISTS","valueDescription":"Restart
591
+ course (increment instance id) when a newer version of the associated course
592
+ package exists"},{"value":"WHEN_EXISTING_REG_IS_COMPLETE","valueDescription":"Restart
593
+ course (increment instance id) when the course has been completed, regardless
594
+ of satisfaction (pass/fail)."},{"value":"WHEN_EXISTING_REG_IS_SATISFIED","valueDescription":"Restart
595
+ course (increment instance id) when the overall course status is ''Satisfied''"},{"value":"WHEN_EXISTING_REG_IS_SATISFIED_AND_NEWER_PACKAGE_VERSION_EXISTS","valueDescription":"Restart
596
+ course (increment instance id) when the overall course is satisfied and a
597
+ newer version of the associated course package exists and course status is
598
+ ''Satisfied''"},{"value":"WHEN_EXISTING_REG_IS_INCOMPLETE_AND_NEWER_PACKAGE_VERSION_EXISTS","valueDescription":"Restart
599
+ course (increment instance id) when the overall course is incomplete and a
600
+ newer version of the associated course package exists."},{"value":"WHEN_EXISTING_REG_IS_FAILED","valueDescription":"Restart
601
+ course (increment instance ID) when the overall course is failed."},{"value":"WHEN_EXISTING_REG_IS_FAILED_AND_NEWER_PACKAGE_VERSION_EXISTS","valueDescription":"Restart
602
+ course (increment instance ID) when the overall course is failed and a newer
603
+ version of of the associated course package exists."}]}},{"id":"UpdateRunTimeDataLockExpireSeconds","effectiveValue":"10","effectiveValueSource":"default","metadata":{"default":"10","dataType":"int","settingDescription":"How
604
+ many seconds to lock the registration for when updating SCORM runtime data.
605
+ Specifying 0 disables registration locking.","level":"System"}},{"id":"LegacyPlayerCustomizationStylesheetUrl","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Web
606
+ path (absolute or relative) to a CSS file to load during legacy player start
607
+ up to allow for customization of player appearance.","level":"Registration"}},{"id":"PlayerCourseStructureWidth","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"nonNegativeInt","settingDescription":"Specifies
608
+ the default width in pixels for the course outline when shown in the legacy
609
+ player. This setting does not apply to the modern player.","level":"Registration"}},{"id":"PrivacyPolicyUrl","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Web
610
+ path (absolute or relative) that should be linked to as the privacy policy
611
+ document.","level":"Registration"}},{"id":"PlayerIsAvailableOffline","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
612
+ whether the package is available to take offline","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"RecordResultsMaxPayloadSizeInBytes","effectiveValue":"5242880","effectiveValueSource":"default","metadata":{"default":"5242880","dataType":"nonNegativeInt","settingDescription":"The
613
+ maximum number of bytes to accept in a RecordResults request before returning
614
+ an error. The default is 5 megabytes.","level":"Registration"}},{"id":"LtiPlatformIssuer","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"absoluteHttpUri","settingDescription":"A
615
+ case-sensitive URL identifying the LTI 1.3 platform. Needs to be an HTTPS
616
+ scheme that must contain: scheme and host, may contain port number and path
617
+ components and may not contain query or fragment components. Required for
618
+ LTI 1.3.","level":"System"}},{"id":"Encryptor","effectiveValue":"RusticiSoftware.ScormContentPlayer.Logic.Encryption.AES128bitGCMNoPaddingEncryptor","effectiveValueSource":"default","metadata":{"default":"RusticiSoftware.ScormContentPlayer.Logic.Encryption.AES128bitGCMNoPaddingEncryptor","dataType":"implementation","settingDescription":"An
619
+ implementation of RusticiSoftware.ScormContentPlayer.Logic.Encryption.IEncryptor
620
+ to be used for encryption and decryption of configuration settings and/or
621
+ external IDs.","level":"Special"}},{"id":"SuppressNavbarWhenForcedFrameset","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"When
622
+ enabled, prevents the navbar from showing for requests with the forceFrameset
623
+ parameter","level":"Registration"}},{"id":"PlayerFinalScoCourseNotSatisfiedNormalExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
624
+ navigation behavior the SCP should display when a SCO at the end of the course
625
+ that has not been satisfied exits with an exit type of normal.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
626
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
627
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
628
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
629
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
630
+ not take any action"}]}},{"id":"PlayerReturnToLmsAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ReturnToLmsActionValue","settingDescription":"Defines
631
+ what happens when a user click \"Return To LMS\"","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"],"validValues":[{"value":"Legacy","valueDescription":"Legacy
632
+ - The behavior matches Engine 2008.1 and prior"},{"value":"SuspendAll","valueDescription":"SUSPEND
633
+ ALL Navigation Request"},{"value":"ExitAll","valueDescription":"EXIT ALL Navigation
634
+ Request"},{"value":"Selectable","valueDescription":"Selectable by the user"}]}},{"id":"PlayerLogoutCausesPlayerExit","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Should
635
+ the SCP allow a cmi.exit request of logout to exit the entire player","level":"Registration","learningStandards":["SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"PlayerIntermediateScoNotSatisfiedLogoutExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
636
+ navigation behavior the SCP should display when a SCO that has not been satisfied
637
+ in the middle of a course exits with an exit type of logout.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
638
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
639
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
640
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
641
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
642
+ not take any action"}]}},{"id":"PlayerDebugSequencingDetailed","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Should
643
+ the debugger capture Sequencing data at the detailed level","level":"Registration"}},{"id":"xAPIStatementPipeLockTimeSeconds","effectiveValue":"600","effectiveValueSource":"default","metadata":{"default":"600","dataType":"nonNegativeInt","settingDescription":"The
644
+ amount of time, in seconds, a given machine can lock a statement pipe for
645
+ exclusive use. This value should encompass the ''clock drift'' between machines
646
+ and any delays due to possible slow connections or failed timeouts.","level":"System"}},{"id":"AudioVideoContentStylesheetPath","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Web
647
+ path (absolute or relative) to a CSS file that allows for customization of
648
+ elements in the Media Content AU that are specific to Audio/Video content
649
+ types.","level":"Registration"}},{"id":"xAPIStatementPipeBatchSize","effectiveValue":"500","effectiveValueSource":"default","metadata":{"default":"500","dataType":"positiveInt","settingDescription":"The
650
+ maximum number of statements that we will send at a time when using the statement
651
+ pipe feature.","level":"System"}},{"id":"PlayerPreventRightClick","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
652
+ whether the player should allow the learner to right click within its frames.
653
+ This setting can add a small measure of security to the application by making
654
+ it harder to view the source.","level":"Registration"}},{"id":"Plugins","effectiveValue":"ContentVaultPathModifying.Default","effectiveValueSource":"base","metadata":{"default":"","dataType":"delimitedImplementation","settingDescription":"Comma
655
+ separated list of implementation definitions that dictates which plugins are
656
+ loaded by Engine if available.","level":"Base"}},{"id":"SimpleQueueMaxTries","effectiveValue":"8","effectiveValueSource":"default","metadata":{"default":"8","dataType":"int","settingDescription":"How
657
+ many times to attempt a queued item before giving up. Note that the last retry
658
+ will have a delay of 2^n * SimpleQueueRetryInitialDelaySeconds","level":"System"}},{"id":"EnableExistingActivityIdParserWarnings","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"When
659
+ enabled (default), parser warnings will be generated during import of packages
660
+ with activities that are either already mapped to a package, or recorderd
661
+ in the LRS.","level":"Tenant"}},{"id":"PlayerCaptureHistory","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
662
+ if the course should return attempt information to the server","level":"Registration"}},{"id":"ApiIndentJson","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"Format
663
+ the JSON returned from the API nicely, useful when developing but should usually
664
+ be turned off in production for performance and payload size reasons.","level":"Base"}},{"id":"PlayerStatusRollupModeValue","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.StatusRollupMethodValue","settingDescription":"Specifies
665
+ how the player should rollup completion status from individual SCOs to aggregations
666
+ in SCORM 1.2","level":"Registration","learningStandards":["SCORM11","SCORM12","CMI5"],"validValues":[{"value":"STATUS_PROVIDED_BY_COURSE","valueDescription":"For
667
+ use with single SCO courses, just takes whatever status is reported by the
668
+ course."},{"value":"COMPLETE_WHEN_ALL_UNITS_COMPLETE","valueDescription":"Marks
669
+ the course complete whenever all of the SCOs are complete, even if the SCO
670
+ is failed."},{"value":"COMPLETE_WHEN_ALL_UNITS_COMPLETE_AND_NOT_FAILED","valueDescription":"Marks
671
+ the course complete whenever all of the SCOs are complete and not failed."},{"value":"COMPLETE_WHEN_THRESHOLD_SCORE_IS_MET","valueDescription":"Marks
672
+ the course complete whenever a certain score has been obtained as calculated
673
+ by the Score Rollup Method."},{"value":"COMPLETE_WHEN_ALL_UNITS_COMPLETE_AND_THRESHOLD_SCORE_IS_MET","valueDescription":"Marks
674
+ the course complete whenever all of the SCOs are complete and not failed and
675
+ a certain score has been obtained as calculated by the Score Rollup Method."},{"value":"COMPLETE_WHEN_ALL_UNITS_ARE_PASSED","valueDescription":"Marks
676
+ the course complete whenever all of the SCOs are satisfied(passed). In 1.2,
677
+ any SCO that is passed will also be complete (but not necessarily the other
678
+ way around)."}]}},{"id":"xAPILargeAttachmentsPath","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"fileStore","settingDescription":"The
679
+ root path or file store (see file stores) where large xAPI attachments will
680
+ be stored (see xAPIMaxDocumentSizeForDatabaseInBytes to define \"large\").","level":"Tenant"}},{"id":"AllowedRequests","effectiveValue":"LAUNCH_PAGE,
681
+ DELIVER_PAGE, RECORD_AICC_RESULTS_PAGE, RECORD_SCORM_RESULTS_PAGE, SUPPORT_PAGES","effectiveValueSource":"default","metadata":{"default":"LAUNCH_PAGE,
682
+ DELIVER_PAGE, RECORD_AICC_RESULTS_PAGE, RECORD_SCORM_RESULTS_PAGE, SUPPORT_PAGES","dataType":"delimitedString","settingDescription":"Comma
683
+ delimited whitelist of non-API request types that are allowed (see documentation
684
+ for SecureMethod enum for valid entries).","level":"System"}},{"id":"PreviousEncryptor","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"implementation","settingDescription":"The
685
+ previously used implementation of RusticiSoftware.ScormContentPlayer.Logic.Encryption.IEncryptor
686
+ used, so values encrypted with it can continue to be decrypted until encrypted
687
+ with the new encryptor. Note: for fallback to a previous encryptor to work,
688
+ the main Encryptor must detect and throw an exception when decryption fails.","level":"Special"}},{"id":"UseLegacyMobileFramesetBehavior","effectiveValue":"False","effectiveValueSource":"base","metadata":{"default":"false","dataType":"bool","settingDescription":"Determines
689
+ how to handle mobile launches. When set to true, then Engine will use the
690
+ old behavior (where forceFrameset is needed to do a frameset launch, and SuppressNavbarWhenForcedFrameset
691
+ is needed to hide the navbar). When set to false, mobile launches will be
692
+ treated the same way as desktop launches.","level":"Registration"}},{"id":"PlayerIsCompletionTracked","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Does
693
+ this course package actually report completion in a meaningful way?","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"xAPIUrlPrefix","effectiveValue":"lrs","effectiveValueSource":"default","metadata":{"default":"lrs","dataType":"string","settingDescription":"The
694
+ URL prefix that is used for xAPI requests.","level":"System"}},{"id":"ApiEnableV1","effectiveValue":"True","effectiveValueSource":"base","metadata":{"default":"false","dataType":"bool","settingDescription":"Is
695
+ the v1 API enabled? If false requests to the v1 API will be rejected regardless
696
+ of the credential specified.","level":"Base"}},{"id":"ApiEnableV2","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Is
697
+ the v2 API enabled? If false requests to the v2 API will be rejected regardless
698
+ of the credential specified.","level":"Base"}},{"id":"SQLDebugLogMinimumExecutionMS","effectiveValue":"0","effectiveValueSource":"default","metadata":{"default":"0","dataType":"int","settingDescription":"When
699
+ DEBUG level loging is enabled so Engine''s SQL statements are logged, only
700
+ log statements that take at least this many milliseconds to execute.","level":"Base"}},{"id":"ApiAlternateIdDelimiter","effectiveValue":"~","effectiveValueSource":"default","metadata":{"default":"~","dataType":"string","settingDescription":"A
701
+ delimiter that may be used instead of | when passing External IDs to API calls,
702
+ since | can be a problem in URL paths.","level":"System"}},{"id":"DatabaseTimeoutSeconds","effectiveValue":"60","effectiveValueSource":"default","metadata":{"default":"60","dataType":"nonNegativeInt","settingDescription":"The
703
+ timeout (in seconds) to set on database operations. This setting applies only
704
+ to .NET.","level":"Base"}},{"id":"ContentLangToUrl","effectiveValue":"[]","effectiveValueSource":"default","metadata":{"default":"[]","dataType":"languageList","settingDescription":"JSON
705
+ string that represents a list of ContentLanguageDefinition objects. The ContentLanguageDefinition
706
+ obj contains the following keys: label (required string - The displayed string
707
+ that specifies the language), srclang (string - The ISO language code associated
708
+ with the language), src (required string - The URL to the .vtt file content),
709
+ default (bool - Is this the default language), and kind (string - Specifies
710
+ the type of support file. Expected values include \"captions\" and \"subtitles\")","level":"Registration"}},{"id":"ForwardedProtocol","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"The
711
+ original (before proxying) protocl used to send requests to Engine. If the
712
+ Engine server is behind an SSL Offloading proxy, this value will likely be
713
+ HTTPS.","level":"System"}},{"id":"RedirectOnExitUrl","effectiveValue":"noop","effectiveValueSource":"base","metadata":{"dataType":"string","settingDescription":"The
714
+ URL the application should redirect to when the learner exits a course","level":"Registration"}},{"id":"OfflineZipOutputLocation","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"fileStore","settingDescription":"The
715
+ path to the directory or file store (see file stores) where offline zip files
716
+ should be placed.","level":"Tenant"}},{"id":"ApiResultLimit","effectiveValue":"100","effectiveValueSource":"default","metadata":{"default":"100","dataType":"int","settingDescription":"Maximum
717
+ number of items to return in a list at once.","level":"System"}},{"id":"PlayerIntermediateScoNotSatisfiedSuspendExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
718
+ navigation behavior the SCP should display when a SCO that has not been satisfied
719
+ in the middle of a course exits with an exit type of suspend.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
720
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
721
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
722
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
723
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
724
+ not take any action"}]}},{"id":"PlayerLaunchCompletedRegsAsNoCredit","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Determines
725
+ whether an AICC or SCORM 1.2 registrations goes into \"no credit\" mode upon
726
+ completion","level":"Registration","learningStandards":["SCORM11","SCORM12","AICC"]}},{"id":"ExpireLaunchHistoryAfterDays","effectiveValue":"90","effectiveValueSource":"base","metadata":{"default":"30","dataType":"positiveInt","settingDescription":"The
727
+ minimum number of days that should pass before purging a launch history entry.","level":"Tenant"}},{"id":"PlayerStatusDisplayPreference","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.StatusDisplayValue","settingDescription":"Specifies
728
+ how the player should display the completion and success status of individual
729
+ SCOs.","level":"Registration","learningStandards":["SCORM11","SCORM12","CMI5"],"validValues":[{"value":"SUCCESS_ONLY","valueDescription":"Only
730
+ display an icon to represent the success status of the activity."},{"value":"COMPLETION_ONLY","valueDescription":"Only
731
+ display an icon to represent the completion status of the activity."},{"value":"SEPARATE","valueDescription":"Display
732
+ two icons, one to represent the completion status of the activity, another
733
+ to represent the success status."},{"value":"COMBINED","valueDescription":"Display
734
+ a single icon that represents both the success and completion status of an
735
+ activity."},{"value":"NONE","valueDescription":"Do not display any status
736
+ representation icons."}]}},{"id":"PlayerInternetExplorerCompatibilityMode","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.InternetExplorerCompatibilityModeValue","settingDescription":"The
737
+ Internet Explorer Compatibility Mode to launch this content in. This determines
738
+ which X-UA-Compatible meta tag should be used, if any, by the player''s frameset
739
+ pages in which content can be held within a child frame.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"],"validValues":[{"value":"NONE","valueDescription":"No
740
+ X-UA-Compatible meta tag should be used."},{"value":"EMULATE_IE7","valueDescription":"IE7
741
+ Mode, use DOCTYPE if present, otherwise use Quirks Mode"},{"value":"IE7","valueDescription":"IE7
742
+ Mode, use Standards Mode regardless of DOCTYPE"},{"value":"EMULATE_IE8","valueDescription":"IE8
743
+ Mode, use DOCTYPE if present, otherwise use Quirks Mode"},{"value":"IE8","valueDescription":"IE8
744
+ Mode, use Standards Mode regardless of DOCTYPE"},{"value":"EMULATE_IE9","valueDescription":"IE9
745
+ Mode, use DOCTYPE if present, otherwise use Quirks Mode"},{"value":"IE9","valueDescription":"IE9
746
+ Mode, use Standards Mode regardless of DOCTYPE"},{"value":"EDGE","valueDescription":"Use
747
+ the highest rendering mode available."},{"value":"IE10","valueDescription":"Use
748
+ IE10 mode. Early indicators are that this is necessary for vbscript support
749
+ in IE11."}]}},{"id":"OfflinePathToContentRoot","effectiveValue":"RusticiSoftware.ScormContentPlayer.Logic.DataAccess.FileStorage.S3StreamingFileStore,
750
+ us-east-2, bridgestaging-cc-content, courses/${TenantName}/","effectiveValueSource":"fallback","metadata":{"dataType":"fileStore","settingDescription":"Path
751
+ to the directory or file store that is the root of where offline package content
752
+ can be found.","level":"Tenant","fallback":"FilePathToContentRoot"}},{"id":"ContentVaultIpAddressValidationEnabled","effectiveValue":"false","effectiveValueSource":"system","metadata":{"default":"true","dataType":"bool","settingDescription":"Tells
753
+ if IP address validation should be enabled or disabled","level":"Registration"}},{"id":"PlayerDebugRteDetailed","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Should
754
+ the debugger capture RunTime data at the detailed level","level":"Registration"}},{"id":"Go1ApiKey","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"string","settingDescription":"The
755
+ API consumer key for this Go1 integration","level":"Tenant"}},{"id":"PlayerIsIncompleteSatisfactionMeaningful","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"If
756
+ the course is incomplete, is its satisfaction (pass/fail) still meaningful?","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"UserCountReportLookBackDays","effectiveValue":"365","effectiveValueSource":"system","metadata":{"default":"365","dataType":"int","settingDescription":"How
757
+ long is the contract period (and therefore the range to report usage for).","level":"System"}},{"id":"FilePathToContentRoot","effectiveValue":"RusticiSoftware.ScormContentPlayer.Logic.DataAccess.FileStorage.S3StreamingFileStore,
758
+ us-east-2, bridgestaging-cc-content, courses/${TenantName}/","effectiveValueSource":"base","metadata":{"dataType":"fileStore","settingDescription":"The
759
+ path to the directory or file store (see file stores) where uploaded and unzipped
760
+ files should be placed.","level":"Tenant"}},{"id":"PreviousEncryptionPassword","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"For
761
+ use when changing passwords. Set this to the prior value of EncryptionPassword
762
+ so values encrypted with it can continue to be decrypted until encrypted with
763
+ the new password. Note: for fallback to a previous password to work, the
764
+ Encryptor must detect and throw an exception when decryption fails.","level":"Special"}},{"id":"PlayerScoLaunchType","effectiveValue":"NEW_WINDOW","effectiveValueSource":"system","metadata":{"dataType":"Enum.LaunchTypeValue","settingDescription":"Specifies
765
+ how the individual parts of the course should be launched","level":"Registration","validValues":[{"value":"FRAMESET","valueDescription":"Display
766
+ the player or SCO in a child frameset."},{"value":"NEW_WINDOW","valueDescription":"Display
767
+ the player or SCO in a popup window."},{"value":"NEW_WINDOW_AFTER_CLICK","valueDescription":"Display
768
+ the player or SCO in a popup window after prompting the user to click a link
769
+ to avoid popup blocker restrictions."},{"value":"NEW_WINDOW_WITHOUT_BROWSER_TOOLBAR","valueDescription":"Display
770
+ the player or SCO in a popup window (without toolbar)."},{"value":"NEW_WINDOW_AFTER_CLICK_WITHOUT_BROWSER_TOOLBAR","valueDescription":"Display
771
+ the player or SCO in a popup window (without toolbar) after prompting the
772
+ user to click a link to avoid popup blocker restrictions."}]}},{"id":"PlayerDebugRteAudit","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Should
773
+ the debugger capture RunTime data at the audit level","level":"Registration"}},{"id":"UseStatementTimestampInRegistrationUpdates","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Normally
774
+ the FirstAccessDate and CompletedDate values are set to the current time when
775
+ the statement is processed and we update the registration state from it. This
776
+ switches to using the timestamp value from the statement triggering the registration
777
+ update for these values where applicable.","level":"Tenant"}},{"id":"UserCountReportDaysBetweenReports","effectiveValue":"30","effectiveValueSource":"system","metadata":{"default":"30","dataType":"int","settingDescription":"How
778
+ many days to wait before reporting a user count after the last time user count
779
+ was reported.","level":"System"}},{"id":"RusticiEngineUrl","effectiveValue":"/ScormEngineInterface","effectiveValueSource":"base","metadata":{"default":"","dataType":"string","settingDescription":"Context
780
+ path to which Engine has been deployed","level":"Base"}},{"id":"ContentVaultAuthFingerprintValidationEnabled","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Tells
781
+ if fingerprint validation should be enabled or disabled","level":"Registration"}},{"id":"PlayerDebugIncludeTimestamps","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Should
782
+ debug information include timestamps and measurements of how long individual
783
+ functions are taking for performance monitoring","level":"Registration"}},{"id":"PlayerShowFinishButton","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
784
+ whether the interface should show a button that allows the learner to return
785
+ to the LMS","level":"Registration"}},{"id":"PlayerRollupEmptySetToUnknown","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"In
786
+ SCORM 2004, determines whether a set of child activities in an unknown state
787
+ rollup to \"unknown\" or \"complete/satisfied\"","level":"Registration","learningStandards":["SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"RedactedTables","effectiveValue":"ScormActivity.*,
788
+ ScormLaunchHistory, ScormRegistrationGlobalObj, TinCanRegistration","effectiveValueSource":"default","metadata":{"default":"ScormActivity.*,
789
+ ScormLaunchHistory, ScormRegistrationGlobalObj, TinCanRegistration","dataType":"delimitedString","settingDescription":"Comma
790
+ delimited, case insensitive list of regular expressions (start and end anchors
791
+ will be added) to match tables to redact (all columns that appear in one of
792
+ these tables are redacted), if RedactLogs is enabled (otherwise this list
793
+ has no effect).","level":"Base"}},{"id":"PlayerMakeStudentPrefsGlobalToCourse","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"When
794
+ a student makes a preference (audio volume, etc) the preference should be
795
+ applied to all SCOs","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"ApiPostbackDataModelVersion","effectiveValue":"v1","effectiveValueSource":"system","metadata":{"default":"v2","dataType":"Enum.ApiVersion","settingDescription":"The
796
+ API version that will be used to determine the contents and format of API
797
+ postbacks.","level":"Tenant","validValues":[{"value":"v1","valueDescription":"Version
798
+ 1 of the API"},{"value":"v2","valueDescription":"Version 2 of the API"}]}},{"id":"PlayerFinishCausesImmediateCommit","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"This
799
+ setting forces data to be sent to the server immediately upon the call of
800
+ LMSFinish or Terminate by the SCO. Can be useful for SCOs that are not completing
801
+ because of timing issues related to window closing.","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"IntermediatePageLoadAtStart","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Whether
802
+ to load the intermediate page in the content frame at launch before the loader
803
+ takes over. Turning this off leads to a small performance optimization, but
804
+ at the risk of the user not seeing a loading message particularly in multi
805
+ SCO/AU courses with no automatic first SCO/AU load.","level":"Registration"}},{"id":"ApiCourseDeleteAttemptDeleteFiles","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"Controls
806
+ whether or not deleting a course through the API should also attempt to delete
807
+ the course''s files. This functionality will only work for courses that are
808
+ located within the FilePathToContentRoot that you have configured. It will
809
+ not delete the metadata files for remote AICC or Tin Can courses.","level":"Registration"}},{"id":"OfflineContentPathAcceptedRegex","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"This
810
+ regex will be used to check the pathToContent parameter when exporting an
811
+ offline course. If the pathToContent matches this regex, then the offline
812
+ course will be exported, otherwise the export will throw an exception. By
813
+ default this setting will deny all paths so is required if the pathToContent
814
+ param is to be used. Note: ''AllowedRequests'' must also be set to include
815
+ ''OFFLINE_SERVICES'' to allow exporting courses for offline use.","level":"Tenant"}},{"id":"ModernPlayerCustomizationLogo","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Web
816
+ path to an image file to show as customization of player appearance.","level":"Registration"}},{"id":"xAPIObjectStoreRepairs","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"DelimitedEnum.TinCan.Implementation.ObjectKeyRepairTypes","settingDescription":"Some
817
+ customers who upgraded to Engine 2015.1 from earlier versions of Engine and
818
+ were using xAPI may experience bugs arising from the keys in the upgraded
819
+ object store not matching the scheme used in 2015.1 and later. Setting this
820
+ allows customers to fix this issue by automatically searching for certain
821
+ objects based on the location they would have had in 2014. The valid choices
822
+ here are UriHashCase and DocumentHashCase. Both options should be enabled
823
+ for Java customers with this problem; only UriHashCase is necessary for .NET
824
+ customers. In both cases, be sure to consult with Engine support before enabling,
825
+ so we can confirm this problem applies to you.","level":"System"}},{"id":"PlayerInvalidMenuItemAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.InvalidMenuItemActionValue","settingDescription":"Specifies
826
+ the method of disabling items in the course outline which for which a request
827
+ would not succeed.","level":"Registration","validValues":[{"value":"SHOW","valueDescription":"Show
828
+ the menu item and have it fully enabled"},{"value":"HIDE","valueDescription":"Hide
829
+ the menu item completely"},{"value":"DISABLE","valueDescription":"Show the
830
+ menu item, but disable its link"}]}},{"id":"LtiConsumerIdentifier","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"string","settingDescription":"A
831
+ unique identifier for the product providing LTI support. This identifier is
832
+ required and should not change once set. Must be no larger than 255 ASCII
833
+ characters in length. A UUID is recommended.","level":"Tenant"}},{"id":"PlayerDebugControlAudit","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Should
834
+ the debugger capture control data at the audit level","level":"Registration"}},{"id":"xAPILaunchTokenUpdateLifeInSeconds","effectiveValue":"0","effectiveValueSource":"default","metadata":{"default":"0","dataType":"int","settingDescription":"Sets
835
+ the updated life of the TinCan Launch Token. This time will be added to the
836
+ expiry every time the token is accessed. Default is 0.","level":"System"}},{"id":"ApiTokenPostbackValidHours","effectiveValue":"24","effectiveValueSource":"default","metadata":{"default":"24","dataType":"int","settingDescription":"Number
837
+ of hours the token used to authenticate SCORM runtime postbacks (when using
838
+ signed launch links) is valid.","level":"Tenant"}},{"id":"ContentVaultSlidingAuthExpiryEnabled","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"Whether
839
+ content vault''s sliding expiry window is enabled","level":"Registration"}},{"id":"DataPersistenceEngine","effectiveValue":"mysql","effectiveValueSource":"base","metadata":{"dataType":"string","settingDescription":"A
840
+ string (`sqlserver`, `mysql`, `postgresql`, or `oracle`) corresponding to
841
+ the DBMS flavor in use.","level":"Base"}},{"id":"PlayerFirstScoIsPretest","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
842
+ whether the first SCO in the course should be considered a pretest. If true
843
+ and the first SCO is passed, the rest of the course will be marked as completed.","level":"Registration","learningStandards":["SCORM11","SCORM12","CMI5"]}},{"id":"PlayerIsScoreTracked","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Does
844
+ this course package actually report its score in a meaningful way?","level":"Registration","learningStandards":["SCORM11","SCORM12","SCORM20042NDEDITION","SCORM20043RDEDITION","SCORM20044THEDITION"]}},{"id":"AttemptInsertBeforeUpsert","effectiveValue":"null","effectiveValueSource":"default","metadata":{"default":"null","dataType":"nullableBool","settingDescription":"If
845
+ true, attempt to use inserts before upserts. This can result in a signficant
846
+ performance gain in systems where inserts would generally be expected to succeed,
847
+ such as the Engine upgrade tool. The use of this setting is not supported
848
+ with PostgreSQL and can result in errors.","level":"System"}},{"id":"ImportLinkLocation","effectiveValue":"defaultui/import","effectiveValueSource":"default","metadata":{"default":"defaultui/import","dataType":"string","settingDescription":"The
849
+ path to the import page used when you have generated an import URL to POST
850
+ to.","level":"System"}},{"id":"PlayerApplyRollupStatusToSuccess","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
851
+ whether the success status should be updated based on the rudimentary status
852
+ rollup rules.","level":"Registration","learningStandards":["SCORM11","SCORM12","CMI5"]}},{"id":"ApiRollupRegistrationSynchronous","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"The
853
+ initial attempt to post registration data will occur synchronously as the
854
+ course is being completed.","level":"Registration"}},{"id":"Lti11PrivacySettings","effectiveValue":"LEARNER_NAME_ONLY","effectiveValueSource":"default","metadata":{"default":"LEARNER_NAME_ONLY","dataType":"Enum.Lti11PrivacySettingValue","settingDescription":"Determines
855
+ which user-identifying information will be sent during launch.","level":"Registration","validValues":[{"value":"LEARNER_NAME_ONLY","valueDescription":"The
856
+ learner''s first name, last name, and full name will be sent to the tool during
857
+ launch. The full name is determined by concatenating the first and last name
858
+ with a space in between."},{"value":"LEARNER_NAME_AND_EMAIL","valueDescription":"The
859
+ learner''s first name, last name, full name, and email will be sent to the
860
+ tool during launch. The full name is determined by concatenating the first
861
+ and last name with a space in between. The email should be passed in the id
862
+ property of the learner schema when a registration is created."},{"value":"NO_LEARNER_INFO","valueDescription":"No
863
+ identifying information about the user will be sent to the tool during launch."}]}},{"id":"EncryptionPassword","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"This
864
+ setting gives the secret key used for encryption of configuration settings,
865
+ and xAPI pipe passwords. If this is set to a 128 bit value expressed as hex
866
+ in the format ''0xABCD...'', it will be used as the encryption key. If not,
867
+ it will be used to generate a key, which will introduce a small delay the
868
+ first time the key is needed.","level":"Special"}},{"id":"MaxUpsertSizeInBytes","effectiveValue":"0","effectiveValueSource":"default","metadata":{"default":"0","dataType":"nonNegativeInt","settingDescription":"The
869
+ maximum size of each upsert (merge) statement in bytes. Set to 0 for no size
870
+ limit. This setting is usually only necessary for MySQL customers with a very
871
+ small max_allowed_packet value.","level":"System"}},{"id":"PlayerDebugSequencingSimple","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Capture
872
+ sequencing debugging information in a more human readable fashion than the
873
+ very technical Audit or Detailed level","level":"Registration","learningStandards":["SCORM20044THEDITION"]}},{"id":"SystemDatabaseEnabled","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"Should
874
+ the system database be used? Note: if disabled, features that use system wide
875
+ queues such as PENS and xAPI pipes will not work. Multiple tenants per DB
876
+ are not supported without a system database. This setting must be set as desired
877
+ upon initial installation of Engine, changing it on a existing system is likely
878
+ to result in data loss.","level":"Base"}},{"id":"xAPIEnabled","effectiveValue":"true","effectiveValueSource":"default","metadata":{"default":"true","dataType":"bool","settingDescription":"\"","level":"System"}},{"id":"ContentVaultEnabled","effectiveValue":"True","effectiveValueSource":"base","metadata":{"default":"false","dataType":"bool","settingDescription":"Whether
879
+ to use content vault to authenticate access to the content","level":"Registration"}},{"id":"PlayerScoreRollupModeNumberOfScoringObjects","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"int","settingDescription":"Specifies
880
+ how the player should rollup scores from individual SCOs to aggregations in
881
+ SCORM 1.2","level":"Registration","learningStandards":["SCORM11","SCORM12","CMI5"]}},{"id":"xAPIStatementPipeWebTimeoutMilliseconds","effectiveValue":"10000","effectiveValueSource":"default","metadata":{"default":"10000","dataType":"nonNegativeInt","settingDescription":"The
882
+ timeout, in milliseconds, we will use when sending GET and POST requests to
883
+ the LRSes involved in a statement pipe. This number is set fairly high by
884
+ default to accomodate batches involving many attachments.","level":"System"}},{"id":"PlayerDesiredHeight","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"nonNegativeInt","settingDescription":"The
885
+ number of pixels in height the course would like to have available, if possible,
886
+ during delivery.","level":"Registration"}},{"id":"PlayerShowHelp","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Specifies
887
+ whether the interface should show a help button","level":"Registration"}},{"id":"LegacyPlayerCustomizationScriptUrl","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"string","settingDescription":"Web
888
+ path (absolute or relative) to a JavaScript file to load during legacy player
889
+ start up to allow for customization of player execution.","level":"Registration"}},{"id":"CompressRecordResultsPayload","effectiveValue":"false","effectiveValueSource":"default","metadata":{"default":"false","dataType":"bool","settingDescription":"If
890
+ this setting is enabled, the payloads for the RecordResults requests will
891
+ be compressed using the LZString library. This configuration can be used along
892
+ with UseDeltaRecordResultsPayload to greatly reduce the size of the RecordResults
893
+ payload.","level":"Registration"}},{"id":"ApiRollupRegistrationFormat","effectiveValue":"FULL","effectiveValueSource":"system","metadata":{"default":"activity","dataType":"string","settingDescription":"Level
894
+ of detail in the information that provided when posting registration data.
895
+ It may be one of three values: ''course'' (course summary), ''activity'' (activity
896
+ summary, or ''full'' (full detail), and is set to ''activity'' by default.
897
+ The information will be posted as JSON, using the schemas for the registration
898
+ /progress or /progress/detail resources depending on the format selected,
899
+ with an additional wrapper specifying the registration ID.","level":"Registration"}},{"id":"PlayerFinalScoCourseSatisfiedNormalExitAction","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ExitActionValue","settingDescription":"The
900
+ navigation behavior the SCP should display when a SCO at the end of the course
901
+ that has been satisfied exits with an exit type of normal.","level":"Registration","learningStandards":["SCORM11","SCORM12"],"validValues":[{"value":"EXIT_COURSE","valueDescription":"Exit
902
+ the entire course player"},{"value":"EXIT_COURSE_AFTER_CONFIRM","valueDescription":"Exit
903
+ the entire course player after asking the learner''s permission"},{"value":"GO_TO_NEXT_SCO","valueDescription":"Immediately
904
+ go to the next SCO"},{"value":"DISPLAY_MESSAGE","valueDescription":"Display
905
+ a status message to the learner"},{"value":"DO_NOTHING","valueDescription":"Do
906
+ not take any action"}]}},{"id":"PlayerAllowCompleteStatusChange","effectiveValue":"","effectiveValueSource":"default","metadata":{"default":"","dataType":"bool","settingDescription":"Determines
907
+ whether or not the lesson status can be modified once it has been set to complete.","level":"Registration","learningStandards":["SCORM11","SCORM12","AICC"]}},{"id":"ConcurrentLaunchDetectionHistoryRows","effectiveValue":"5","effectiveValueSource":"default","metadata":{"default":"5","dataType":"positiveInt","settingDescription":"The
908
+ number of launch history entries to load when detecting concurrent launches.","level":"Registration"}},{"id":"PlayerScoreRollupModeValue","effectiveValue":"","effectiveValueSource":"default","metadata":{"dataType":"Enum.ScoreRollupMethodValue","settingDescription":"Specifies
909
+ how the player should rollup scores from individual SCOs to aggregations in
910
+ SCORM 1.2","level":"Registration","learningStandards":["SCORM11","SCORM12","CMI5"],"validValues":[{"value":"SCORE_PROVIDED_BY_COURSE","valueDescription":"For
911
+ use with single SCO courses, uses whatever score is provided by the SCO."},{"value":"AVERAGE_SCORE_OF_ALL_UNITS","valueDescription":"Adds
912
+ up all reported scores and divides by the number of SCOs in the course."},{"value":"AVERAGE_SCORE_OF_ALL_UNITS_WITH_SCORES","valueDescription":"Adds
913
+ up all reported scores and divides by the number of SCOs that actually reported
914
+ a score."},{"value":"FIXED_AVERAGE","valueDescription":"Adds up all reported
915
+ scores and divides by a fixed number."},{"value":"AVERAGE_SCORE_OF_ALL_UNITS_WITH_NONZERO_SCORES","valueDescription":"Adds
916
+ up all reported scores and divides by the number of SCOs that reported a score
917
+ greater than zero."},{"value":"LAST_SCO_SCORE","valueDescription":"Use the
918
+ score of the last SCO."}]}},{"id":"xAPIPostProcessContextParameters","effectiveValue":"top
919
+ , left , content_token , width , content_endpoint , height, Content-Length","effectiveValueSource":"default","metadata":{"default":"top
920
+ , left , content_token , width , content_endpoint , height, Content-Length","dataType":"delimitedString","settingDescription":"Only
921
+ relevant if TinCanPostProcessContext is overriden, or as a way to consume
922
+ extraneous parameters so they are not flagged as ''unexpected''. Comma-delimited,
923
+ case sensitive list of xAPI parameters to pass to the TinCanPostProcessContext
924
+ integration method requestParameters collection. This is needed because xAPI
925
+ requires us to consider any unexpected parameters an error, so if an integration
926
+ uses parameters from the xAPI call it needs to declare that usage. The default
927
+ value contains extra parameters the combination of the Engine player and the
928
+ TinCan launch process recomendation typically cause to be sent.","level":"Tenant"}}]}'
929
+ http_version:
930
+ recorded_at: Fri, 13 Nov 2020 17:36:40 GMT
931
+ recorded_with: VCR 4.0.0