@tellescope/sdk 2.0.0-beta.1 → 2.0.0-beta.3

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 (957) hide show
  1. package/CLAUDE.md +24 -0
  2. package/env.example +6 -0
  3. package/lib/cjs/sdk.d.ts +375 -4
  4. package/lib/cjs/sdk.d.ts.map +1 -1
  5. package/lib/cjs/sdk.js +5 -0
  6. package/lib/cjs/sdk.js.map +1 -1
  7. package/lib/cjs/tests/api_tests/ai_conversations.test.d.ts +14 -5
  8. package/lib/cjs/tests/api_tests/ai_conversations.test.d.ts.map +1 -1
  9. package/lib/cjs/tests/api_tests/ai_conversations.test.js +163 -149
  10. package/lib/cjs/tests/api_tests/ai_conversations.test.js.map +1 -1
  11. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.d.ts +22 -0
  12. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.d.ts.map +1 -0
  13. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.js +518 -0
  14. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.js.map +1 -0
  15. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.d.ts +6 -5
  16. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.d.ts.map +1 -1
  17. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.js +135 -73
  18. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.js.map +1 -1
  19. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.d.ts +6 -5
  20. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.d.ts.map +1 -1
  21. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.js +240 -174
  22. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.js.map +1 -1
  23. package/lib/cjs/tests/api_tests/availability_block_buffer.test.d.ts +22 -0
  24. package/lib/cjs/tests/api_tests/availability_block_buffer.test.d.ts.map +1 -0
  25. package/lib/cjs/tests/api_tests/availability_block_buffer.test.js +311 -0
  26. package/lib/cjs/tests/api_tests/availability_block_buffer.test.js.map +1 -0
  27. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.d.ts +6 -5
  28. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.d.ts.map +1 -1
  29. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.js +235 -192
  30. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.js.map +1 -1
  31. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.d.ts +6 -5
  32. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.d.ts.map +1 -1
  33. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.js +351 -264
  34. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.js.map +1 -1
  35. package/lib/cjs/tests/api_tests/booking_prevent_upcoming_duplicate.test.d.ts +22 -0
  36. package/lib/cjs/tests/api_tests/booking_prevent_upcoming_duplicate.test.d.ts.map +1 -0
  37. package/lib/cjs/tests/api_tests/booking_prevent_upcoming_duplicate.test.js +506 -0
  38. package/lib/cjs/tests/api_tests/booking_prevent_upcoming_duplicate.test.js.map +1 -0
  39. package/lib/cjs/tests/api_tests/bulk_assignment.test.d.ts +16 -5
  40. package/lib/cjs/tests/api_tests/bulk_assignment.test.d.ts.map +1 -1
  41. package/lib/cjs/tests/api_tests/bulk_assignment.test.js +336 -243
  42. package/lib/cjs/tests/api_tests/bulk_assignment.test.js.map +1 -1
  43. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.d.ts +13 -5
  44. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.d.ts.map +1 -1
  45. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.js +131 -108
  46. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.js.map +1 -1
  47. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.d.ts +15 -5
  48. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.d.ts.map +1 -1
  49. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.js +240 -252
  50. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.js.map +1 -1
  51. package/lib/cjs/tests/api_tests/chats_analytics.test.d.ts +14 -5
  52. package/lib/cjs/tests/api_tests/chats_analytics.test.d.ts.map +1 -1
  53. package/lib/cjs/tests/api_tests/chats_analytics.test.js +190 -189
  54. package/lib/cjs/tests/api_tests/chats_analytics.test.js.map +1 -1
  55. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.d.ts +23 -5
  56. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.d.ts.map +1 -1
  57. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.js +121 -118
  58. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.js.map +1 -1
  59. package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts +21 -5
  60. package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts.map +1 -1
  61. package/lib/cjs/tests/api_tests/configurations_public_read.test.js +235 -119
  62. package/lib/cjs/tests/api_tests/configurations_public_read.test.js.map +1 -1
  63. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts +7 -0
  64. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts.map +1 -0
  65. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.js +356 -0
  66. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.js.map +1 -0
  67. package/lib/cjs/tests/api_tests/create_note_action.test.d.ts +18 -5
  68. package/lib/cjs/tests/api_tests/create_note_action.test.d.ts.map +1 -1
  69. package/lib/cjs/tests/api_tests/create_note_action.test.js +218 -173
  70. package/lib/cjs/tests/api_tests/create_note_action.test.js.map +1 -1
  71. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.d.ts +17 -4
  72. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.d.ts.map +1 -1
  73. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.js +144 -205
  74. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.js.map +1 -1
  75. package/lib/cjs/tests/api_tests/custom_aggregation.test.d.ts +15 -5
  76. package/lib/cjs/tests/api_tests/custom_aggregation.test.d.ts.map +1 -1
  77. package/lib/cjs/tests/api_tests/custom_aggregation.test.js +284 -223
  78. package/lib/cjs/tests/api_tests/custom_aggregation.test.js.map +1 -1
  79. package/lib/cjs/tests/api_tests/database_cascade_delete.test.d.ts +13 -5
  80. package/lib/cjs/tests/api_tests/database_cascade_delete.test.d.ts.map +1 -1
  81. package/lib/cjs/tests/api_tests/database_cascade_delete.test.js +218 -242
  82. package/lib/cjs/tests/api_tests/database_cascade_delete.test.js.map +1 -1
  83. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +21 -5
  84. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -1
  85. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js +168 -112
  86. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -1
  87. package/lib/cjs/tests/api_tests/elation_user_id.test.d.ts +17 -5
  88. package/lib/cjs/tests/api_tests/elation_user_id.test.d.ts.map +1 -1
  89. package/lib/cjs/tests/api_tests/elation_user_id.test.js +121 -54
  90. package/lib/cjs/tests/api_tests/elation_user_id.test.js.map +1 -1
  91. package/lib/cjs/tests/api_tests/enduser_fields_sync.test.d.ts +3 -1
  92. package/lib/cjs/tests/api_tests/enduser_fields_sync.test.d.ts.map +1 -1
  93. package/lib/cjs/tests/api_tests/enduser_fields_sync.test.js +3 -1
  94. package/lib/cjs/tests/api_tests/enduser_fields_sync.test.js.map +1 -1
  95. package/lib/cjs/tests/api_tests/enduser_observations_auto_review.test.d.ts +3 -1
  96. package/lib/cjs/tests/api_tests/enduser_observations_auto_review.test.d.ts.map +1 -1
  97. package/lib/cjs/tests/api_tests/enduser_observations_auto_review.test.js +3 -1
  98. package/lib/cjs/tests/api_tests/enduser_observations_auto_review.test.js.map +1 -1
  99. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts +6 -5
  100. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -1
  101. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.js +193 -143
  102. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.js.map +1 -1
  103. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.d.ts +7 -0
  104. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.d.ts.map +1 -0
  105. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.js +532 -0
  106. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.js.map +1 -0
  107. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.d.ts +25 -5
  108. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.d.ts.map +1 -1
  109. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.js +395 -366
  110. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.js.map +1 -1
  111. package/lib/cjs/tests/api_tests/form_translations.test.d.ts +6 -5
  112. package/lib/cjs/tests/api_tests/form_translations.test.d.ts.map +1 -1
  113. package/lib/cjs/tests/api_tests/form_translations.test.js +269 -189
  114. package/lib/cjs/tests/api_tests/form_translations.test.js.map +1 -1
  115. package/lib/cjs/tests/api_tests/form_vital_reading.test.d.ts +7 -0
  116. package/lib/cjs/tests/api_tests/form_vital_reading.test.d.ts.map +1 -0
  117. package/lib/cjs/tests/api_tests/form_vital_reading.test.js +461 -0
  118. package/lib/cjs/tests/api_tests/form_vital_reading.test.js.map +1 -0
  119. package/lib/cjs/tests/api_tests/formsort_header_auth.test.d.ts +29 -5
  120. package/lib/cjs/tests/api_tests/formsort_header_auth.test.d.ts.map +1 -1
  121. package/lib/cjs/tests/api_tests/formsort_header_auth.test.js +179 -162
  122. package/lib/cjs/tests/api_tests/formsort_header_auth.test.js.map +1 -1
  123. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.d.ts +12 -6
  124. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.d.ts.map +1 -1
  125. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.js +98 -84
  126. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.js.map +1 -1
  127. package/lib/cjs/tests/api_tests/get_some_projection.test.d.ts +20 -5
  128. package/lib/cjs/tests/api_tests/get_some_projection.test.d.ts.map +1 -1
  129. package/lib/cjs/tests/api_tests/get_some_projection.test.js +342 -298
  130. package/lib/cjs/tests/api_tests/get_some_projection.test.js.map +1 -1
  131. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -5
  132. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -1
  133. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js +294 -223
  134. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -1
  135. package/lib/cjs/tests/api_tests/integrations_redacted.test.d.ts +6 -5
  136. package/lib/cjs/tests/api_tests/integrations_redacted.test.d.ts.map +1 -1
  137. package/lib/cjs/tests/api_tests/integrations_redacted.test.js +307 -213
  138. package/lib/cjs/tests/api_tests/integrations_redacted.test.js.map +1 -1
  139. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -5
  140. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -1
  141. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js +179 -178
  142. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -1
  143. package/lib/cjs/tests/api_tests/journey_statistics_cache.test.d.ts +26 -0
  144. package/lib/cjs/tests/api_tests/journey_statistics_cache.test.d.ts.map +1 -0
  145. package/lib/cjs/tests/api_tests/journey_statistics_cache.test.js +232 -0
  146. package/lib/cjs/tests/api_tests/journey_statistics_cache.test.js.map +1 -0
  147. package/lib/cjs/tests/api_tests/journey_step_manual_count.test.d.ts +34 -0
  148. package/lib/cjs/tests/api_tests/journey_step_manual_count.test.d.ts.map +1 -0
  149. package/lib/cjs/tests/api_tests/journey_step_manual_count.test.js +243 -0
  150. package/lib/cjs/tests/api_tests/journey_step_manual_count.test.js.map +1 -0
  151. package/lib/cjs/tests/api_tests/load_team_chat.test.d.ts.map +1 -1
  152. package/lib/cjs/tests/api_tests/load_team_chat.test.js +181 -124
  153. package/lib/cjs/tests/api_tests/load_team_chat.test.js.map +1 -1
  154. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.d.ts +24 -5
  155. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.d.ts.map +1 -1
  156. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.js +261 -227
  157. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.js.map +1 -1
  158. package/lib/cjs/tests/api_tests/load_threads_care_team.test.d.ts +9 -1
  159. package/lib/cjs/tests/api_tests/load_threads_care_team.test.d.ts.map +1 -1
  160. package/lib/cjs/tests/api_tests/load_threads_care_team.test.js +118 -32
  161. package/lib/cjs/tests/api_tests/load_threads_care_team.test.js.map +1 -1
  162. package/lib/cjs/tests/api_tests/managed_content_file_access.test.d.ts +15 -5
  163. package/lib/cjs/tests/api_tests/managed_content_file_access.test.d.ts.map +1 -1
  164. package/lib/cjs/tests/api_tests/managed_content_file_access.test.js +285 -311
  165. package/lib/cjs/tests/api_tests/managed_content_file_access.test.js.map +1 -1
  166. package/lib/cjs/tests/api_tests/mdb_sort.test.d.ts +20 -5
  167. package/lib/cjs/tests/api_tests/mdb_sort.test.d.ts.map +1 -1
  168. package/lib/cjs/tests/api_tests/mdb_sort.test.js +361 -305
  169. package/lib/cjs/tests/api_tests/mdb_sort.test.js.map +1 -1
  170. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.d.ts +27 -0
  171. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.d.ts.map +1 -0
  172. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.js +395 -0
  173. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.js.map +1 -0
  174. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -5
  175. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -1
  176. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js +259 -209
  177. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js.map +1 -1
  178. package/lib/cjs/tests/api_tests/mdi_webhooks.test.d.ts +12 -5
  179. package/lib/cjs/tests/api_tests/mdi_webhooks.test.d.ts.map +1 -1
  180. package/lib/cjs/tests/api_tests/mdi_webhooks.test.js +67 -61
  181. package/lib/cjs/tests/api_tests/mdi_webhooks.test.js.map +1 -1
  182. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.d.ts +23 -14
  183. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.d.ts.map +1 -1
  184. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.js +258 -306
  185. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.js.map +1 -1
  186. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.d.ts +6 -5
  187. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.d.ts.map +1 -1
  188. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.js +301 -238
  189. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.js.map +1 -1
  190. package/lib/cjs/tests/api_tests/organization_api_keys.test.d.ts.map +1 -1
  191. package/lib/cjs/tests/api_tests/organization_api_keys.test.js +226 -59
  192. package/lib/cjs/tests/api_tests/organization_api_keys.test.js.map +1 -1
  193. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts +19 -5
  194. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -1
  195. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js +335 -222
  196. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js.map +1 -1
  197. package/lib/cjs/tests/api_tests/organization_signup.test.d.ts +3 -1
  198. package/lib/cjs/tests/api_tests/organization_signup.test.d.ts.map +1 -1
  199. package/lib/cjs/tests/api_tests/organization_signup.test.js +221 -52
  200. package/lib/cjs/tests/api_tests/organization_signup.test.js.map +1 -1
  201. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.d.ts.map +1 -1
  202. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.js +109 -1
  203. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.js.map +1 -1
  204. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.d.ts +6 -6
  205. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.d.ts.map +1 -1
  206. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.js +309 -361
  207. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.js.map +1 -1
  208. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts +6 -5
  209. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
  210. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js +246 -165
  211. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
  212. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.d.ts +15 -5
  213. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.d.ts.map +1 -1
  214. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.js +130 -47
  215. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.js.map +1 -1
  216. package/lib/cjs/tests/api_tests/phone_embed_leave_message.test.d.ts +7 -0
  217. package/lib/cjs/tests/api_tests/phone_embed_leave_message.test.d.ts.map +1 -0
  218. package/lib/cjs/tests/api_tests/phone_embed_leave_message.test.js +571 -0
  219. package/lib/cjs/tests/api_tests/phone_embed_leave_message.test.js.map +1 -0
  220. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.d.ts +6 -5
  221. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.d.ts.map +1 -1
  222. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.js +180 -132
  223. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.js.map +1 -1
  224. package/lib/cjs/tests/api_tests/programs.test.d.ts +3 -1
  225. package/lib/cjs/tests/api_tests/programs.test.d.ts.map +1 -1
  226. package/lib/cjs/tests/api_tests/programs.test.js +474 -51
  227. package/lib/cjs/tests/api_tests/programs.test.js.map +1 -1
  228. package/lib/cjs/tests/api_tests/public_form_case_insensitive_match.test.d.ts +7 -0
  229. package/lib/cjs/tests/api_tests/public_form_case_insensitive_match.test.d.ts.map +1 -0
  230. package/lib/cjs/tests/api_tests/public_form_case_insensitive_match.test.js +733 -0
  231. package/lib/cjs/tests/api_tests/public_form_case_insensitive_match.test.js.map +1 -0
  232. package/lib/cjs/tests/api_tests/security/add-to-journey-foreign-enduserid.test.d.ts +3 -1
  233. package/lib/cjs/tests/api_tests/security/add-to-journey-foreign-enduserid.test.d.ts.map +1 -1
  234. package/lib/cjs/tests/api_tests/security/add-to-journey-foreign-enduserid.test.js +3 -1
  235. package/lib/cjs/tests/api_tests/security/add-to-journey-foreign-enduserid.test.js.map +1 -1
  236. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.d.ts +10 -5
  237. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.d.ts.map +1 -1
  238. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.js +401 -282
  239. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.js.map +1 -1
  240. package/lib/cjs/tests/api_tests/security/appointment-reschedule-ownership.test.d.ts +3 -1
  241. package/lib/cjs/tests/api_tests/security/appointment-reschedule-ownership.test.d.ts.map +1 -1
  242. package/lib/cjs/tests/api_tests/security/appointment-reschedule-ownership.test.js +3 -1
  243. package/lib/cjs/tests/api_tests/security/appointment-reschedule-ownership.test.js.map +1 -1
  244. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.d.ts +9 -5
  245. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.d.ts.map +1 -1
  246. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.js +228 -211
  247. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.js.map +1 -1
  248. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts +13 -8
  249. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts.map +1 -1
  250. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.js +270 -254
  251. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.js.map +1 -1
  252. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts +16 -6
  253. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts.map +1 -1
  254. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js +167 -142
  255. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js.map +1 -1
  256. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts +10 -5
  257. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts.map +1 -1
  258. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.js +296 -221
  259. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.js.map +1 -1
  260. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts +12 -5
  261. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
  262. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js +221 -216
  263. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js.map +1 -1
  264. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts +11 -5
  265. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts.map +1 -1
  266. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js +300 -203
  267. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js.map +1 -1
  268. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.d.ts +11 -5
  269. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.d.ts.map +1 -1
  270. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.js +415 -275
  271. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.js.map +1 -1
  272. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.d.ts +11 -5
  273. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.d.ts.map +1 -1
  274. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.js +347 -228
  275. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.js.map +1 -1
  276. package/lib/cjs/tests/api_tests/security/file-link-session-confinement.test.d.ts +3 -1
  277. package/lib/cjs/tests/api_tests/security/file-link-session-confinement.test.d.ts.map +1 -1
  278. package/lib/cjs/tests/api_tests/security/file-link-session-confinement.test.js +3 -1
  279. package/lib/cjs/tests/api_tests/security/file-link-session-confinement.test.js.map +1 -1
  280. package/lib/cjs/tests/api_tests/security/form-logic-js-execution.test.d.ts +3 -1
  281. package/lib/cjs/tests/api_tests/security/form-logic-js-execution.test.d.ts.map +1 -1
  282. package/lib/cjs/tests/api_tests/security/form-logic-js-execution.test.js +3 -1
  283. package/lib/cjs/tests/api_tests/security/form-logic-js-execution.test.js.map +1 -1
  284. package/lib/cjs/tests/api_tests/security/formsort_webhook_auth_field_lock.test.d.ts.map +1 -1
  285. package/lib/cjs/tests/api_tests/security/formsort_webhook_auth_field_lock.test.js +424 -39
  286. package/lib/cjs/tests/api_tests/security/formsort_webhook_auth_field_lock.test.js.map +1 -1
  287. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts +18 -7
  288. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts.map +1 -1
  289. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.js +164 -75
  290. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.js.map +1 -1
  291. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts +15 -9
  292. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts.map +1 -1
  293. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js +99 -102
  294. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js.map +1 -1
  295. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.d.ts +11 -5
  296. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.d.ts.map +1 -1
  297. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.js +132 -89
  298. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.js.map +1 -1
  299. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts +12 -5
  300. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts.map +1 -1
  301. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.js +190 -138
  302. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.js.map +1 -1
  303. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts +18 -16
  304. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -1
  305. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js +164 -124
  306. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js.map +1 -1
  307. package/lib/cjs/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.d.ts +3 -1
  308. package/lib/cjs/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.d.ts.map +1 -1
  309. package/lib/cjs/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.js +3 -1
  310. package/lib/cjs/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.js.map +1 -1
  311. package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.d.ts.map +1 -1
  312. package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.js +122 -2
  313. package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.js.map +1 -1
  314. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts +11 -5
  315. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts.map +1 -1
  316. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.js +288 -274
  317. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.js.map +1 -1
  318. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.d.ts +17 -10
  319. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.d.ts.map +1 -1
  320. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.js +173 -138
  321. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.js.map +1 -1
  322. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts +6 -5
  323. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts.map +1 -1
  324. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js +310 -265
  325. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js.map +1 -1
  326. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.d.ts +9 -5
  327. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.d.ts.map +1 -1
  328. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.js +108 -83
  329. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.js.map +1 -1
  330. package/lib/cjs/tests/api_tests/session_for_join_link.test.d.ts +10 -0
  331. package/lib/cjs/tests/api_tests/session_for_join_link.test.d.ts.map +1 -0
  332. package/lib/cjs/tests/api_tests/session_for_join_link.test.js +147 -0
  333. package/lib/cjs/tests/api_tests/session_for_join_link.test.js.map +1 -0
  334. package/lib/cjs/tests/api_tests/set_fields_order_templates.test.d.ts.map +1 -1
  335. package/lib/cjs/tests/api_tests/set_fields_order_templates.test.js +191 -88
  336. package/lib/cjs/tests/api_tests/set_fields_order_templates.test.js.map +1 -1
  337. package/lib/cjs/tests/api_tests/stedi_approval.test.d.ts +6 -5
  338. package/lib/cjs/tests/api_tests/stedi_approval.test.d.ts.map +1 -1
  339. package/lib/cjs/tests/api_tests/stedi_approval.test.js +206 -137
  340. package/lib/cjs/tests/api_tests/stedi_approval.test.js.map +1 -1
  341. package/lib/cjs/tests/api_tests/stripe_checkout_items.test.d.ts +17 -0
  342. package/lib/cjs/tests/api_tests/stripe_checkout_items.test.d.ts.map +1 -0
  343. package/lib/cjs/tests/api_tests/stripe_checkout_items.test.js +219 -0
  344. package/lib/cjs/tests/api_tests/stripe_checkout_items.test.js.map +1 -0
  345. package/lib/cjs/tests/api_tests/stripe_multiple_customer_ids.test.d.ts +5 -0
  346. package/lib/cjs/tests/api_tests/stripe_multiple_customer_ids.test.d.ts.map +1 -0
  347. package/lib/cjs/tests/api_tests/stripe_multiple_customer_ids.test.js +396 -0
  348. package/lib/cjs/tests/api_tests/stripe_multiple_customer_ids.test.js.map +1 -0
  349. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.d.ts +7 -0
  350. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.d.ts.map +1 -0
  351. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.js +344 -0
  352. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.js.map +1 -0
  353. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts +6 -5
  354. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts.map +1 -1
  355. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.js +165 -149
  356. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.js.map +1 -1
  357. package/lib/cjs/tests/api_tests/tickets_bulk_assign_from_queue.test.d.ts +3 -1
  358. package/lib/cjs/tests/api_tests/tickets_bulk_assign_from_queue.test.d.ts.map +1 -1
  359. package/lib/cjs/tests/api_tests/tickets_bulk_assign_from_queue.test.js +3 -1
  360. package/lib/cjs/tests/api_tests/tickets_bulk_assign_from_queue.test.js.map +1 -1
  361. package/lib/cjs/tests/api_tests/totp_mfa.test.d.ts.map +1 -1
  362. package/lib/cjs/tests/api_tests/totp_mfa.test.js +37 -31
  363. package/lib/cjs/tests/api_tests/totp_mfa.test.js.map +1 -1
  364. package/lib/cjs/tests/api_tests/translations.test.d.ts +6 -5
  365. package/lib/cjs/tests/api_tests/translations.test.d.ts.map +1 -1
  366. package/lib/cjs/tests/api_tests/translations.test.js +104 -75
  367. package/lib/cjs/tests/api_tests/translations.test.js.map +1 -1
  368. package/lib/cjs/tests/api_tests/trigger_contains_matching.test.d.ts +3 -1
  369. package/lib/cjs/tests/api_tests/trigger_contains_matching.test.d.ts.map +1 -1
  370. package/lib/cjs/tests/api_tests/trigger_contains_matching.test.js +3 -1
  371. package/lib/cjs/tests/api_tests/trigger_contains_matching.test.js.map +1 -1
  372. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.d.ts +21 -4
  373. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.d.ts.map +1 -1
  374. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.js +238 -370
  375. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.js.map +1 -1
  376. package/lib/cjs/tests/api_tests/user_logs_restore_deleted.test.d.ts +3 -1
  377. package/lib/cjs/tests/api_tests/user_logs_restore_deleted.test.d.ts.map +1 -1
  378. package/lib/cjs/tests/api_tests/user_logs_restore_deleted.test.js +3 -1
  379. package/lib/cjs/tests/api_tests/user_logs_restore_deleted.test.js.map +1 -1
  380. package/lib/cjs/tests/api_tests/user_preferences.test.d.ts +30 -0
  381. package/lib/cjs/tests/api_tests/user_preferences.test.d.ts.map +1 -0
  382. package/lib/cjs/tests/api_tests/user_preferences.test.js +279 -0
  383. package/lib/cjs/tests/api_tests/user_preferences.test.js.map +1 -0
  384. package/lib/cjs/tests/api_tests/vital_review_trigger_action.test.d.ts +3 -1
  385. package/lib/cjs/tests/api_tests/vital_review_trigger_action.test.d.ts.map +1 -1
  386. package/lib/cjs/tests/api_tests/vital_review_trigger_action.test.js +3 -1
  387. package/lib/cjs/tests/api_tests/vital_review_trigger_action.test.js.map +1 -1
  388. package/lib/cjs/tests/api_tests/vitl_push.test.d.ts +7 -0
  389. package/lib/cjs/tests/api_tests/vitl_push.test.d.ts.map +1 -0
  390. package/lib/cjs/tests/api_tests/vitl_push.test.js +341 -0
  391. package/lib/cjs/tests/api_tests/vitl_push.test.js.map +1 -0
  392. package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts +17 -5
  393. package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -1
  394. package/lib/cjs/tests/api_tests/webhook_error_handling.test.js +204 -195
  395. package/lib/cjs/tests/api_tests/webhook_error_handling.test.js.map +1 -1
  396. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.d.ts +15 -5
  397. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.d.ts.map +1 -1
  398. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.js +154 -179
  399. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.js.map +1 -1
  400. package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts +6 -5
  401. package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
  402. package/lib/cjs/tests/api_tests/welle_partner_token.test.js +393 -251
  403. package/lib/cjs/tests/api_tests/welle_partner_token.test.js.map +1 -1
  404. package/lib/cjs/tests/setup_isolated.d.ts +55 -0
  405. package/lib/cjs/tests/setup_isolated.d.ts.map +1 -1
  406. package/lib/cjs/tests/setup_isolated.js +119 -1
  407. package/lib/cjs/tests/setup_isolated.js.map +1 -1
  408. package/lib/cjs/tests/tests.d.ts.map +1 -1
  409. package/lib/cjs/tests/tests.js +385 -535
  410. package/lib/cjs/tests/tests.js.map +1 -1
  411. package/lib/cjs/tests/unit_tests/date_string_validation.test.d.ts +2 -0
  412. package/lib/cjs/tests/unit_tests/date_string_validation.test.d.ts.map +1 -0
  413. package/lib/cjs/tests/unit_tests/date_string_validation.test.js +112 -0
  414. package/lib/cjs/tests/unit_tests/date_string_validation.test.js.map +1 -0
  415. package/lib/cjs/tests/unit_tests/isolated_suite_discovery.test.d.ts +2 -0
  416. package/lib/cjs/tests/unit_tests/isolated_suite_discovery.test.d.ts.map +1 -0
  417. package/lib/cjs/tests/unit_tests/isolated_suite_discovery.test.js +201 -0
  418. package/lib/cjs/tests/unit_tests/isolated_suite_discovery.test.js.map +1 -0
  419. package/lib/cjs/tests/unit_tests/programs_conditional_logic.test.d.ts +3 -0
  420. package/lib/cjs/tests/unit_tests/programs_conditional_logic.test.d.ts.map +1 -0
  421. package/lib/cjs/tests/unit_tests/programs_conditional_logic.test.js +120 -0
  422. package/lib/cjs/tests/unit_tests/programs_conditional_logic.test.js.map +1 -0
  423. package/lib/cjs/tests/webhooks_tests.js +44 -34
  424. package/lib/cjs/tests/webhooks_tests.js.map +1 -1
  425. package/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  426. package/lib/esm/sdk.d.ts +375 -4
  427. package/lib/esm/sdk.d.ts.map +1 -1
  428. package/lib/esm/sdk.js +5 -0
  429. package/lib/esm/sdk.js.map +1 -1
  430. package/lib/esm/tests/api_tests/ai_conversations.test.d.ts +14 -5
  431. package/lib/esm/tests/api_tests/ai_conversations.test.d.ts.map +1 -1
  432. package/lib/esm/tests/api_tests/ai_conversations.test.js +161 -148
  433. package/lib/esm/tests/api_tests/ai_conversations.test.js.map +1 -1
  434. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.d.ts +22 -0
  435. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.d.ts.map +1 -0
  436. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.js +510 -0
  437. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.js.map +1 -0
  438. package/lib/esm/tests/api_tests/appointment_link_expiration.test.d.ts +6 -5
  439. package/lib/esm/tests/api_tests/appointment_link_expiration.test.d.ts.map +1 -1
  440. package/lib/esm/tests/api_tests/appointment_link_expiration.test.js +132 -71
  441. package/lib/esm/tests/api_tests/appointment_link_expiration.test.js.map +1 -1
  442. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.d.ts +6 -5
  443. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.d.ts.map +1 -1
  444. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.js +238 -173
  445. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.js.map +1 -1
  446. package/lib/esm/tests/api_tests/availability_block_buffer.test.d.ts +22 -0
  447. package/lib/esm/tests/api_tests/availability_block_buffer.test.d.ts.map +1 -0
  448. package/lib/esm/tests/api_tests/availability_block_buffer.test.js +306 -0
  449. package/lib/esm/tests/api_tests/availability_block_buffer.test.js.map +1 -0
  450. package/lib/esm/tests/api_tests/beluga_manual_sync.test.d.ts +6 -5
  451. package/lib/esm/tests/api_tests/beluga_manual_sync.test.d.ts.map +1 -1
  452. package/lib/esm/tests/api_tests/beluga_manual_sync.test.js +232 -190
  453. package/lib/esm/tests/api_tests/beluga_manual_sync.test.js.map +1 -1
  454. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.d.ts +6 -5
  455. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.d.ts.map +1 -1
  456. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.js +348 -262
  457. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.js.map +1 -1
  458. package/lib/esm/tests/api_tests/booking_prevent_upcoming_duplicate.test.d.ts +22 -0
  459. package/lib/esm/tests/api_tests/booking_prevent_upcoming_duplicate.test.d.ts.map +1 -0
  460. package/lib/esm/tests/api_tests/booking_prevent_upcoming_duplicate.test.js +501 -0
  461. package/lib/esm/tests/api_tests/booking_prevent_upcoming_duplicate.test.js.map +1 -0
  462. package/lib/esm/tests/api_tests/bulk_assignment.test.d.ts +16 -5
  463. package/lib/esm/tests/api_tests/bulk_assignment.test.d.ts.map +1 -1
  464. package/lib/esm/tests/api_tests/bulk_assignment.test.js +333 -241
  465. package/lib/esm/tests/api_tests/bulk_assignment.test.js.map +1 -1
  466. package/lib/esm/tests/api_tests/calendar_event_references_update.test.d.ts +13 -5
  467. package/lib/esm/tests/api_tests/calendar_event_references_update.test.d.ts.map +1 -1
  468. package/lib/esm/tests/api_tests/calendar_event_references_update.test.js +129 -107
  469. package/lib/esm/tests/api_tests/calendar_event_references_update.test.js.map +1 -1
  470. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.d.ts +15 -5
  471. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.d.ts.map +1 -1
  472. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.js +238 -251
  473. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.js.map +1 -1
  474. package/lib/esm/tests/api_tests/chats_analytics.test.d.ts +14 -5
  475. package/lib/esm/tests/api_tests/chats_analytics.test.d.ts.map +1 -1
  476. package/lib/esm/tests/api_tests/chats_analytics.test.js +188 -188
  477. package/lib/esm/tests/api_tests/chats_analytics.test.js.map +1 -1
  478. package/lib/esm/tests/api_tests/concurrent_build_threads.test.d.ts +23 -5
  479. package/lib/esm/tests/api_tests/concurrent_build_threads.test.d.ts.map +1 -1
  480. package/lib/esm/tests/api_tests/concurrent_build_threads.test.js +119 -117
  481. package/lib/esm/tests/api_tests/concurrent_build_threads.test.js.map +1 -1
  482. package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts +21 -5
  483. package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts.map +1 -1
  484. package/lib/esm/tests/api_tests/configurations_public_read.test.js +233 -118
  485. package/lib/esm/tests/api_tests/configurations_public_read.test.js.map +1 -1
  486. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts +7 -0
  487. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts.map +1 -0
  488. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.js +351 -0
  489. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.js.map +1 -0
  490. package/lib/esm/tests/api_tests/create_note_action.test.d.ts +18 -5
  491. package/lib/esm/tests/api_tests/create_note_action.test.d.ts.map +1 -1
  492. package/lib/esm/tests/api_tests/create_note_action.test.js +216 -172
  493. package/lib/esm/tests/api_tests/create_note_action.test.js.map +1 -1
  494. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.d.ts +17 -4
  495. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.d.ts.map +1 -1
  496. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.js +141 -203
  497. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.js.map +1 -1
  498. package/lib/esm/tests/api_tests/custom_aggregation.test.d.ts +15 -5
  499. package/lib/esm/tests/api_tests/custom_aggregation.test.d.ts.map +1 -1
  500. package/lib/esm/tests/api_tests/custom_aggregation.test.js +282 -222
  501. package/lib/esm/tests/api_tests/custom_aggregation.test.js.map +1 -1
  502. package/lib/esm/tests/api_tests/database_cascade_delete.test.d.ts +13 -5
  503. package/lib/esm/tests/api_tests/database_cascade_delete.test.d.ts.map +1 -1
  504. package/lib/esm/tests/api_tests/database_cascade_delete.test.js +216 -241
  505. package/lib/esm/tests/api_tests/database_cascade_delete.test.js.map +1 -1
  506. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +21 -5
  507. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -1
  508. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js +165 -110
  509. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -1
  510. package/lib/esm/tests/api_tests/elation_user_id.test.d.ts +17 -5
  511. package/lib/esm/tests/api_tests/elation_user_id.test.d.ts.map +1 -1
  512. package/lib/esm/tests/api_tests/elation_user_id.test.js +119 -53
  513. package/lib/esm/tests/api_tests/elation_user_id.test.js.map +1 -1
  514. package/lib/esm/tests/api_tests/enduser_fields_sync.test.d.ts +3 -1
  515. package/lib/esm/tests/api_tests/enduser_fields_sync.test.d.ts.map +1 -1
  516. package/lib/esm/tests/api_tests/enduser_fields_sync.test.js +2 -0
  517. package/lib/esm/tests/api_tests/enduser_fields_sync.test.js.map +1 -1
  518. package/lib/esm/tests/api_tests/enduser_observations_auto_review.test.d.ts +3 -1
  519. package/lib/esm/tests/api_tests/enduser_observations_auto_review.test.d.ts.map +1 -1
  520. package/lib/esm/tests/api_tests/enduser_observations_auto_review.test.js +2 -0
  521. package/lib/esm/tests/api_tests/enduser_observations_auto_review.test.js.map +1 -1
  522. package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts +6 -5
  523. package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -1
  524. package/lib/esm/tests/api_tests/file_download_unicode_names.test.js +190 -141
  525. package/lib/esm/tests/api_tests/file_download_unicode_names.test.js.map +1 -1
  526. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.d.ts +7 -0
  527. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.d.ts.map +1 -0
  528. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.js +527 -0
  529. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.js.map +1 -0
  530. package/lib/esm/tests/api_tests/form_submitted_trigger.test.d.ts +25 -5
  531. package/lib/esm/tests/api_tests/form_submitted_trigger.test.d.ts.map +1 -1
  532. package/lib/esm/tests/api_tests/form_submitted_trigger.test.js +393 -365
  533. package/lib/esm/tests/api_tests/form_submitted_trigger.test.js.map +1 -1
  534. package/lib/esm/tests/api_tests/form_translations.test.d.ts +6 -5
  535. package/lib/esm/tests/api_tests/form_translations.test.d.ts.map +1 -1
  536. package/lib/esm/tests/api_tests/form_translations.test.js +268 -189
  537. package/lib/esm/tests/api_tests/form_translations.test.js.map +1 -1
  538. package/lib/esm/tests/api_tests/form_vital_reading.test.d.ts +7 -0
  539. package/lib/esm/tests/api_tests/form_vital_reading.test.d.ts.map +1 -0
  540. package/lib/esm/tests/api_tests/form_vital_reading.test.js +456 -0
  541. package/lib/esm/tests/api_tests/form_vital_reading.test.js.map +1 -0
  542. package/lib/esm/tests/api_tests/formsort_header_auth.test.d.ts +29 -5
  543. package/lib/esm/tests/api_tests/formsort_header_auth.test.d.ts.map +1 -1
  544. package/lib/esm/tests/api_tests/formsort_header_auth.test.js +177 -161
  545. package/lib/esm/tests/api_tests/formsort_header_auth.test.js.map +1 -1
  546. package/lib/esm/tests/api_tests/gcal_sync_retry.test.d.ts +12 -6
  547. package/lib/esm/tests/api_tests/gcal_sync_retry.test.d.ts.map +1 -1
  548. package/lib/esm/tests/api_tests/gcal_sync_retry.test.js +96 -83
  549. package/lib/esm/tests/api_tests/gcal_sync_retry.test.js.map +1 -1
  550. package/lib/esm/tests/api_tests/get_some_projection.test.d.ts +20 -5
  551. package/lib/esm/tests/api_tests/get_some_projection.test.d.ts.map +1 -1
  552. package/lib/esm/tests/api_tests/get_some_projection.test.js +339 -296
  553. package/lib/esm/tests/api_tests/get_some_projection.test.js.map +1 -1
  554. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -5
  555. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -1
  556. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js +292 -222
  557. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -1
  558. package/lib/esm/tests/api_tests/integrations_redacted.test.d.ts +6 -5
  559. package/lib/esm/tests/api_tests/integrations_redacted.test.d.ts.map +1 -1
  560. package/lib/esm/tests/api_tests/integrations_redacted.test.js +304 -211
  561. package/lib/esm/tests/api_tests/integrations_redacted.test.js.map +1 -1
  562. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -5
  563. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -1
  564. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js +177 -154
  565. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -1
  566. package/lib/esm/tests/api_tests/journey_statistics_cache.test.d.ts +26 -0
  567. package/lib/esm/tests/api_tests/journey_statistics_cache.test.d.ts.map +1 -0
  568. package/lib/esm/tests/api_tests/journey_statistics_cache.test.js +227 -0
  569. package/lib/esm/tests/api_tests/journey_statistics_cache.test.js.map +1 -0
  570. package/lib/esm/tests/api_tests/journey_step_manual_count.test.d.ts +34 -0
  571. package/lib/esm/tests/api_tests/journey_step_manual_count.test.d.ts.map +1 -0
  572. package/lib/esm/tests/api_tests/journey_step_manual_count.test.js +238 -0
  573. package/lib/esm/tests/api_tests/journey_step_manual_count.test.js.map +1 -0
  574. package/lib/esm/tests/api_tests/load_team_chat.test.d.ts.map +1 -1
  575. package/lib/esm/tests/api_tests/load_team_chat.test.js +181 -124
  576. package/lib/esm/tests/api_tests/load_team_chat.test.js.map +1 -1
  577. package/lib/esm/tests/api_tests/load_threads_autobuild.test.d.ts +24 -5
  578. package/lib/esm/tests/api_tests/load_threads_autobuild.test.d.ts.map +1 -1
  579. package/lib/esm/tests/api_tests/load_threads_autobuild.test.js +259 -226
  580. package/lib/esm/tests/api_tests/load_threads_autobuild.test.js.map +1 -1
  581. package/lib/esm/tests/api_tests/load_threads_care_team.test.d.ts +9 -1
  582. package/lib/esm/tests/api_tests/load_threads_care_team.test.d.ts.map +1 -1
  583. package/lib/esm/tests/api_tests/load_threads_care_team.test.js +117 -31
  584. package/lib/esm/tests/api_tests/load_threads_care_team.test.js.map +1 -1
  585. package/lib/esm/tests/api_tests/managed_content_file_access.test.d.ts +15 -5
  586. package/lib/esm/tests/api_tests/managed_content_file_access.test.d.ts.map +1 -1
  587. package/lib/esm/tests/api_tests/managed_content_file_access.test.js +283 -287
  588. package/lib/esm/tests/api_tests/managed_content_file_access.test.js.map +1 -1
  589. package/lib/esm/tests/api_tests/mdb_sort.test.d.ts +20 -5
  590. package/lib/esm/tests/api_tests/mdb_sort.test.d.ts.map +1 -1
  591. package/lib/esm/tests/api_tests/mdb_sort.test.js +358 -303
  592. package/lib/esm/tests/api_tests/mdb_sort.test.js.map +1 -1
  593. package/lib/esm/tests/api_tests/mdi_manual_sync.test.d.ts +27 -0
  594. package/lib/esm/tests/api_tests/mdi_manual_sync.test.d.ts.map +1 -0
  595. package/lib/esm/tests/api_tests/mdi_manual_sync.test.js +390 -0
  596. package/lib/esm/tests/api_tests/mdi_manual_sync.test.js.map +1 -0
  597. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -5
  598. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -1
  599. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js +257 -208
  600. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js.map +1 -1
  601. package/lib/esm/tests/api_tests/mdi_webhooks.test.d.ts +12 -5
  602. package/lib/esm/tests/api_tests/mdi_webhooks.test.d.ts.map +1 -1
  603. package/lib/esm/tests/api_tests/mdi_webhooks.test.js +65 -60
  604. package/lib/esm/tests/api_tests/mdi_webhooks.test.js.map +1 -1
  605. package/lib/esm/tests/api_tests/message_assignment_trigger.test.d.ts +23 -14
  606. package/lib/esm/tests/api_tests/message_assignment_trigger.test.d.ts.map +1 -1
  607. package/lib/esm/tests/api_tests/message_assignment_trigger.test.js +256 -305
  608. package/lib/esm/tests/api_tests/message_assignment_trigger.test.js.map +1 -1
  609. package/lib/esm/tests/api_tests/metriport_push_form_response.test.d.ts +6 -5
  610. package/lib/esm/tests/api_tests/metriport_push_form_response.test.d.ts.map +1 -1
  611. package/lib/esm/tests/api_tests/metriport_push_form_response.test.js +298 -236
  612. package/lib/esm/tests/api_tests/metriport_push_form_response.test.js.map +1 -1
  613. package/lib/esm/tests/api_tests/organization_api_keys.test.d.ts.map +1 -1
  614. package/lib/esm/tests/api_tests/organization_api_keys.test.js +226 -59
  615. package/lib/esm/tests/api_tests/organization_api_keys.test.js.map +1 -1
  616. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts +19 -5
  617. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -1
  618. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js +332 -220
  619. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js.map +1 -1
  620. package/lib/esm/tests/api_tests/organization_signup.test.d.ts +3 -1
  621. package/lib/esm/tests/api_tests/organization_signup.test.d.ts.map +1 -1
  622. package/lib/esm/tests/api_tests/organization_signup.test.js +220 -51
  623. package/lib/esm/tests/api_tests/organization_signup.test.js.map +1 -1
  624. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.d.ts.map +1 -1
  625. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.js +109 -1
  626. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.js.map +1 -1
  627. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.d.ts +6 -6
  628. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.d.ts.map +1 -1
  629. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.js +308 -361
  630. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.js.map +1 -1
  631. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts +6 -5
  632. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
  633. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js +243 -163
  634. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
  635. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.d.ts +15 -5
  636. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.d.ts.map +1 -1
  637. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.js +127 -45
  638. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.js.map +1 -1
  639. package/lib/esm/tests/api_tests/phone_embed_leave_message.test.d.ts +7 -0
  640. package/lib/esm/tests/api_tests/phone_embed_leave_message.test.d.ts.map +1 -0
  641. package/lib/esm/tests/api_tests/phone_embed_leave_message.test.js +566 -0
  642. package/lib/esm/tests/api_tests/phone_embed_leave_message.test.js.map +1 -0
  643. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.d.ts +6 -5
  644. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.d.ts.map +1 -1
  645. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.js +177 -130
  646. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.js.map +1 -1
  647. package/lib/esm/tests/api_tests/programs.test.d.ts +3 -1
  648. package/lib/esm/tests/api_tests/programs.test.d.ts.map +1 -1
  649. package/lib/esm/tests/api_tests/programs.test.js +473 -50
  650. package/lib/esm/tests/api_tests/programs.test.js.map +1 -1
  651. package/lib/esm/tests/api_tests/public_form_case_insensitive_match.test.d.ts +7 -0
  652. package/lib/esm/tests/api_tests/public_form_case_insensitive_match.test.d.ts.map +1 -0
  653. package/lib/esm/tests/api_tests/public_form_case_insensitive_match.test.js +728 -0
  654. package/lib/esm/tests/api_tests/public_form_case_insensitive_match.test.js.map +1 -0
  655. package/lib/esm/tests/api_tests/security/add-to-journey-foreign-enduserid.test.d.ts +3 -1
  656. package/lib/esm/tests/api_tests/security/add-to-journey-foreign-enduserid.test.d.ts.map +1 -1
  657. package/lib/esm/tests/api_tests/security/add-to-journey-foreign-enduserid.test.js +2 -0
  658. package/lib/esm/tests/api_tests/security/add-to-journey-foreign-enduserid.test.js.map +1 -1
  659. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.d.ts +10 -5
  660. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.d.ts.map +1 -1
  661. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.js +399 -281
  662. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.js.map +1 -1
  663. package/lib/esm/tests/api_tests/security/appointment-reschedule-ownership.test.d.ts +3 -1
  664. package/lib/esm/tests/api_tests/security/appointment-reschedule-ownership.test.d.ts.map +1 -1
  665. package/lib/esm/tests/api_tests/security/appointment-reschedule-ownership.test.js +2 -0
  666. package/lib/esm/tests/api_tests/security/appointment-reschedule-ownership.test.js.map +1 -1
  667. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.d.ts +9 -5
  668. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.d.ts.map +1 -1
  669. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.js +225 -209
  670. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.js.map +1 -1
  671. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts +13 -8
  672. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts.map +1 -1
  673. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.js +268 -253
  674. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.js.map +1 -1
  675. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts +16 -6
  676. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts.map +1 -1
  677. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js +165 -141
  678. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js.map +1 -1
  679. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts +10 -5
  680. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts.map +1 -1
  681. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.js +294 -220
  682. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.js.map +1 -1
  683. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts +12 -5
  684. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
  685. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js +219 -215
  686. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js.map +1 -1
  687. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts +11 -5
  688. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts.map +1 -1
  689. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js +298 -202
  690. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js.map +1 -1
  691. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.d.ts +11 -5
  692. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.d.ts.map +1 -1
  693. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.js +413 -274
  694. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.js.map +1 -1
  695. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.d.ts +11 -5
  696. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.d.ts.map +1 -1
  697. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.js +345 -227
  698. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.js.map +1 -1
  699. package/lib/esm/tests/api_tests/security/file-link-session-confinement.test.d.ts +3 -1
  700. package/lib/esm/tests/api_tests/security/file-link-session-confinement.test.d.ts.map +1 -1
  701. package/lib/esm/tests/api_tests/security/file-link-session-confinement.test.js +2 -0
  702. package/lib/esm/tests/api_tests/security/file-link-session-confinement.test.js.map +1 -1
  703. package/lib/esm/tests/api_tests/security/form-logic-js-execution.test.d.ts +3 -1
  704. package/lib/esm/tests/api_tests/security/form-logic-js-execution.test.d.ts.map +1 -1
  705. package/lib/esm/tests/api_tests/security/form-logic-js-execution.test.js +2 -0
  706. package/lib/esm/tests/api_tests/security/form-logic-js-execution.test.js.map +1 -1
  707. package/lib/esm/tests/api_tests/security/formsort_webhook_auth_field_lock.test.d.ts.map +1 -1
  708. package/lib/esm/tests/api_tests/security/formsort_webhook_auth_field_lock.test.js +424 -39
  709. package/lib/esm/tests/api_tests/security/formsort_webhook_auth_field_lock.test.js.map +1 -1
  710. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts +18 -7
  711. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts.map +1 -1
  712. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.js +162 -74
  713. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.js.map +1 -1
  714. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts +15 -9
  715. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts.map +1 -1
  716. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js +96 -100
  717. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js.map +1 -1
  718. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.d.ts +11 -5
  719. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.d.ts.map +1 -1
  720. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.js +129 -87
  721. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.js.map +1 -1
  722. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts +12 -5
  723. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts.map +1 -1
  724. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.js +187 -136
  725. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.js.map +1 -1
  726. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts +18 -16
  727. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -1
  728. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js +162 -123
  729. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js.map +1 -1
  730. package/lib/esm/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.d.ts +3 -1
  731. package/lib/esm/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.d.ts.map +1 -1
  732. package/lib/esm/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.js +2 -0
  733. package/lib/esm/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.js.map +1 -1
  734. package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.d.ts.map +1 -1
  735. package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.js +122 -2
  736. package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.js.map +1 -1
  737. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts +11 -5
  738. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts.map +1 -1
  739. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.js +285 -272
  740. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.js.map +1 -1
  741. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.d.ts +17 -10
  742. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.d.ts.map +1 -1
  743. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.js +171 -137
  744. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.js.map +1 -1
  745. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts +6 -5
  746. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts.map +1 -1
  747. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js +307 -263
  748. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js.map +1 -1
  749. package/lib/esm/tests/api_tests/security/webhook-timeout.test.d.ts +9 -5
  750. package/lib/esm/tests/api_tests/security/webhook-timeout.test.d.ts.map +1 -1
  751. package/lib/esm/tests/api_tests/security/webhook-timeout.test.js +105 -81
  752. package/lib/esm/tests/api_tests/security/webhook-timeout.test.js.map +1 -1
  753. package/lib/esm/tests/api_tests/session_for_join_link.test.d.ts +10 -0
  754. package/lib/esm/tests/api_tests/session_for_join_link.test.d.ts.map +1 -0
  755. package/lib/esm/tests/api_tests/session_for_join_link.test.js +142 -0
  756. package/lib/esm/tests/api_tests/session_for_join_link.test.js.map +1 -0
  757. package/lib/esm/tests/api_tests/set_fields_order_templates.test.d.ts.map +1 -1
  758. package/lib/esm/tests/api_tests/set_fields_order_templates.test.js +191 -88
  759. package/lib/esm/tests/api_tests/set_fields_order_templates.test.js.map +1 -1
  760. package/lib/esm/tests/api_tests/stedi_approval.test.d.ts +6 -5
  761. package/lib/esm/tests/api_tests/stedi_approval.test.d.ts.map +1 -1
  762. package/lib/esm/tests/api_tests/stedi_approval.test.js +204 -136
  763. package/lib/esm/tests/api_tests/stedi_approval.test.js.map +1 -1
  764. package/lib/esm/tests/api_tests/stripe_checkout_items.test.d.ts +17 -0
  765. package/lib/esm/tests/api_tests/stripe_checkout_items.test.d.ts.map +1 -0
  766. package/lib/esm/tests/api_tests/stripe_checkout_items.test.js +214 -0
  767. package/lib/esm/tests/api_tests/stripe_checkout_items.test.js.map +1 -0
  768. package/lib/esm/tests/api_tests/stripe_multiple_customer_ids.test.d.ts +5 -0
  769. package/lib/esm/tests/api_tests/stripe_multiple_customer_ids.test.d.ts.map +1 -0
  770. package/lib/esm/tests/api_tests/stripe_multiple_customer_ids.test.js +388 -0
  771. package/lib/esm/tests/api_tests/stripe_multiple_customer_ids.test.js.map +1 -0
  772. package/lib/esm/tests/api_tests/ticket_stage_archive.test.d.ts +7 -0
  773. package/lib/esm/tests/api_tests/ticket_stage_archive.test.d.ts.map +1 -0
  774. package/lib/esm/tests/api_tests/ticket_stage_archive.test.js +339 -0
  775. package/lib/esm/tests/api_tests/ticket_stage_archive.test.js.map +1 -0
  776. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts +6 -5
  777. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts.map +1 -1
  778. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.js +162 -147
  779. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.js.map +1 -1
  780. package/lib/esm/tests/api_tests/tickets_bulk_assign_from_queue.test.d.ts +3 -1
  781. package/lib/esm/tests/api_tests/tickets_bulk_assign_from_queue.test.d.ts.map +1 -1
  782. package/lib/esm/tests/api_tests/tickets_bulk_assign_from_queue.test.js +2 -0
  783. package/lib/esm/tests/api_tests/tickets_bulk_assign_from_queue.test.js.map +1 -1
  784. package/lib/esm/tests/api_tests/totp_mfa.test.d.ts.map +1 -1
  785. package/lib/esm/tests/api_tests/totp_mfa.test.js +37 -31
  786. package/lib/esm/tests/api_tests/totp_mfa.test.js.map +1 -1
  787. package/lib/esm/tests/api_tests/translations.test.d.ts +6 -5
  788. package/lib/esm/tests/api_tests/translations.test.d.ts.map +1 -1
  789. package/lib/esm/tests/api_tests/translations.test.js +102 -74
  790. package/lib/esm/tests/api_tests/translations.test.js.map +1 -1
  791. package/lib/esm/tests/api_tests/trigger_contains_matching.test.d.ts +3 -1
  792. package/lib/esm/tests/api_tests/trigger_contains_matching.test.d.ts.map +1 -1
  793. package/lib/esm/tests/api_tests/trigger_contains_matching.test.js +2 -0
  794. package/lib/esm/tests/api_tests/trigger_contains_matching.test.js.map +1 -1
  795. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.d.ts +21 -4
  796. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.d.ts.map +1 -1
  797. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.js +236 -369
  798. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.js.map +1 -1
  799. package/lib/esm/tests/api_tests/user_logs_restore_deleted.test.d.ts +3 -1
  800. package/lib/esm/tests/api_tests/user_logs_restore_deleted.test.d.ts.map +1 -1
  801. package/lib/esm/tests/api_tests/user_logs_restore_deleted.test.js +2 -0
  802. package/lib/esm/tests/api_tests/user_logs_restore_deleted.test.js.map +1 -1
  803. package/lib/esm/tests/api_tests/user_preferences.test.d.ts +30 -0
  804. package/lib/esm/tests/api_tests/user_preferences.test.d.ts.map +1 -0
  805. package/lib/esm/tests/api_tests/user_preferences.test.js +274 -0
  806. package/lib/esm/tests/api_tests/user_preferences.test.js.map +1 -0
  807. package/lib/esm/tests/api_tests/vital_review_trigger_action.test.d.ts +3 -1
  808. package/lib/esm/tests/api_tests/vital_review_trigger_action.test.d.ts.map +1 -1
  809. package/lib/esm/tests/api_tests/vital_review_trigger_action.test.js +2 -0
  810. package/lib/esm/tests/api_tests/vital_review_trigger_action.test.js.map +1 -1
  811. package/lib/esm/tests/api_tests/vitl_push.test.d.ts +7 -0
  812. package/lib/esm/tests/api_tests/vitl_push.test.d.ts.map +1 -0
  813. package/lib/esm/tests/api_tests/vitl_push.test.js +333 -0
  814. package/lib/esm/tests/api_tests/vitl_push.test.js.map +1 -0
  815. package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts +17 -5
  816. package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -1
  817. package/lib/esm/tests/api_tests/webhook_error_handling.test.js +202 -194
  818. package/lib/esm/tests/api_tests/webhook_error_handling.test.js.map +1 -1
  819. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.d.ts +15 -5
  820. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.d.ts.map +1 -1
  821. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.js +152 -178
  822. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.js.map +1 -1
  823. package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts +6 -5
  824. package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
  825. package/lib/esm/tests/api_tests/welle_partner_token.test.js +391 -250
  826. package/lib/esm/tests/api_tests/welle_partner_token.test.js.map +1 -1
  827. package/lib/esm/tests/setup_isolated.d.ts +55 -0
  828. package/lib/esm/tests/setup_isolated.d.ts.map +1 -1
  829. package/lib/esm/tests/setup_isolated.js +114 -0
  830. package/lib/esm/tests/setup_isolated.js.map +1 -1
  831. package/lib/esm/tests/tests.d.ts.map +1 -1
  832. package/lib/esm/tests/tests.js +386 -536
  833. package/lib/esm/tests/tests.js.map +1 -1
  834. package/lib/esm/tests/unit_tests/date_string_validation.test.d.ts +2 -0
  835. package/lib/esm/tests/unit_tests/date_string_validation.test.d.ts.map +1 -0
  836. package/lib/esm/tests/unit_tests/date_string_validation.test.js +108 -0
  837. package/lib/esm/tests/unit_tests/date_string_validation.test.js.map +1 -0
  838. package/lib/esm/tests/unit_tests/isolated_suite_discovery.test.d.ts +2 -0
  839. package/lib/esm/tests/unit_tests/isolated_suite_discovery.test.d.ts.map +1 -0
  840. package/lib/esm/tests/unit_tests/isolated_suite_discovery.test.js +174 -0
  841. package/lib/esm/tests/unit_tests/isolated_suite_discovery.test.js.map +1 -0
  842. package/lib/esm/tests/unit_tests/programs_conditional_logic.test.d.ts +3 -0
  843. package/lib/esm/tests/unit_tests/programs_conditional_logic.test.d.ts.map +1 -0
  844. package/lib/esm/tests/unit_tests/programs_conditional_logic.test.js +117 -0
  845. package/lib/esm/tests/unit_tests/programs_conditional_logic.test.js.map +1 -0
  846. package/lib/esm/tests/webhooks_tests.js +44 -34
  847. package/lib/esm/tests/webhooks_tests.js.map +1 -1
  848. package/lib/tsconfig.tsbuildinfo +1 -1
  849. package/package.json +12 -11
  850. package/src/sdk.ts +14 -2
  851. package/src/tests/api_tests/ai_conversations.test.ts +170 -138
  852. package/src/tests/api_tests/ai_conversations_agent_message.test.ts +491 -0
  853. package/src/tests/api_tests/appointment_link_expiration.test.ts +94 -35
  854. package/src/tests/api_tests/appointment_no_showed_trigger.test.ts +181 -128
  855. package/src/tests/api_tests/availability_block_buffer.test.ts +286 -0
  856. package/src/tests/api_tests/beluga_manual_sync.test.ts +103 -53
  857. package/src/tests/api_tests/beluga_trigger_refill.test.ts +131 -46
  858. package/src/tests/api_tests/booking_prevent_upcoming_duplicate.test.ts +541 -0
  859. package/src/tests/api_tests/bulk_assignment.test.ts +307 -220
  860. package/src/tests/api_tests/calendar_event_references_update.test.ts +97 -54
  861. package/src/tests/api_tests/calendar_event_webhook_template.test.ts +198 -158
  862. package/src/tests/api_tests/chats_analytics.test.ts +161 -123
  863. package/src/tests/api_tests/concurrent_build_threads.test.ts +80 -69
  864. package/src/tests/api_tests/configurations_public_read.test.ts +154 -67
  865. package/src/tests/api_tests/copied_form_response_no_enduser_sync.test.ts +307 -0
  866. package/src/tests/api_tests/create_note_action.test.ts +149 -70
  867. package/src/tests/api_tests/create_user_notifications_trigger.test.ts +116 -144
  868. package/src/tests/api_tests/custom_aggregation.test.ts +163 -92
  869. package/src/tests/api_tests/database_cascade_delete.test.ts +101 -87
  870. package/src/tests/api_tests/dont_sync_to_elation_form_submission.test.ts +122 -51
  871. package/src/tests/api_tests/elation_user_id.test.ts +105 -42
  872. package/src/tests/api_tests/enduser_fields_sync.test.ts +4 -0
  873. package/src/tests/api_tests/enduser_observations_auto_review.test.ts +4 -0
  874. package/src/tests/api_tests/file_download_unicode_names.test.ts +171 -122
  875. package/src/tests/api_tests/form_intake_email_normalization.test.ts +489 -0
  876. package/src/tests/api_tests/form_submitted_trigger.test.ts +152 -86
  877. package/src/tests/api_tests/form_translations.test.ts +117 -48
  878. package/src/tests/api_tests/form_vital_reading.test.ts +393 -0
  879. package/src/tests/api_tests/formsort_header_auth.test.ts +147 -97
  880. package/src/tests/api_tests/gcal_sync_retry.test.ts +71 -49
  881. package/src/tests/api_tests/get_some_projection.test.ts +333 -169
  882. package/src/tests/api_tests/group_event_attendee_self_update.test.ts +103 -52
  883. package/src/tests/api_tests/integrations_redacted.test.ts +161 -84
  884. package/src/tests/api_tests/journey_delete_cancels_actions.test.ts +93 -64
  885. package/src/tests/api_tests/journey_statistics_cache.test.ts +237 -0
  886. package/src/tests/api_tests/journey_step_manual_count.test.ts +220 -0
  887. package/src/tests/api_tests/load_team_chat.test.ts +62 -6
  888. package/src/tests/api_tests/load_threads_autobuild.test.ts +163 -67
  889. package/src/tests/api_tests/load_threads_care_team.test.ts +107 -0
  890. package/src/tests/api_tests/managed_content_file_access.test.ts +132 -108
  891. package/src/tests/api_tests/mdb_sort.test.ts +247 -161
  892. package/src/tests/api_tests/mdi_manual_sync.test.ts +277 -0
  893. package/src/tests/api_tests/mdi_trigger_refill.test.ts +132 -78
  894. package/src/tests/api_tests/mdi_webhooks.test.ts +52 -22
  895. package/src/tests/api_tests/message_assignment_trigger.test.ts +129 -155
  896. package/src/tests/api_tests/metriport_push_form_response.test.ts +109 -49
  897. package/src/tests/api_tests/organization_api_keys.test.ts +170 -2
  898. package/src/tests/api_tests/organization_settings_duplicates.test.ts +291 -181
  899. package/src/tests/api_tests/organization_signup.test.ts +174 -5
  900. package/src/tests/api_tests/out_of_office_endpoint.test.ts +98 -0
  901. package/src/tests/api_tests/outbound_chat_sent_trigger.test.ts +163 -175
  902. package/src/tests/api_tests/phone_calls_cold_transfer.test.ts +195 -133
  903. package/src/tests/api_tests/phone_calls_conference_hold.test.ts +112 -42
  904. package/src/tests/api_tests/phone_embed_leave_message.test.ts +541 -0
  905. package/src/tests/api_tests/phone_tree_enduser_condition.test.ts +81 -32
  906. package/src/tests/api_tests/programs.test.ts +701 -0
  907. package/src/tests/api_tests/public_form_case_insensitive_match.test.ts +632 -0
  908. package/src/tests/api_tests/security/add-to-journey-foreign-enduserid.test.ts +4 -0
  909. package/src/tests/api_tests/security/ai-conversations-rbac.test.ts +248 -128
  910. package/src/tests/api_tests/security/appointment-reschedule-ownership.test.ts +4 -0
  911. package/src/tests/api_tests/security/automated-actions-process-gate.test.ts +47 -42
  912. package/src/tests/api_tests/security/booking-info-idor-token-mint.test.ts +53 -45
  913. package/src/tests/api_tests/security/cascade-role-rename-cross-tenant.test.ts +100 -73
  914. package/src/tests/api_tests/security/data-sync-redaction-bypass.test.ts +125 -59
  915. package/src/tests/api_tests/security/develop-health-benefit-verification-rbac.test.ts +131 -103
  916. package/src/tests/api_tests/security/enduser-ai-summary-trust-gate.test.ts +161 -68
  917. package/src/tests/api_tests/security/enduser-cross-create.test.ts +200 -61
  918. package/src/tests/api_tests/security/enduser-write-restrictions.test.ts +179 -61
  919. package/src/tests/api_tests/security/file-link-session-confinement.test.ts +4 -0
  920. package/src/tests/api_tests/security/form-logic-js-execution.test.ts +4 -0
  921. package/src/tests/api_tests/security/formsort_webhook_auth_field_lock.test.ts +225 -0
  922. package/src/tests/api_tests/security/globalunique-conflict-redaction.test.ts +163 -44
  923. package/src/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.ts +78 -70
  924. package/src/tests/api_tests/security/load-inbox-redaction.test.ts +79 -44
  925. package/src/tests/api_tests/security/proxy-image-unauth-ssrf.test.ts +95 -52
  926. package/src/tests/api_tests/security/register_business_id_injection.test.ts +132 -93
  927. package/src/tests/api_tests/security/rich-text-answer-sanitized-on-write.test.ts +4 -0
  928. package/src/tests/api_tests/security/sanitize-user-html-with-iframes.test.ts +127 -0
  929. package/src/tests/api_tests/security/schema-adminonly-enforcement.test.ts +42 -37
  930. package/src/tests/api_tests/security/self-admin-role-assignment.test.ts +92 -54
  931. package/src/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.ts +76 -34
  932. package/src/tests/api_tests/security/webhook-timeout.test.ts +67 -36
  933. package/src/tests/api_tests/session_for_join_link.test.ts +99 -0
  934. package/src/tests/api_tests/set_fields_order_templates.test.ts +94 -9
  935. package/src/tests/api_tests/stedi_approval.test.ts +156 -90
  936. package/src/tests/api_tests/stripe_checkout_items.test.ts +186 -0
  937. package/src/tests/api_tests/ticket_stage_archive.test.ts +314 -0
  938. package/src/tests/api_tests/tickets_bulk_assign_care_team.test.ts +138 -103
  939. package/src/tests/api_tests/tickets_bulk_assign_from_queue.test.ts +4 -0
  940. package/src/tests/api_tests/totp_mfa.test.ts +10 -5
  941. package/src/tests/api_tests/translations.test.ts +69 -46
  942. package/src/tests/api_tests/trigger_contains_matching.test.ts +4 -0
  943. package/src/tests/api_tests/trigger_set_fields_date_difference.test.ts +198 -256
  944. package/src/tests/api_tests/user_logs_restore_deleted.test.ts +4 -0
  945. package/src/tests/api_tests/user_preferences.test.ts +227 -0
  946. package/src/tests/api_tests/vital_review_trigger_action.test.ts +455 -0
  947. package/src/tests/api_tests/vitl_push.test.ts +323 -0
  948. package/src/tests/api_tests/webhook_error_handling.test.ts +121 -60
  949. package/src/tests/api_tests/webhook_raw_json_number.test.ts +127 -109
  950. package/src/tests/api_tests/welle_partner_token.test.ts +217 -90
  951. package/src/tests/setup_isolated.ts +147 -0
  952. package/src/tests/tests.ts +165 -177
  953. package/src/tests/{api_tests → unit_tests}/date_string_validation.test.ts +2 -23
  954. package/src/tests/unit_tests/isolated_suite_discovery.test.ts +178 -0
  955. package/src/tests/unit_tests/programs_conditional_logic.test.ts +189 -0
  956. package/src/tests/webhooks_tests.ts +6 -1
  957. package/test_generated.pdf +0 -0
