scorm_engine 0.7.3 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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