@@ -0,0 +1,489 @@
1
+ require('source-map-support').install();
2
+
3
+ import { Session } from "../../sdk"
4
+ import {
5
+ assert_checks,
6
+ Check,
7
+ setup_isolated_tenant,
8
+ IsolatedSuite,
9
+ } from "../setup_isolated"
10
+ import { Form, FormField } from "@tellescope/types-client"
11
+
12
+ const host = process.env.API_URL || 'http://localhost:8080' as const
13
+
14
+ const RAND = () => Math.random().toString(36).slice(2, 10)
15
+
16
+ /** The Related Contacts insert runs AFTER submit_form_response has responded, so unlike the intake
17
+ * write it has to be waited for. */
18
+ const poll_for = async <T,>(get: () => Promise<T>, done: (v: T) => boolean, attempts=20): Promise<T> => {
19
+ let value = await get()
20
+ for (let i = 0; i < attempts && !done(value); i++) {
21
+ await new Promise(resolve => setTimeout(resolve, 250))
22
+ value = await get()
23
+ }
24
+ return value
25
+ }
26
+
27
+ /**
28
+ * Coverage for CU-86e3kndpg — `normalize_contact_intake_fields` in api/modules/forms.ts.
29
+ *
30
+ * The bug: a form question mapped to `intakeField: 'email'` has its answer copied onto the contact
31
+ * VERBATIM (the `ENDUSER_FIELD_TYPES` branch of `save_enduser_updates_for_form_response`), and the
32
+ * enduser write goes through `DB.endusers.updateById`, which is a raw Mongo `$set` with no schema
33
+ * validation. So a contact ends up stored as `John@Example.COM`, which `begin_login_flow`'s exact
34
+ * `findPage({ email })` never matches — the patient is asked for a password they never set.
35
+ *
36
+ * ### Fixture warnings (these make the difference between a real test and a vacuous one)
37
+ *
38
+ * 1. **The question type must NOT be `'email'`.** `formResponseAnswerValidator` already lowercases an
39
+ * `email`-typed answer at submit, so a fixture built on one passes whether or not the guard
40
+ * exists. Every positive case here uses a `'string'` (Text) or `'Dropdown'` question mapped to the
41
+ * email intake field — which the webapp Form Editor refuses to save (`intakeFieldError` in
42
+ * FormFieldEditor.tsx) but the API accepts, and which is exactly the real customer
43
+ * misconfiguration. Section F keeps an `'email'`-typed question as the regression control.
44
+ *
45
+ * 2. **The submission must not be a PUBLIC one.** `authFieldIntakeDisabled` deletes `email` and
46
+ * `phone` from the intake map outright for an untrusted remote submitter, so a public fixture
47
+ * would store nothing either way. Every case drives `prepare_form_response` from the ADMIN
48
+ * session, for which `lockAuthFieldIntake` is false.
49
+ *
50
+ * Each positive case also asserts that the STORED form response answer still holds the raw typed
51
+ * text — that is deliberately out of scope, and it proves the normalization observed on the contact
52
+ * came from the guard rather than from something lowercasing the answer upstream.
53
+ *
54
+ * `setup_isolated` rather than `setup_tests` because the cases assert on exact contact field values
55
+ * and on "which contacts exist", which needs a tenant nobody else writes to.
56
+ *
57
+ * Runs standalone or as part of the main suite:
58
+ * npm run test:modular -- api_tests/form_intake_email_normalization
59
+ */
60
+
61
+ type Fixture = { form: Form, fields: Record<string, FormField> }
62
+
63
+ /** Every intake question the cases need, on one form. A submission answers only the subset it is
64
+ * about — two questions mapped to the same intakeField in one submission would race, last wins. */
65
+ const createFixtureForm = async (sdk: Session): Promise<Fixture> => {
66
+ const form = await sdk.api.forms.createOne({
67
+ title: `Intake Contact Normalization ${RAND()}`,
68
+ })
69
+
70
+ const fields: Record<string, FormField> = {}
71
+ let previousId: string | undefined = undefined
72
+ const addField = async (key: string, f: { title: string, type: any, intakeField?: string, options?: any }) => {
73
+ const created: FormField = await sdk.api.form_fields.createOne({
74
+ formId: form.id,
75
+ previousFields: previousId
76
+ ? [{ type: 'after', info: { fieldId: previousId } }]
77
+ : [{ type: 'root', info: {} }],
78
+ ...f,
79
+ } as any)
80
+ previousId = created.id
81
+ fields[key] = created
82
+ return created
83
+ }
84
+
85
+ // the misconfiguration under test: a free-TEXT question mapped to an authentication channel
86
+ await addField('emailText', { title: 'Email (text)', type: 'string', intakeField: 'email' })
87
+ await addField('phoneText', { title: 'Phone (text)', type: 'string', intakeField: 'phone' })
88
+ await addField('landlineText', { title: 'Landline (text)', type: 'string', intakeField: 'landline' })
89
+ // a custom field, so "every other intake field in the same submission still lands" is observable
90
+ await addField('color', { title: 'Favorite Color', type: 'string', intakeField: 'favoriteColor' })
91
+ // single-select: the answer arrives as a ONE-element array even for a built-in field
92
+ await addField('emailDropdown', {
93
+ title: 'Email (dropdown)', type: 'Dropdown', intakeField: 'email',
94
+ options: { radio: true, choices: ['Picked@Example.COM', 'Other@Example.COM'] },
95
+ })
96
+ // multi-select: a TWO-element array, which has no single contact value
97
+ await addField('emailMulti', {
98
+ title: 'Email (multi)', type: 'multiple_choice', intakeField: 'email',
99
+ options: { choices: ['First@Example.COM', 'Second@Example.COM'] },
100
+ })
101
+ // the regression control — already lowercased at submit, before this ticket
102
+ await addField('emailTyped', { title: 'Email (email type)', type: 'email', intakeField: 'email' })
103
+ await addField('lname', { title: 'Last Name', type: 'string', intakeField: 'lname' })
104
+ // Related Contacts reaches the guard through get_intake_fields_undotted, whose output is spread
105
+ // OVER each related contact's own typed values — so a SHARED email is the submitter's normalized
106
+ // one, and an unshared one is left exactly as typed (out of scope, per the ticket).
107
+ await addField('relatedShared', {
108
+ title: 'Related (email shared)', type: 'Related Contacts',
109
+ options: { sharedIntakeFields: ['email'] },
110
+ })
111
+ await addField('relatedUnshared', {
112
+ title: 'Related (email not shared)', type: 'Related Contacts',
113
+ options: { sharedIntakeFields: ['favoriteColor'] },
114
+ })
115
+
116
+ return { form, fields }
117
+ }
118
+
119
+ type Answer = { key: string, answer: any }
120
+
121
+ /** Staff prepare + submit, so `authFieldIntakeDisabled` is false and the intake write actually runs.
122
+ * `save_enduser_updates_for_form_response` is awaited inside the submit handler BEFORE it responds,
123
+ * so the contact is already updated when this resolves — no polling needed. */
124
+ const submitAnswers = async (
125
+ sdk: Session,
126
+ { form, fields }: Fixture,
127
+ enduserId: string,
128
+ answers: Answer[],
129
+ ) => {
130
+ const prepared = await sdk.api.form_responses.prepare_form_response({
131
+ formId: form.id, enduserId,
132
+ })
133
+ await sdk.api.form_responses.submit_form_response({
134
+ accessCode: prepared.accessCode,
135
+ responses: answers.map(({ key, answer }) => ({
136
+ fieldId: fields[key].id,
137
+ fieldTitle: fields[key].title,
138
+ answer,
139
+ })),
140
+ })
141
+ return prepared.response.id
142
+ }
143
+
144
+ export const form_intake_email_normalization_checks = async (): Promise<Check[]> => {
145
+ const checks: Check[] = []
146
+ const record = (label: string, pass: boolean, detail: string) => checks.push({ label, pass, detail })
147
+
148
+ let tenant: Awaited<ReturnType<typeof setup_isolated_tenant>> | undefined
149
+
150
+ try {
151
+ tenant = await setup_isolated_tenant({
152
+ name: `FormIntakeNormalization ${RAND()}`,
153
+ users: [{ isAdmin: true }],
154
+ apiKeys: 0,
155
+ })
156
+ const { sdk } = tenant
157
+
158
+ const fixture = await createFixtureForm(sdk)
159
+ const { fields } = fixture
160
+
161
+ /** A fresh contact with a known-good baseline on all three contact keys, so "the field was
162
+ * omitted" is distinguishable from "the field was written". Numbers are unique per contact
163
+ * (endusers are unique on phone, and a random suffix would eventually collide) and shaped so
164
+ * `isMobilePhone(.., 'any', { strictMode: true })` accepts them.
165
+ *
166
+ * Careful: the 555-01xx "reserved for fiction" range does NOT pass that check, so
167
+ * `(555) 010-1234` is REJECTED by phoneValidator and the guard omits it. Every phone fixture
168
+ * here is 555-555-xxxx for that reason. */
169
+ let phoneSeq = 1000
170
+ const NEXT_US_PHONE = () => `+1555555${phoneSeq++}`
171
+ const newContact = async () => {
172
+ const baselineEmail = `dontsend-base-${RAND()}@tellescope.com`
173
+ const baselinePhone = NEXT_US_PHONE()
174
+ const baselineLandline = NEXT_US_PHONE()
175
+ const enduser = await sdk.api.endusers.createOne({
176
+ fname: 'Intake', lname: 'Tester',
177
+ email: baselineEmail,
178
+ phone: baselinePhone,
179
+ landline: baselineLandline,
180
+ })
181
+ return { enduser, baselineEmail, baselinePhone, baselineLandline }
182
+ }
183
+ const reload = (id: string) => sdk.api.endusers.getOne(id)
184
+
185
+ /* ================= A. the reported bug: mixed case + surrounding whitespace ================= */
186
+ {
187
+ const { enduser } = await newContact()
188
+ const TYPED = ` John.Doe+Tag-${RAND()}@Example.COM `
189
+ const EXPECTED = TYPED.trim().toLowerCase()
190
+
191
+ const responseId = await submitAnswers(sdk, fixture, enduser.id, [
192
+ { key: 'emailText', answer: { type: 'string', value: TYPED } },
193
+ ])
194
+ const after = await reload(enduser.id)
195
+
196
+ record(
197
+ 'A1: a TEXT question mapped to the email intake field stores the address lowercased and trimmed',
198
+ after.email === EXPECTED,
199
+ `stored email=${JSON.stringify(after.email)}, expected ${JSON.stringify(EXPECTED)}`
200
+ + ` (typed ${JSON.stringify(TYPED)}) — without the guard this stores the raw typed string,`
201
+ + ` which begin_login_flow's exact findPage({ email }) never matches`,
202
+ )
203
+
204
+ // fixture guard: proves the lowercasing observed above is the guard's doing, not something
205
+ // upstream normalizing a 'string' answer. The stored answer is deliberately out of scope.
206
+ const stored = await sdk.api.form_responses.getOne(responseId)
207
+ const storedAnswer = stored.responses?.find(r => r.fieldId === fields.emailText.id)?.answer?.value
208
+ record(
209
+ 'A2: the stored form response answer still holds the raw typed text (out of scope, unchanged)',
210
+ storedAnswer === TYPED,
211
+ `stored answer=${JSON.stringify(storedAnswer)}, typed ${JSON.stringify(TYPED)}`
212
+ + ` — if this were already trimmed/lowercased, A1 would pass with the guard removed`,
213
+ )
214
+ }
215
+
216
+ /* ============= B. an invalid value is omitted; the rest of the submission lands ============= */
217
+ {
218
+ const { enduser, baselineEmail } = await newContact()
219
+ const COLOR = `teal-${RAND()}`
220
+ let submitError: any = undefined
221
+ try {
222
+ await submitAnswers(sdk, fixture, enduser.id, [
223
+ { key: 'emailText', answer: { type: 'string', value: 'not an email at all' } },
224
+ { key: 'color', answer: { type: 'string', value: COLOR } },
225
+ ])
226
+ } catch (err: any) { submitError = err }
227
+ const after = await reload(enduser.id)
228
+
229
+ record(
230
+ 'B1: the submission succeeds — an unparseable answer is never an error for the responder',
231
+ submitError === undefined,
232
+ submitError === undefined
233
+ ? 'submit_form_response resolved normally'
234
+ : `submit_form_response threw: ${JSON.stringify(submitError?.message ?? submitError)}`,
235
+ )
236
+ record(
237
+ 'B2: an invalid email is OMITTED, leaving the existing address untouched',
238
+ after.email === baselineEmail,
239
+ `stored email=${JSON.stringify(after.email)}, expected the untouched baseline ${JSON.stringify(baselineEmail)}`
240
+ + ` — storing the free text here is what would break portal login`,
241
+ )
242
+ record(
243
+ 'B3: every other intake field in the SAME submission still lands',
244
+ (after.fields as any)?.favoriteColor === COLOR,
245
+ `fields.favoriteColor=${JSON.stringify((after.fields as any)?.favoriteColor)}, expected ${JSON.stringify(COLOR)}`,
246
+ )
247
+ }
248
+
249
+ /* ======================= C. phone and landline: E.164, or omitted ======================= */
250
+ {
251
+ const { enduser } = await newContact()
252
+ await submitAnswers(sdk, fixture, enduser.id, [
253
+ { key: 'phoneText', answer: { type: 'string', value: '(555) 555-1234' } },
254
+ { key: 'landlineText', answer: { type: 'string', value: ' 555-555-9876 ' } },
255
+ ])
256
+ const after = await reload(enduser.id)
257
+
258
+ record(
259
+ 'C1: a TEXT question mapped to phone stores the validator E.164 output',
260
+ after.phone === '+15555551234',
261
+ `stored phone=${JSON.stringify(after.phone)}, expected "+15555551234" from the typed "(555) 555-1234"`,
262
+ )
263
+ record(
264
+ 'C2: landline is normalized the same way (not an auth channel; one stored format)',
265
+ after.landline === '+15555559876',
266
+ `stored landline=${JSON.stringify(after.landline)}, expected "+15555559876" from the typed " 555-555-9876 "`,
267
+ )
268
+ }
269
+ {
270
+ const { enduser, baselinePhone, baselineLandline } = await newContact()
271
+ const COLOR = `amber-${RAND()}`
272
+ await submitAnswers(sdk, fixture, enduser.id, [
273
+ { key: 'phoneText', answer: { type: 'string', value: 'call me at work' } },
274
+ { key: 'landlineText', answer: { type: 'string', value: 'the front desk' } },
275
+ { key: 'color', answer: { type: 'string', value: COLOR } },
276
+ ])
277
+ const after = await reload(enduser.id)
278
+
279
+ record(
280
+ 'C3: free text that is not a phone number is DROPPED rather than stored',
281
+ after.phone === baselinePhone && after.landline === baselineLandline,
282
+ `stored phone=${JSON.stringify(after.phone)} landline=${JSON.stringify(after.landline)},`
283
+ + ` expected the untouched baselines ${baselinePhone} / ${baselineLandline}`,
284
+ )
285
+ record(
286
+ 'C4: the other answers in that same submission still updated',
287
+ (after.fields as any)?.favoriteColor === COLOR,
288
+ `fields.favoriteColor=${JSON.stringify((after.fields as any)?.favoriteColor)}, expected ${JSON.stringify(COLOR)}`,
289
+ )
290
+ }
291
+
292
+ /* ================== D. array-shaped answers: unwrap one, omit the rest ================== */
293
+ {
294
+ const { enduser } = await newContact()
295
+ await submitAnswers(sdk, fixture, enduser.id, [
296
+ { key: 'emailDropdown', answer: { type: 'Dropdown', value: ['Picked@Example.COM'] } },
297
+ ])
298
+ const after = await reload(enduser.id)
299
+
300
+ record(
301
+ 'D1: a single-select answer is unwrapped to a scalar and lowercased, not stored as a list',
302
+ after.email === 'picked@example.com',
303
+ `stored email=${JSON.stringify(after.email)}, expected "picked@example.com"`
304
+ + ` — the ENDUSER_FIELD_TYPES branch assigns the raw ARRAY, so without the unwrap the contact`
305
+ + ` holds a bracketed list instead of an address`,
306
+ )
307
+ }
308
+ {
309
+ const { enduser, baselineEmail } = await newContact()
310
+ const COLOR = `violet-${RAND()}`
311
+ await submitAnswers(sdk, fixture, enduser.id, [
312
+ { key: 'emailMulti', answer: { type: 'multiple_choice', value: ['First@Example.COM', 'Second@Example.COM'] } },
313
+ { key: 'color', answer: { type: 'string', value: COLOR } },
314
+ ])
315
+ const after = await reload(enduser.id)
316
+
317
+ record(
318
+ 'D2: a MULTI-select answer has no single contact value and is omitted',
319
+ after.email === baselineEmail,
320
+ `stored email=${JSON.stringify(after.email)}, expected the untouched baseline ${JSON.stringify(baselineEmail)}`,
321
+ )
322
+ record(
323
+ 'D3: the multi-select submission still succeeds and its other answers land',
324
+ (after.fields as any)?.favoriteColor === COLOR,
325
+ `fields.favoriteColor=${JSON.stringify((after.fields as any)?.favoriteColor)}, expected ${JSON.stringify(COLOR)}`,
326
+ )
327
+ }
328
+
329
+ /* ========================== E. over-long value (emailValidator cap) ========================== */
330
+ {
331
+ const { enduser, baselineEmail } = await newContact()
332
+ const COLOR = `indigo-${RAND()}`
333
+ // 262 characters. emailValidator caps length at 250, but isEmail rejects this first (a local
334
+ // part over 64 characters is not a valid address) — either way the guard omits it, which is
335
+ // what the check asserts.
336
+ const LONG = `${'a'.repeat(250)}@Example.COM`
337
+ await submitAnswers(sdk, fixture, enduser.id, [
338
+ { key: 'emailText', answer: { type: 'string', value: LONG } },
339
+ { key: 'color', answer: { type: 'string', value: COLOR } },
340
+ ])
341
+ const after = await reload(enduser.id)
342
+
343
+ record(
344
+ 'E1: an over-long address is omitted and the submission still succeeds',
345
+ after.email === baselineEmail && (after.fields as any)?.favoriteColor === COLOR,
346
+ `stored email=${JSON.stringify(after.email)} (expected the untouched baseline`
347
+ + ` ${JSON.stringify(baselineEmail)}), fields.favoriteColor=${JSON.stringify((after.fields as any)?.favoriteColor)}`,
348
+ )
349
+ }
350
+
351
+ /* ============================ F. regressions: unchanged behavior ============================ */
352
+ {
353
+ const { enduser } = await newContact()
354
+ const TYPED = `Regression.${RAND()}@Example.COM`
355
+ await submitAnswers(sdk, fixture, enduser.id, [
356
+ { key: 'emailTyped', answer: { type: 'email', value: TYPED } },
357
+ ])
358
+ const after = await reload(enduser.id)
359
+
360
+ record(
361
+ 'F1 (control): an EMAIL-typed question still stores lowercase, exactly as before this ticket',
362
+ after.email === TYPED.toLowerCase(),
363
+ `stored email=${JSON.stringify(after.email)}, expected ${JSON.stringify(TYPED.toLowerCase())}`
364
+ + ` — this path was already lowercased by formResponseAnswerValidator, which is why every`
365
+ + ` positive case above uses a non-email question type`,
366
+ )
367
+ }
368
+ {
369
+ const { enduser } = await newContact()
370
+ // nameValidator only capitalizes the FIRST letter, so MCDONALD survives verbatim
371
+ await submitAnswers(sdk, fixture, enduser.id, [
372
+ { key: 'lname', answer: { type: 'string', value: 'MCDONALD' } },
373
+ ])
374
+ const after = await reload(enduser.id)
375
+
376
+ record(
377
+ 'F2: name intake is untouched by the guard — capitalization is stored as typed',
378
+ after.lname === 'MCDONALD',
379
+ `stored lname=${JSON.stringify(after.lname)}, expected "MCDONALD"`
380
+ + ` — only email/phone/landline are normalized`,
381
+ )
382
+ }
383
+ {
384
+ const { enduser, baselineEmail, baselinePhone, baselineLandline } = await newContact()
385
+ const COLOR = `olive-${RAND()}`
386
+ // the email question is simply not answered
387
+ await submitAnswers(sdk, fixture, enduser.id, [
388
+ { key: 'color', answer: { type: 'string', value: COLOR } },
389
+ ])
390
+ const after = await reload(enduser.id)
391
+
392
+ record(
393
+ 'F3: a submission that answers no contact question leaves email/phone/landline untouched',
394
+ after.email === baselineEmail && after.phone === baselinePhone && after.landline === baselineLandline,
395
+ `stored email=${JSON.stringify(after.email)} phone=${JSON.stringify(after.phone)}`
396
+ + ` landline=${JSON.stringify(after.landline)}; expected the untouched baselines`
397
+ + ` ${JSON.stringify(baselineEmail)} / ${baselinePhone} / ${baselineLandline}`,
398
+ )
399
+ }
400
+
401
+ /* ====================== G. Related Contacts (Requirement 9) ====================== */
402
+ {
403
+ const { enduser } = await newContact()
404
+ const TYPED = `Submitter.${RAND()}@Example.COM`
405
+ const REL_LNAME = `Shared${RAND()}`
406
+
407
+ await submitAnswers(sdk, fixture, enduser.id, [
408
+ { key: 'emailText', answer: { type: 'string', value: TYPED } },
409
+ {
410
+ key: 'relatedShared',
411
+ answer: {
412
+ type: 'Related Contacts',
413
+ // the related contact types its OWN email; the shared intake field overwrites it
414
+ value: [{ fname: 'Related', lname: REL_LNAME, email: `Rel.${RAND()}@Example.COM` }],
415
+ },
416
+ },
417
+ ])
418
+
419
+ const related = await poll_for(
420
+ () => sdk.api.endusers.getSome({ filter: { lname: REL_LNAME } }),
421
+ e => e.length > 0,
422
+ )
423
+ record(
424
+ 'G1: a related contact inheriting a SHARED email gets the submitter normalized address',
425
+ related.length === 1 && related[0].email === TYPED.toLowerCase(),
426
+ `found ${related.length} related contact(s), email=${JSON.stringify(related[0]?.email)},`
427
+ + ` expected ${JSON.stringify(TYPED.toLowerCase())} (submitter typed ${JSON.stringify(TYPED)})`,
428
+ )
429
+ }
430
+ {
431
+ const { enduser } = await newContact()
432
+ const TYPED = `Submitter.${RAND()}@Example.COM`
433
+ const REL_LNAME = `Unshared${RAND()}`
434
+ const REL_EMAIL = `Rel.${RAND()}@Example.COM`
435
+
436
+ await submitAnswers(sdk, fixture, enduser.id, [
437
+ { key: 'emailText', answer: { type: 'string', value: TYPED } },
438
+ {
439
+ key: 'relatedUnshared',
440
+ answer: {
441
+ type: 'Related Contacts',
442
+ value: [{ fname: 'Related', lname: REL_LNAME, email: REL_EMAIL }],
443
+ },
444
+ },
445
+ ])
446
+
447
+ const related = await poll_for(
448
+ () => sdk.api.endusers.getSome({ filter: { lname: REL_LNAME } }),
449
+ e => e.length > 0,
450
+ )
451
+ record(
452
+ 'G2: with email NOT shared, the related contact keeps the address typed for it (out of scope)',
453
+ related.length === 1 && related[0].email === REL_EMAIL,
454
+ `found ${related.length} related contact(s), email=${JSON.stringify(related[0]?.email)},`
455
+ + ` expected the untouched typed ${JSON.stringify(REL_EMAIL)} — normalizing a related contact's`
456
+ + ` OWN typed email is deliberately out of scope for CU-86e3kndpg and needs its own ticket`,
457
+ )
458
+ }
459
+
460
+ return checks
461
+ } finally {
462
+ await tenant?.teardown()
463
+ }
464
+ }
465
+
466
+ /** Asserting wrapper, for standalone runs. */
467
+ export const form_intake_email_normalization_tests = async () => {
468
+ assert_checks('Form intake contact-field normalization', await form_intake_email_normalization_checks())
469
+ }
470
+
471
+ /** Enrolls this suite in the auto-discovered parallel pool — see run_discovered_isolated_suites. */
472
+ export const ISOLATED_SUITE: IsolatedSuite = {
473
+ name: 'Form intake contact-field normalization',
474
+ run: form_intake_email_normalization_checks,
475
+ }
476
+
477
+ // Allow running this test file independently
478
+ if (require.main === module) {
479
+ console.log(`Using API URL: ${host}`)
480
+ form_intake_email_normalization_tests()
481
+ .then(() => {
482
+ console.log("Form intake contact-field normalization test suite completed successfully")
483
+ process.exit(0)
484
+ })
485
+ .catch((error) => {
486
+ console.error("Form intake contact-field normalization test suite failed:", error)
487
+ process.exit(1)
488
+ })
489
+ }