@tellescope/sdk 2.0.0-beta.2 → 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 (717) hide show
  1. package/lib/cjs/sdk.d.ts +6 -5
  2. package/lib/cjs/sdk.d.ts.map +1 -1
  3. package/lib/cjs/sdk.js +5 -0
  4. package/lib/cjs/sdk.js.map +1 -1
  5. package/lib/cjs/tests/api_tests/ai_conversations.test.d.ts +14 -5
  6. package/lib/cjs/tests/api_tests/ai_conversations.test.d.ts.map +1 -1
  7. package/lib/cjs/tests/api_tests/ai_conversations.test.js +163 -149
  8. package/lib/cjs/tests/api_tests/ai_conversations.test.js.map +1 -1
  9. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.d.ts +22 -0
  10. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.d.ts.map +1 -0
  11. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.js +518 -0
  12. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.js.map +1 -0
  13. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.d.ts +6 -5
  14. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.d.ts.map +1 -1
  15. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.js +135 -73
  16. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.js.map +1 -1
  17. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.d.ts +6 -5
  18. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.d.ts.map +1 -1
  19. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.js +240 -174
  20. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.js.map +1 -1
  21. package/lib/cjs/tests/api_tests/availability_block_buffer.test.d.ts +22 -0
  22. package/lib/cjs/tests/api_tests/availability_block_buffer.test.d.ts.map +1 -0
  23. package/lib/cjs/tests/api_tests/availability_block_buffer.test.js +311 -0
  24. package/lib/cjs/tests/api_tests/availability_block_buffer.test.js.map +1 -0
  25. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.d.ts +6 -5
  26. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.d.ts.map +1 -1
  27. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.js +235 -192
  28. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.js.map +1 -1
  29. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.d.ts +6 -5
  30. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.d.ts.map +1 -1
  31. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.js +351 -264
  32. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.js.map +1 -1
  33. package/lib/cjs/tests/api_tests/bulk_assignment.test.d.ts +16 -5
  34. package/lib/cjs/tests/api_tests/bulk_assignment.test.d.ts.map +1 -1
  35. package/lib/cjs/tests/api_tests/bulk_assignment.test.js +336 -243
  36. package/lib/cjs/tests/api_tests/bulk_assignment.test.js.map +1 -1
  37. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.d.ts +13 -5
  38. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.d.ts.map +1 -1
  39. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.js +131 -108
  40. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.js.map +1 -1
  41. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.d.ts +15 -5
  42. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.d.ts.map +1 -1
  43. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.js +240 -252
  44. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.js.map +1 -1
  45. package/lib/cjs/tests/api_tests/chats_analytics.test.d.ts +14 -5
  46. package/lib/cjs/tests/api_tests/chats_analytics.test.d.ts.map +1 -1
  47. package/lib/cjs/tests/api_tests/chats_analytics.test.js +190 -189
  48. package/lib/cjs/tests/api_tests/chats_analytics.test.js.map +1 -1
  49. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.d.ts +23 -5
  50. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.d.ts.map +1 -1
  51. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.js +121 -118
  52. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.js.map +1 -1
  53. package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts +21 -5
  54. package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts.map +1 -1
  55. package/lib/cjs/tests/api_tests/configurations_public_read.test.js +235 -119
  56. package/lib/cjs/tests/api_tests/configurations_public_read.test.js.map +1 -1
  57. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts +7 -0
  58. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts.map +1 -0
  59. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.js +356 -0
  60. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.js.map +1 -0
  61. package/lib/cjs/tests/api_tests/create_note_action.test.d.ts +18 -5
  62. package/lib/cjs/tests/api_tests/create_note_action.test.d.ts.map +1 -1
  63. package/lib/cjs/tests/api_tests/create_note_action.test.js +218 -173
  64. package/lib/cjs/tests/api_tests/create_note_action.test.js.map +1 -1
  65. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.d.ts +17 -4
  66. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.d.ts.map +1 -1
  67. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.js +144 -205
  68. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.js.map +1 -1
  69. package/lib/cjs/tests/api_tests/custom_aggregation.test.d.ts +15 -5
  70. package/lib/cjs/tests/api_tests/custom_aggregation.test.d.ts.map +1 -1
  71. package/lib/cjs/tests/api_tests/custom_aggregation.test.js +284 -223
  72. package/lib/cjs/tests/api_tests/custom_aggregation.test.js.map +1 -1
  73. package/lib/cjs/tests/api_tests/database_cascade_delete.test.d.ts +13 -5
  74. package/lib/cjs/tests/api_tests/database_cascade_delete.test.d.ts.map +1 -1
  75. package/lib/cjs/tests/api_tests/database_cascade_delete.test.js +218 -242
  76. package/lib/cjs/tests/api_tests/database_cascade_delete.test.js.map +1 -1
  77. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +21 -5
  78. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -1
  79. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js +168 -112
  80. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -1
  81. package/lib/cjs/tests/api_tests/elation_user_id.test.d.ts +17 -5
  82. package/lib/cjs/tests/api_tests/elation_user_id.test.d.ts.map +1 -1
  83. package/lib/cjs/tests/api_tests/elation_user_id.test.js +121 -54
  84. package/lib/cjs/tests/api_tests/elation_user_id.test.js.map +1 -1
  85. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts +6 -5
  86. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -1
  87. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.js +193 -143
  88. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.js.map +1 -1
  89. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.d.ts +7 -0
  90. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.d.ts.map +1 -0
  91. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.js +532 -0
  92. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.js.map +1 -0
  93. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.d.ts +25 -5
  94. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.d.ts.map +1 -1
  95. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.js +395 -366
  96. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.js.map +1 -1
  97. package/lib/cjs/tests/api_tests/form_translations.test.d.ts +6 -5
  98. package/lib/cjs/tests/api_tests/form_translations.test.d.ts.map +1 -1
  99. package/lib/cjs/tests/api_tests/form_translations.test.js +269 -189
  100. package/lib/cjs/tests/api_tests/form_translations.test.js.map +1 -1
  101. package/lib/cjs/tests/api_tests/formsort_header_auth.test.d.ts +29 -5
  102. package/lib/cjs/tests/api_tests/formsort_header_auth.test.d.ts.map +1 -1
  103. package/lib/cjs/tests/api_tests/formsort_header_auth.test.js +179 -162
  104. package/lib/cjs/tests/api_tests/formsort_header_auth.test.js.map +1 -1
  105. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.d.ts +12 -6
  106. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.d.ts.map +1 -1
  107. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.js +98 -84
  108. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.js.map +1 -1
  109. package/lib/cjs/tests/api_tests/get_some_projection.test.d.ts +20 -5
  110. package/lib/cjs/tests/api_tests/get_some_projection.test.d.ts.map +1 -1
  111. package/lib/cjs/tests/api_tests/get_some_projection.test.js +342 -298
  112. package/lib/cjs/tests/api_tests/get_some_projection.test.js.map +1 -1
  113. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -5
  114. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -1
  115. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js +294 -223
  116. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -1
  117. package/lib/cjs/tests/api_tests/integrations_redacted.test.d.ts +6 -5
  118. package/lib/cjs/tests/api_tests/integrations_redacted.test.d.ts.map +1 -1
  119. package/lib/cjs/tests/api_tests/integrations_redacted.test.js +307 -213
  120. package/lib/cjs/tests/api_tests/integrations_redacted.test.js.map +1 -1
  121. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -5
  122. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -1
  123. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js +179 -178
  124. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -1
  125. package/lib/cjs/tests/api_tests/load_team_chat.test.d.ts.map +1 -1
  126. package/lib/cjs/tests/api_tests/load_team_chat.test.js +181 -124
  127. package/lib/cjs/tests/api_tests/load_team_chat.test.js.map +1 -1
  128. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.d.ts +24 -5
  129. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.d.ts.map +1 -1
  130. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.js +261 -227
  131. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.js.map +1 -1
  132. package/lib/cjs/tests/api_tests/load_threads_care_team.test.d.ts +6 -0
  133. package/lib/cjs/tests/api_tests/load_threads_care_team.test.d.ts.map +1 -1
  134. package/lib/cjs/tests/api_tests/load_threads_care_team.test.js +115 -31
  135. package/lib/cjs/tests/api_tests/load_threads_care_team.test.js.map +1 -1
  136. package/lib/cjs/tests/api_tests/managed_content_file_access.test.d.ts +15 -5
  137. package/lib/cjs/tests/api_tests/managed_content_file_access.test.d.ts.map +1 -1
  138. package/lib/cjs/tests/api_tests/managed_content_file_access.test.js +285 -311
  139. package/lib/cjs/tests/api_tests/managed_content_file_access.test.js.map +1 -1
  140. package/lib/cjs/tests/api_tests/mdb_sort.test.d.ts +20 -5
  141. package/lib/cjs/tests/api_tests/mdb_sort.test.d.ts.map +1 -1
  142. package/lib/cjs/tests/api_tests/mdb_sort.test.js +361 -305
  143. package/lib/cjs/tests/api_tests/mdb_sort.test.js.map +1 -1
  144. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.d.ts +27 -0
  145. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.d.ts.map +1 -0
  146. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.js +395 -0
  147. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.js.map +1 -0
  148. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -5
  149. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -1
  150. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js +259 -209
  151. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js.map +1 -1
  152. package/lib/cjs/tests/api_tests/mdi_webhooks.test.d.ts +12 -5
  153. package/lib/cjs/tests/api_tests/mdi_webhooks.test.d.ts.map +1 -1
  154. package/lib/cjs/tests/api_tests/mdi_webhooks.test.js +67 -61
  155. package/lib/cjs/tests/api_tests/mdi_webhooks.test.js.map +1 -1
  156. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.d.ts +23 -14
  157. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.d.ts.map +1 -1
  158. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.js +258 -306
  159. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.js.map +1 -1
  160. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.d.ts +6 -5
  161. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.d.ts.map +1 -1
  162. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.js +301 -238
  163. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.js.map +1 -1
  164. package/lib/cjs/tests/api_tests/organization_api_keys.test.d.ts.map +1 -1
  165. package/lib/cjs/tests/api_tests/organization_api_keys.test.js +226 -59
  166. package/lib/cjs/tests/api_tests/organization_api_keys.test.js.map +1 -1
  167. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts +19 -5
  168. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -1
  169. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js +335 -222
  170. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js.map +1 -1
  171. package/lib/cjs/tests/api_tests/organization_signup.test.d.ts.map +1 -1
  172. package/lib/cjs/tests/api_tests/organization_signup.test.js +218 -51
  173. package/lib/cjs/tests/api_tests/organization_signup.test.js.map +1 -1
  174. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.d.ts.map +1 -1
  175. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.js +109 -1
  176. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.js.map +1 -1
  177. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.d.ts +6 -6
  178. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.d.ts.map +1 -1
  179. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.js +309 -361
  180. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.js.map +1 -1
  181. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts +6 -5
  182. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
  183. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js +246 -165
  184. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
  185. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.d.ts +15 -5
  186. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.d.ts.map +1 -1
  187. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.js +130 -47
  188. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.js.map +1 -1
  189. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.d.ts +6 -5
  190. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.d.ts.map +1 -1
  191. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.js +180 -132
  192. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.js.map +1 -1
  193. package/lib/cjs/tests/api_tests/programs.test.d.ts.map +1 -1
  194. package/lib/cjs/tests/api_tests/programs.test.js +417 -50
  195. package/lib/cjs/tests/api_tests/programs.test.js.map +1 -1
  196. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.d.ts +10 -5
  197. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.d.ts.map +1 -1
  198. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.js +401 -282
  199. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.js.map +1 -1
  200. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.d.ts +9 -5
  201. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.d.ts.map +1 -1
  202. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.js +228 -211
  203. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.js.map +1 -1
  204. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts +13 -8
  205. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts.map +1 -1
  206. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.js +270 -254
  207. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.js.map +1 -1
  208. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts +16 -6
  209. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts.map +1 -1
  210. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js +167 -142
  211. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js.map +1 -1
  212. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts +10 -5
  213. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts.map +1 -1
  214. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.js +296 -221
  215. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.js.map +1 -1
  216. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts +12 -5
  217. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
  218. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js +221 -216
  219. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js.map +1 -1
  220. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts +11 -5
  221. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts.map +1 -1
  222. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js +300 -203
  223. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js.map +1 -1
  224. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.d.ts +11 -5
  225. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.d.ts.map +1 -1
  226. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.js +415 -275
  227. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.js.map +1 -1
  228. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.d.ts +11 -5
  229. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.d.ts.map +1 -1
  230. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.js +347 -228
  231. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.js.map +1 -1
  232. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts +18 -7
  233. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts.map +1 -1
  234. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.js +164 -75
  235. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.js.map +1 -1
  236. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts +15 -9
  237. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts.map +1 -1
  238. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js +99 -102
  239. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js.map +1 -1
  240. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.d.ts +11 -5
  241. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.d.ts.map +1 -1
  242. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.js +132 -89
  243. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.js.map +1 -1
  244. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts +12 -5
  245. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts.map +1 -1
  246. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.js +190 -138
  247. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.js.map +1 -1
  248. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts +18 -16
  249. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -1
  250. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js +164 -124
  251. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js.map +1 -1
  252. package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.d.ts.map +1 -1
  253. package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.js +122 -2
  254. package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.js.map +1 -1
  255. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts +11 -5
  256. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts.map +1 -1
  257. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.js +288 -274
  258. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.js.map +1 -1
  259. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.d.ts +17 -10
  260. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.d.ts.map +1 -1
  261. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.js +173 -138
  262. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.js.map +1 -1
  263. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts +6 -5
  264. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts.map +1 -1
  265. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js +310 -265
  266. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js.map +1 -1
  267. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.d.ts +9 -5
  268. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.d.ts.map +1 -1
  269. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.js +108 -83
  270. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.js.map +1 -1
  271. package/lib/cjs/tests/api_tests/stedi_approval.test.d.ts +6 -5
  272. package/lib/cjs/tests/api_tests/stedi_approval.test.d.ts.map +1 -1
  273. package/lib/cjs/tests/api_tests/stedi_approval.test.js +206 -137
  274. package/lib/cjs/tests/api_tests/stedi_approval.test.js.map +1 -1
  275. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.d.ts +7 -0
  276. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.d.ts.map +1 -0
  277. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.js +344 -0
  278. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.js.map +1 -0
  279. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts +6 -5
  280. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts.map +1 -1
  281. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.js +165 -149
  282. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.js.map +1 -1
  283. package/lib/cjs/tests/api_tests/translations.test.d.ts +6 -5
  284. package/lib/cjs/tests/api_tests/translations.test.d.ts.map +1 -1
  285. package/lib/cjs/tests/api_tests/translations.test.js +104 -75
  286. package/lib/cjs/tests/api_tests/translations.test.js.map +1 -1
  287. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.d.ts +21 -4
  288. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.d.ts.map +1 -1
  289. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.js +238 -370
  290. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.js.map +1 -1
  291. package/lib/cjs/tests/api_tests/user_preferences.test.d.ts +30 -0
  292. package/lib/cjs/tests/api_tests/user_preferences.test.d.ts.map +1 -0
  293. package/lib/cjs/tests/api_tests/user_preferences.test.js +279 -0
  294. package/lib/cjs/tests/api_tests/user_preferences.test.js.map +1 -0
  295. package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts +17 -5
  296. package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -1
  297. package/lib/cjs/tests/api_tests/webhook_error_handling.test.js +204 -195
  298. package/lib/cjs/tests/api_tests/webhook_error_handling.test.js.map +1 -1
  299. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.d.ts +15 -5
  300. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.d.ts.map +1 -1
  301. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.js +154 -179
  302. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.js.map +1 -1
  303. package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts +6 -5
  304. package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
  305. package/lib/cjs/tests/api_tests/welle_partner_token.test.js +393 -251
  306. package/lib/cjs/tests/api_tests/welle_partner_token.test.js.map +1 -1
  307. package/lib/cjs/tests/setup_isolated.d.ts +7 -0
  308. package/lib/cjs/tests/setup_isolated.d.ts.map +1 -1
  309. package/lib/cjs/tests/setup_isolated.js.map +1 -1
  310. package/lib/cjs/tests/tests.d.ts.map +1 -1
  311. package/lib/cjs/tests/tests.js +229 -461
  312. package/lib/cjs/tests/tests.js.map +1 -1
  313. package/lib/cjs/tests/unit_tests/date_string_validation.test.d.ts +2 -0
  314. package/lib/cjs/tests/unit_tests/date_string_validation.test.d.ts.map +1 -0
  315. package/lib/cjs/tests/unit_tests/date_string_validation.test.js +112 -0
  316. package/lib/cjs/tests/unit_tests/date_string_validation.test.js.map +1 -0
  317. package/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  318. package/lib/esm/sdk.d.ts +6 -5
  319. package/lib/esm/sdk.d.ts.map +1 -1
  320. package/lib/esm/sdk.js +5 -0
  321. package/lib/esm/sdk.js.map +1 -1
  322. package/lib/esm/tests/api_tests/ai_conversations.test.d.ts +14 -5
  323. package/lib/esm/tests/api_tests/ai_conversations.test.d.ts.map +1 -1
  324. package/lib/esm/tests/api_tests/ai_conversations.test.js +161 -148
  325. package/lib/esm/tests/api_tests/ai_conversations.test.js.map +1 -1
  326. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.d.ts +22 -0
  327. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.d.ts.map +1 -0
  328. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.js +510 -0
  329. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.js.map +1 -0
  330. package/lib/esm/tests/api_tests/appointment_link_expiration.test.d.ts +6 -5
  331. package/lib/esm/tests/api_tests/appointment_link_expiration.test.d.ts.map +1 -1
  332. package/lib/esm/tests/api_tests/appointment_link_expiration.test.js +132 -71
  333. package/lib/esm/tests/api_tests/appointment_link_expiration.test.js.map +1 -1
  334. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.d.ts +6 -5
  335. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.d.ts.map +1 -1
  336. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.js +238 -173
  337. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.js.map +1 -1
  338. package/lib/esm/tests/api_tests/availability_block_buffer.test.d.ts +22 -0
  339. package/lib/esm/tests/api_tests/availability_block_buffer.test.d.ts.map +1 -0
  340. package/lib/esm/tests/api_tests/availability_block_buffer.test.js +306 -0
  341. package/lib/esm/tests/api_tests/availability_block_buffer.test.js.map +1 -0
  342. package/lib/esm/tests/api_tests/beluga_manual_sync.test.d.ts +6 -5
  343. package/lib/esm/tests/api_tests/beluga_manual_sync.test.d.ts.map +1 -1
  344. package/lib/esm/tests/api_tests/beluga_manual_sync.test.js +232 -190
  345. package/lib/esm/tests/api_tests/beluga_manual_sync.test.js.map +1 -1
  346. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.d.ts +6 -5
  347. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.d.ts.map +1 -1
  348. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.js +348 -262
  349. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.js.map +1 -1
  350. package/lib/esm/tests/api_tests/bulk_assignment.test.d.ts +16 -5
  351. package/lib/esm/tests/api_tests/bulk_assignment.test.d.ts.map +1 -1
  352. package/lib/esm/tests/api_tests/bulk_assignment.test.js +333 -241
  353. package/lib/esm/tests/api_tests/bulk_assignment.test.js.map +1 -1
  354. package/lib/esm/tests/api_tests/calendar_event_references_update.test.d.ts +13 -5
  355. package/lib/esm/tests/api_tests/calendar_event_references_update.test.d.ts.map +1 -1
  356. package/lib/esm/tests/api_tests/calendar_event_references_update.test.js +129 -107
  357. package/lib/esm/tests/api_tests/calendar_event_references_update.test.js.map +1 -1
  358. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.d.ts +15 -5
  359. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.d.ts.map +1 -1
  360. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.js +238 -251
  361. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.js.map +1 -1
  362. package/lib/esm/tests/api_tests/chats_analytics.test.d.ts +14 -5
  363. package/lib/esm/tests/api_tests/chats_analytics.test.d.ts.map +1 -1
  364. package/lib/esm/tests/api_tests/chats_analytics.test.js +188 -188
  365. package/lib/esm/tests/api_tests/chats_analytics.test.js.map +1 -1
  366. package/lib/esm/tests/api_tests/concurrent_build_threads.test.d.ts +23 -5
  367. package/lib/esm/tests/api_tests/concurrent_build_threads.test.d.ts.map +1 -1
  368. package/lib/esm/tests/api_tests/concurrent_build_threads.test.js +119 -117
  369. package/lib/esm/tests/api_tests/concurrent_build_threads.test.js.map +1 -1
  370. package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts +21 -5
  371. package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts.map +1 -1
  372. package/lib/esm/tests/api_tests/configurations_public_read.test.js +233 -118
  373. package/lib/esm/tests/api_tests/configurations_public_read.test.js.map +1 -1
  374. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts +7 -0
  375. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts.map +1 -0
  376. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.js +351 -0
  377. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.js.map +1 -0
  378. package/lib/esm/tests/api_tests/create_note_action.test.d.ts +18 -5
  379. package/lib/esm/tests/api_tests/create_note_action.test.d.ts.map +1 -1
  380. package/lib/esm/tests/api_tests/create_note_action.test.js +216 -172
  381. package/lib/esm/tests/api_tests/create_note_action.test.js.map +1 -1
  382. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.d.ts +17 -4
  383. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.d.ts.map +1 -1
  384. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.js +141 -203
  385. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.js.map +1 -1
  386. package/lib/esm/tests/api_tests/custom_aggregation.test.d.ts +15 -5
  387. package/lib/esm/tests/api_tests/custom_aggregation.test.d.ts.map +1 -1
  388. package/lib/esm/tests/api_tests/custom_aggregation.test.js +282 -222
  389. package/lib/esm/tests/api_tests/custom_aggregation.test.js.map +1 -1
  390. package/lib/esm/tests/api_tests/database_cascade_delete.test.d.ts +13 -5
  391. package/lib/esm/tests/api_tests/database_cascade_delete.test.d.ts.map +1 -1
  392. package/lib/esm/tests/api_tests/database_cascade_delete.test.js +216 -241
  393. package/lib/esm/tests/api_tests/database_cascade_delete.test.js.map +1 -1
  394. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +21 -5
  395. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -1
  396. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js +165 -110
  397. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -1
  398. package/lib/esm/tests/api_tests/elation_user_id.test.d.ts +17 -5
  399. package/lib/esm/tests/api_tests/elation_user_id.test.d.ts.map +1 -1
  400. package/lib/esm/tests/api_tests/elation_user_id.test.js +119 -53
  401. package/lib/esm/tests/api_tests/elation_user_id.test.js.map +1 -1
  402. package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts +6 -5
  403. package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -1
  404. package/lib/esm/tests/api_tests/file_download_unicode_names.test.js +190 -141
  405. package/lib/esm/tests/api_tests/file_download_unicode_names.test.js.map +1 -1
  406. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.d.ts +7 -0
  407. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.d.ts.map +1 -0
  408. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.js +527 -0
  409. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.js.map +1 -0
  410. package/lib/esm/tests/api_tests/form_submitted_trigger.test.d.ts +25 -5
  411. package/lib/esm/tests/api_tests/form_submitted_trigger.test.d.ts.map +1 -1
  412. package/lib/esm/tests/api_tests/form_submitted_trigger.test.js +393 -365
  413. package/lib/esm/tests/api_tests/form_submitted_trigger.test.js.map +1 -1
  414. package/lib/esm/tests/api_tests/form_translations.test.d.ts +6 -5
  415. package/lib/esm/tests/api_tests/form_translations.test.d.ts.map +1 -1
  416. package/lib/esm/tests/api_tests/form_translations.test.js +268 -189
  417. package/lib/esm/tests/api_tests/form_translations.test.js.map +1 -1
  418. package/lib/esm/tests/api_tests/formsort_header_auth.test.d.ts +29 -5
  419. package/lib/esm/tests/api_tests/formsort_header_auth.test.d.ts.map +1 -1
  420. package/lib/esm/tests/api_tests/formsort_header_auth.test.js +177 -161
  421. package/lib/esm/tests/api_tests/formsort_header_auth.test.js.map +1 -1
  422. package/lib/esm/tests/api_tests/gcal_sync_retry.test.d.ts +12 -6
  423. package/lib/esm/tests/api_tests/gcal_sync_retry.test.d.ts.map +1 -1
  424. package/lib/esm/tests/api_tests/gcal_sync_retry.test.js +96 -83
  425. package/lib/esm/tests/api_tests/gcal_sync_retry.test.js.map +1 -1
  426. package/lib/esm/tests/api_tests/get_some_projection.test.d.ts +20 -5
  427. package/lib/esm/tests/api_tests/get_some_projection.test.d.ts.map +1 -1
  428. package/lib/esm/tests/api_tests/get_some_projection.test.js +339 -296
  429. package/lib/esm/tests/api_tests/get_some_projection.test.js.map +1 -1
  430. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -5
  431. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -1
  432. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js +292 -222
  433. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -1
  434. package/lib/esm/tests/api_tests/integrations_redacted.test.d.ts +6 -5
  435. package/lib/esm/tests/api_tests/integrations_redacted.test.d.ts.map +1 -1
  436. package/lib/esm/tests/api_tests/integrations_redacted.test.js +304 -211
  437. package/lib/esm/tests/api_tests/integrations_redacted.test.js.map +1 -1
  438. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -5
  439. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -1
  440. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js +177 -154
  441. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -1
  442. package/lib/esm/tests/api_tests/load_team_chat.test.d.ts.map +1 -1
  443. package/lib/esm/tests/api_tests/load_team_chat.test.js +181 -124
  444. package/lib/esm/tests/api_tests/load_team_chat.test.js.map +1 -1
  445. package/lib/esm/tests/api_tests/load_threads_autobuild.test.d.ts +24 -5
  446. package/lib/esm/tests/api_tests/load_threads_autobuild.test.d.ts.map +1 -1
  447. package/lib/esm/tests/api_tests/load_threads_autobuild.test.js +259 -226
  448. package/lib/esm/tests/api_tests/load_threads_autobuild.test.js.map +1 -1
  449. package/lib/esm/tests/api_tests/load_threads_care_team.test.d.ts +6 -0
  450. package/lib/esm/tests/api_tests/load_threads_care_team.test.d.ts.map +1 -1
  451. package/lib/esm/tests/api_tests/load_threads_care_team.test.js +115 -31
  452. package/lib/esm/tests/api_tests/load_threads_care_team.test.js.map +1 -1
  453. package/lib/esm/tests/api_tests/managed_content_file_access.test.d.ts +15 -5
  454. package/lib/esm/tests/api_tests/managed_content_file_access.test.d.ts.map +1 -1
  455. package/lib/esm/tests/api_tests/managed_content_file_access.test.js +283 -287
  456. package/lib/esm/tests/api_tests/managed_content_file_access.test.js.map +1 -1
  457. package/lib/esm/tests/api_tests/mdb_sort.test.d.ts +20 -5
  458. package/lib/esm/tests/api_tests/mdb_sort.test.d.ts.map +1 -1
  459. package/lib/esm/tests/api_tests/mdb_sort.test.js +358 -303
  460. package/lib/esm/tests/api_tests/mdb_sort.test.js.map +1 -1
  461. package/lib/esm/tests/api_tests/mdi_manual_sync.test.d.ts +27 -0
  462. package/lib/esm/tests/api_tests/mdi_manual_sync.test.d.ts.map +1 -0
  463. package/lib/esm/tests/api_tests/mdi_manual_sync.test.js +390 -0
  464. package/lib/esm/tests/api_tests/mdi_manual_sync.test.js.map +1 -0
  465. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -5
  466. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -1
  467. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js +257 -208
  468. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js.map +1 -1
  469. package/lib/esm/tests/api_tests/mdi_webhooks.test.d.ts +12 -5
  470. package/lib/esm/tests/api_tests/mdi_webhooks.test.d.ts.map +1 -1
  471. package/lib/esm/tests/api_tests/mdi_webhooks.test.js +65 -60
  472. package/lib/esm/tests/api_tests/mdi_webhooks.test.js.map +1 -1
  473. package/lib/esm/tests/api_tests/message_assignment_trigger.test.d.ts +23 -14
  474. package/lib/esm/tests/api_tests/message_assignment_trigger.test.d.ts.map +1 -1
  475. package/lib/esm/tests/api_tests/message_assignment_trigger.test.js +256 -305
  476. package/lib/esm/tests/api_tests/message_assignment_trigger.test.js.map +1 -1
  477. package/lib/esm/tests/api_tests/metriport_push_form_response.test.d.ts +6 -5
  478. package/lib/esm/tests/api_tests/metriport_push_form_response.test.d.ts.map +1 -1
  479. package/lib/esm/tests/api_tests/metriport_push_form_response.test.js +298 -236
  480. package/lib/esm/tests/api_tests/metriport_push_form_response.test.js.map +1 -1
  481. package/lib/esm/tests/api_tests/organization_api_keys.test.d.ts.map +1 -1
  482. package/lib/esm/tests/api_tests/organization_api_keys.test.js +226 -59
  483. package/lib/esm/tests/api_tests/organization_api_keys.test.js.map +1 -1
  484. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts +19 -5
  485. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -1
  486. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js +332 -220
  487. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js.map +1 -1
  488. package/lib/esm/tests/api_tests/organization_signup.test.d.ts.map +1 -1
  489. package/lib/esm/tests/api_tests/organization_signup.test.js +218 -51
  490. package/lib/esm/tests/api_tests/organization_signup.test.js.map +1 -1
  491. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.d.ts.map +1 -1
  492. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.js +109 -1
  493. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.js.map +1 -1
  494. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.d.ts +6 -6
  495. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.d.ts.map +1 -1
  496. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.js +308 -361
  497. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.js.map +1 -1
  498. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts +6 -5
  499. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
  500. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js +243 -163
  501. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
  502. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.d.ts +15 -5
  503. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.d.ts.map +1 -1
  504. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.js +127 -45
  505. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.js.map +1 -1
  506. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.d.ts +6 -5
  507. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.d.ts.map +1 -1
  508. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.js +177 -130
  509. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.js.map +1 -1
  510. package/lib/esm/tests/api_tests/programs.test.d.ts.map +1 -1
  511. package/lib/esm/tests/api_tests/programs.test.js +417 -50
  512. package/lib/esm/tests/api_tests/programs.test.js.map +1 -1
  513. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.d.ts +10 -5
  514. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.d.ts.map +1 -1
  515. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.js +399 -281
  516. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.js.map +1 -1
  517. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.d.ts +9 -5
  518. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.d.ts.map +1 -1
  519. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.js +225 -209
  520. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.js.map +1 -1
  521. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts +13 -8
  522. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts.map +1 -1
  523. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.js +268 -253
  524. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.js.map +1 -1
  525. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts +16 -6
  526. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts.map +1 -1
  527. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js +165 -141
  528. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js.map +1 -1
  529. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts +10 -5
  530. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts.map +1 -1
  531. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.js +294 -220
  532. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.js.map +1 -1
  533. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts +12 -5
  534. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
  535. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js +219 -215
  536. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js.map +1 -1
  537. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts +11 -5
  538. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts.map +1 -1
  539. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js +298 -202
  540. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js.map +1 -1
  541. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.d.ts +11 -5
  542. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.d.ts.map +1 -1
  543. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.js +413 -274
  544. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.js.map +1 -1
  545. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.d.ts +11 -5
  546. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.d.ts.map +1 -1
  547. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.js +345 -227
  548. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.js.map +1 -1
  549. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts +18 -7
  550. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts.map +1 -1
  551. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.js +162 -74
  552. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.js.map +1 -1
  553. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts +15 -9
  554. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts.map +1 -1
  555. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js +96 -100
  556. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js.map +1 -1
  557. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.d.ts +11 -5
  558. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.d.ts.map +1 -1
  559. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.js +129 -87
  560. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.js.map +1 -1
  561. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts +12 -5
  562. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts.map +1 -1
  563. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.js +187 -136
  564. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.js.map +1 -1
  565. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts +18 -16
  566. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -1
  567. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js +162 -123
  568. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js.map +1 -1
  569. package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.d.ts.map +1 -1
  570. package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.js +122 -2
  571. package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.js.map +1 -1
  572. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts +11 -5
  573. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts.map +1 -1
  574. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.js +285 -272
  575. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.js.map +1 -1
  576. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.d.ts +17 -10
  577. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.d.ts.map +1 -1
  578. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.js +171 -137
  579. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.js.map +1 -1
  580. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts +6 -5
  581. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts.map +1 -1
  582. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js +307 -263
  583. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js.map +1 -1
  584. package/lib/esm/tests/api_tests/security/webhook-timeout.test.d.ts +9 -5
  585. package/lib/esm/tests/api_tests/security/webhook-timeout.test.d.ts.map +1 -1
  586. package/lib/esm/tests/api_tests/security/webhook-timeout.test.js +105 -81
  587. package/lib/esm/tests/api_tests/security/webhook-timeout.test.js.map +1 -1
  588. package/lib/esm/tests/api_tests/stedi_approval.test.d.ts +6 -5
  589. package/lib/esm/tests/api_tests/stedi_approval.test.d.ts.map +1 -1
  590. package/lib/esm/tests/api_tests/stedi_approval.test.js +204 -136
  591. package/lib/esm/tests/api_tests/stedi_approval.test.js.map +1 -1
  592. package/lib/esm/tests/api_tests/ticket_stage_archive.test.d.ts +7 -0
  593. package/lib/esm/tests/api_tests/ticket_stage_archive.test.d.ts.map +1 -0
  594. package/lib/esm/tests/api_tests/ticket_stage_archive.test.js +339 -0
  595. package/lib/esm/tests/api_tests/ticket_stage_archive.test.js.map +1 -0
  596. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts +6 -5
  597. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts.map +1 -1
  598. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.js +162 -147
  599. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.js.map +1 -1
  600. package/lib/esm/tests/api_tests/translations.test.d.ts +6 -5
  601. package/lib/esm/tests/api_tests/translations.test.d.ts.map +1 -1
  602. package/lib/esm/tests/api_tests/translations.test.js +102 -74
  603. package/lib/esm/tests/api_tests/translations.test.js.map +1 -1
  604. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.d.ts +21 -4
  605. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.d.ts.map +1 -1
  606. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.js +236 -369
  607. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.js.map +1 -1
  608. package/lib/esm/tests/api_tests/user_preferences.test.d.ts +30 -0
  609. package/lib/esm/tests/api_tests/user_preferences.test.d.ts.map +1 -0
  610. package/lib/esm/tests/api_tests/user_preferences.test.js +274 -0
  611. package/lib/esm/tests/api_tests/user_preferences.test.js.map +1 -0
  612. package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts +17 -5
  613. package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -1
  614. package/lib/esm/tests/api_tests/webhook_error_handling.test.js +202 -194
  615. package/lib/esm/tests/api_tests/webhook_error_handling.test.js.map +1 -1
  616. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.d.ts +15 -5
  617. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.d.ts.map +1 -1
  618. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.js +152 -178
  619. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.js.map +1 -1
  620. package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts +6 -5
  621. package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
  622. package/lib/esm/tests/api_tests/welle_partner_token.test.js +391 -250
  623. package/lib/esm/tests/api_tests/welle_partner_token.test.js.map +1 -1
  624. package/lib/esm/tests/setup_isolated.d.ts +7 -0
  625. package/lib/esm/tests/setup_isolated.d.ts.map +1 -1
  626. package/lib/esm/tests/setup_isolated.js.map +1 -1
  627. package/lib/esm/tests/tests.d.ts.map +1 -1
  628. package/lib/esm/tests/tests.js +229 -461
  629. package/lib/esm/tests/tests.js.map +1 -1
  630. package/lib/esm/tests/unit_tests/date_string_validation.test.d.ts +2 -0
  631. package/lib/esm/tests/unit_tests/date_string_validation.test.d.ts.map +1 -0
  632. package/lib/esm/tests/unit_tests/date_string_validation.test.js +108 -0
  633. package/lib/esm/tests/unit_tests/date_string_validation.test.js.map +1 -0
  634. package/lib/tsconfig.tsbuildinfo +1 -1
  635. package/package.json +10 -10
  636. package/src/sdk.ts +14 -3
  637. package/src/tests/api_tests/ai_conversations.test.ts +170 -138
  638. package/src/tests/api_tests/ai_conversations_agent_message.test.ts +491 -0
  639. package/src/tests/api_tests/appointment_link_expiration.test.ts +94 -35
  640. package/src/tests/api_tests/appointment_no_showed_trigger.test.ts +181 -128
  641. package/src/tests/api_tests/availability_block_buffer.test.ts +286 -0
  642. package/src/tests/api_tests/beluga_manual_sync.test.ts +103 -53
  643. package/src/tests/api_tests/beluga_trigger_refill.test.ts +131 -46
  644. package/src/tests/api_tests/bulk_assignment.test.ts +307 -220
  645. package/src/tests/api_tests/calendar_event_references_update.test.ts +97 -54
  646. package/src/tests/api_tests/calendar_event_webhook_template.test.ts +198 -158
  647. package/src/tests/api_tests/chats_analytics.test.ts +161 -123
  648. package/src/tests/api_tests/concurrent_build_threads.test.ts +80 -69
  649. package/src/tests/api_tests/configurations_public_read.test.ts +154 -67
  650. package/src/tests/api_tests/copied_form_response_no_enduser_sync.test.ts +307 -0
  651. package/src/tests/api_tests/create_note_action.test.ts +149 -70
  652. package/src/tests/api_tests/create_user_notifications_trigger.test.ts +116 -144
  653. package/src/tests/api_tests/custom_aggregation.test.ts +163 -92
  654. package/src/tests/api_tests/database_cascade_delete.test.ts +101 -87
  655. package/src/tests/api_tests/dont_sync_to_elation_form_submission.test.ts +122 -51
  656. package/src/tests/api_tests/elation_user_id.test.ts +105 -42
  657. package/src/tests/api_tests/file_download_unicode_names.test.ts +171 -122
  658. package/src/tests/api_tests/form_intake_email_normalization.test.ts +489 -0
  659. package/src/tests/api_tests/form_submitted_trigger.test.ts +152 -86
  660. package/src/tests/api_tests/form_translations.test.ts +117 -48
  661. package/src/tests/api_tests/formsort_header_auth.test.ts +147 -97
  662. package/src/tests/api_tests/gcal_sync_retry.test.ts +71 -49
  663. package/src/tests/api_tests/get_some_projection.test.ts +333 -169
  664. package/src/tests/api_tests/group_event_attendee_self_update.test.ts +103 -52
  665. package/src/tests/api_tests/integrations_redacted.test.ts +161 -84
  666. package/src/tests/api_tests/journey_delete_cancels_actions.test.ts +93 -64
  667. package/src/tests/api_tests/load_team_chat.test.ts +62 -6
  668. package/src/tests/api_tests/load_threads_autobuild.test.ts +163 -67
  669. package/src/tests/api_tests/load_threads_care_team.test.ts +103 -0
  670. package/src/tests/api_tests/managed_content_file_access.test.ts +132 -108
  671. package/src/tests/api_tests/mdb_sort.test.ts +247 -161
  672. package/src/tests/api_tests/mdi_manual_sync.test.ts +277 -0
  673. package/src/tests/api_tests/mdi_trigger_refill.test.ts +132 -78
  674. package/src/tests/api_tests/mdi_webhooks.test.ts +52 -22
  675. package/src/tests/api_tests/message_assignment_trigger.test.ts +129 -155
  676. package/src/tests/api_tests/metriport_push_form_response.test.ts +109 -49
  677. package/src/tests/api_tests/organization_api_keys.test.ts +170 -2
  678. package/src/tests/api_tests/organization_settings_duplicates.test.ts +291 -181
  679. package/src/tests/api_tests/organization_signup.test.ts +170 -5
  680. package/src/tests/api_tests/out_of_office_endpoint.test.ts +98 -0
  681. package/src/tests/api_tests/outbound_chat_sent_trigger.test.ts +163 -175
  682. package/src/tests/api_tests/phone_calls_cold_transfer.test.ts +195 -133
  683. package/src/tests/api_tests/phone_calls_conference_hold.test.ts +112 -42
  684. package/src/tests/api_tests/phone_tree_enduser_condition.test.ts +81 -32
  685. package/src/tests/api_tests/programs.test.ts +350 -0
  686. package/src/tests/api_tests/security/ai-conversations-rbac.test.ts +248 -128
  687. package/src/tests/api_tests/security/automated-actions-process-gate.test.ts +47 -42
  688. package/src/tests/api_tests/security/booking-info-idor-token-mint.test.ts +53 -45
  689. package/src/tests/api_tests/security/cascade-role-rename-cross-tenant.test.ts +100 -73
  690. package/src/tests/api_tests/security/data-sync-redaction-bypass.test.ts +125 -59
  691. package/src/tests/api_tests/security/develop-health-benefit-verification-rbac.test.ts +131 -103
  692. package/src/tests/api_tests/security/enduser-ai-summary-trust-gate.test.ts +161 -68
  693. package/src/tests/api_tests/security/enduser-cross-create.test.ts +200 -61
  694. package/src/tests/api_tests/security/enduser-write-restrictions.test.ts +179 -61
  695. package/src/tests/api_tests/security/globalunique-conflict-redaction.test.ts +163 -44
  696. package/src/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.ts +78 -70
  697. package/src/tests/api_tests/security/load-inbox-redaction.test.ts +79 -44
  698. package/src/tests/api_tests/security/proxy-image-unauth-ssrf.test.ts +95 -52
  699. package/src/tests/api_tests/security/register_business_id_injection.test.ts +132 -93
  700. package/src/tests/api_tests/security/sanitize-user-html-with-iframes.test.ts +127 -0
  701. package/src/tests/api_tests/security/schema-adminonly-enforcement.test.ts +42 -37
  702. package/src/tests/api_tests/security/self-admin-role-assignment.test.ts +92 -54
  703. package/src/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.ts +76 -34
  704. package/src/tests/api_tests/security/webhook-timeout.test.ts +67 -36
  705. package/src/tests/api_tests/stedi_approval.test.ts +156 -90
  706. package/src/tests/api_tests/ticket_stage_archive.test.ts +314 -0
  707. package/src/tests/api_tests/tickets_bulk_assign_care_team.test.ts +138 -103
  708. package/src/tests/api_tests/translations.test.ts +69 -46
  709. package/src/tests/api_tests/trigger_set_fields_date_difference.test.ts +198 -256
  710. package/src/tests/api_tests/user_preferences.test.ts +227 -0
  711. package/src/tests/api_tests/webhook_error_handling.test.ts +121 -60
  712. package/src/tests/api_tests/webhook_raw_json_number.test.ts +127 -109
  713. package/src/tests/api_tests/welle_partner_token.test.ts +217 -90
  714. package/src/tests/setup_isolated.ts +7 -0
  715. package/src/tests/tests.ts +41 -147
  716. package/src/tests/{api_tests → unit_tests}/date_string_validation.test.ts +2 -23
  717. package/test_generated.pdf +0 -0
@@ -36,23 +36,31 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  }
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.welle_partner_token_tests = void 0;
39
+ exports.ISOLATED_SUITE = exports.welle_partner_token_tests = exports.welle_partner_token_checks = void 0;
40
40
  require('source-map-support').install();
41
41
  var crypto_1 = require("crypto");
42
42
  var sdk_1 = require("../../sdk");
43
- var testing_1 = require("@tellescope/testing");
44
43
  var constants_1 = require("@tellescope/constants");
45
- var setup_1 = require("../setup");
44
+ var setup_isolated_1 = require("../setup_isolated");
46
45
  var host = process.env.API_URL || 'http://localhost:8080';
46
+ var RAND = function () { return Math.random().toString(36).slice(2, 10); };
47
47
  var SIGNING_KEY = 'welle_test_signing_key_do_not_use_in_prod';
48
48
  var HEALTHIE_PATIENT_ID = '999888777';
49
49
  // decoding needs no dependency: these tests assert on CLAIMS, and verify the signature separately with crypto
50
50
  var decode_jwt_header = function (token) { return (JSON.parse(Buffer.from(token.split('.')[0], 'base64url').toString())); };
51
51
  var decode_jwt_payload = function (token) { return JSON.parse(Buffer.from(token.split('.')[1], 'base64url').toString()); };
52
52
  var sign_hs256 = function (signingInput, key) { return ((0, crypto_1.createHmac)('sha256', key).update(signingInput).digest('base64url')); };
53
- // reset_db does NOT clear integrations, so a crashed prior run can leave a Welle record behind.
54
- // The partner-token branch does findOne({ title: WELLE_TITLE }), so a stray record would make the
55
- // "disconnected" assertion pass spuriously — clear them all rather than only the one we created.
53
+ /**
54
+ * Deletes this tenant's Welle integration records.
55
+ *
56
+ * Scenario 7 below (the "disconnected" rejection) is what needs it: the partner-token branch does
57
+ * findOne({ title: WELLE_TITLE }), so the record has to be gone for that assertion to mean anything.
58
+ * It is deliberately a delete-by-title rather than a delete of the id created here, because
59
+ * add_api_key_integration later creates a second record the same way the product does.
60
+ *
61
+ * On a provisioned tenant it can only ever see this suite's own records — on the shared organization
62
+ * it deleted other suites' Welle integrations too, which is one of the reasons this suite moved.
63
+ */
56
64
  var delete_all_welle_integrations = function (sdk) { return __awaiter(void 0, void 0, void 0, function () {
57
65
  var existing, _i, _a, integration;
58
66
  return __generator(this, function (_b) {
@@ -76,270 +84,404 @@ var delete_all_welle_integrations = function (sdk) { return __awaiter(void 0, vo
76
84
  }
77
85
  });
78
86
  }); };
79
- var welle_partner_token_tests = function (_a) {
80
- var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
81
- return __awaiter(void 0, void 0, void 0, function () {
82
- var suffix, linkedEmail, unlinkedEmail, linkedId, unlinkedId, linked, unlinked, linkedSDK_1, unlinkedSDK_1, issuedToken_1, _b, header, payload, signature, _i, _c, id;
83
- return __generator(this, function (_d) {
84
- switch (_d.label) {
85
- case 0:
86
- (0, testing_1.log_header)("Welle Partner Token Tests");
87
- suffix = Math.random().toString(36).slice(2, 10);
88
- linkedEmail = "welle.linked.".concat(suffix, "@tellescope.com");
89
- unlinkedEmail = "welle.unlinked.".concat(suffix, "@tellescope.com");
90
- linkedId = '';
91
- unlinkedId = '';
92
- _d.label = 1;
93
- case 1:
94
- _d.trys.push([1, , 27, 34]);
95
- return [4 /*yield*/, delete_all_welle_integrations(sdk)];
96
- case 2:
97
- _d.sent();
98
- return [4 /*yield*/, sdk.api.integrations.createOne({
99
- title: constants_1.WELLE_TITLE,
100
- authentication: {
101
- type: 'apiKey',
102
- info: {
103
- access_token: SIGNING_KEY,
104
- refresh_token: 'unused',
105
- scope: '',
106
- token_type: 'Bearer',
107
- expiry_date: 0,
108
- },
87
+ // Welle partner-token (SSO launch) coverage: HS256 claims for a Healthie-linked patient, jti
88
+ // uniqueness, the 60s expiry, the non-forgeable subject, the disconnected / unlinked / staff-session
89
+ // rejections, and the real add_api_key_integration / remove_api_key_integration connect paths.
90
+ //
91
+ // Runs on its own provisioned tenant, so no pre-run "clear every Welle record in the org" reset is
92
+ // needed and no other suite's integrations are ever touched.
93
+ var welle_partner_token_checks = function () { return __awaiter(void 0, void 0, void 0, function () {
94
+ var checks, record, describe, errorMessage, expect_result, expect_rejected, record_sync, tenant, suffix, linkedEmail, unlinkedEmail, linkedId, unlinkedId, sdk_2, sdkNonAdmin_1, businessId_1, linked, unlinked, enduser_session, linkedSDK_1, unlinkedSDK_1, issuedToken_1, sdk, businessId, _i, _a, id, e_1;
95
+ return __generator(this, function (_b) {
96
+ switch (_b.label) {
97
+ case 0:
98
+ checks = [];
99
+ record = function (label, pass, detail) { return checks.push({ label: label, pass: pass, detail: detail }); };
100
+ describe = function (value) {
101
+ if (value === undefined || value === null)
102
+ return String(value);
103
+ var stringified = JSON.stringify(value);
104
+ return stringified === undefined ? String(value) : stringified;
105
+ };
106
+ errorMessage = function (e) { return (typeof (e === null || e === void 0 ? void 0 : e.message) === 'string' && e.message !== '' ? e.message : describe(e)); };
107
+ expect_result = function (label, fn, onResult) { return __awaiter(void 0, void 0, void 0, function () {
108
+ var resolved, e_2, value;
109
+ var _a;
110
+ return __generator(this, function (_b) {
111
+ switch (_b.label) {
112
+ case 0:
113
+ _b.trys.push([0, 2, , 3]);
114
+ _a = {};
115
+ return [4 /*yield*/, fn()];
116
+ case 1:
117
+ resolved = (_a.value = _b.sent(), _a);
118
+ return [3 /*break*/, 3];
119
+ case 2:
120
+ e_2 = _b.sent();
121
+ record(label, false, "rejected instead of resolving: ".concat(errorMessage(e_2)));
122
+ return [2 /*return*/];
123
+ case 3:
124
+ value = resolved.value;
125
+ try {
126
+ record(label, onResult(value), "result=".concat(describe(value)));
127
+ }
128
+ catch (predicateError) {
129
+ record(label, false, "predicate threw on result=".concat(describe(value), ": ").concat(errorMessage(predicateError)));
130
+ }
131
+ return [2 /*return*/];
132
+ }
133
+ });
134
+ }); };
135
+ expect_rejected = function (label, fn, onError) {
136
+ if (onError === void 0) { onError = function () { return true; }; }
137
+ return __awaiter(void 0, void 0, void 0, function () {
138
+ var rejection, unexpected, e_3;
139
+ return __generator(this, function (_a) {
140
+ switch (_a.label) {
141
+ case 0:
142
+ _a.trys.push([0, 2, , 3]);
143
+ return [4 /*yield*/, fn()];
144
+ case 1:
145
+ unexpected = _a.sent();
146
+ record(label, false, "resolved instead of rejecting; result=".concat(describe(unexpected)));
147
+ return [2 /*return*/];
148
+ case 2:
149
+ e_3 = _a.sent();
150
+ rejection = { e: e_3 };
151
+ return [3 /*break*/, 3];
152
+ case 3:
153
+ // Outside the catch on purpose: a predicate that throws here would otherwise escape the suite
154
+ // and, per run_isolated_in_parallel, abort every remaining batch instead of failing one check.
155
+ try {
156
+ record(label, onError(rejection.e), "rejected with ".concat(errorMessage(rejection.e)));
157
+ }
158
+ catch (predicateError) {
159
+ record(label, false, "predicate threw on rejection ".concat(errorMessage(rejection.e), ": ").concat(errorMessage(predicateError)));
160
+ }
161
+ return [2 /*return*/];
162
+ }
163
+ });
164
+ });
165
+ };
166
+ record_sync = function (label, evaluate) {
167
+ try {
168
+ var _a = evaluate(), pass = _a.pass, detail = _a.detail;
169
+ record(label, pass, detail);
170
+ }
171
+ catch (e) {
172
+ record(label, false, "evaluation threw: ".concat(errorMessage(e)));
173
+ }
174
+ };
175
+ suffix = RAND();
176
+ linkedEmail = "welle.linked.".concat(suffix, "@tellescope.com");
177
+ unlinkedEmail = "welle.unlinked.".concat(suffix, "@tellescope.com");
178
+ linkedId = '';
179
+ unlinkedId = '';
180
+ _b.label = 1;
181
+ case 1:
182
+ _b.trys.push([1, , 27, 37]);
183
+ return [4 /*yield*/, (0, setup_isolated_1.setup_isolated_tenant)({
184
+ name: "Welle partner token ".concat(RAND()),
185
+ apiKeys: 0,
186
+ })];
187
+ case 2:
188
+ // the default user spec provisions an Admin plus a non-admin — sdkNonAdmin is the staff session
189
+ // checked below, which must also not be served a partner token
190
+ tenant = _b.sent();
191
+ sdk_2 = tenant.sdk, sdkNonAdmin_1 = tenant.sdkNonAdmin, businessId_1 = tenant.businessId;
192
+ return [4 /*yield*/, sdk_2.api.integrations.createOne({
193
+ title: constants_1.WELLE_TITLE,
194
+ authentication: {
195
+ type: 'apiKey',
196
+ info: {
197
+ access_token: SIGNING_KEY,
198
+ refresh_token: 'unused',
199
+ scope: '',
200
+ token_type: 'Bearer',
201
+ expiry_date: 0,
109
202
  },
110
- })
111
- // an enduser linked to Healthie — eligible for a partner token
112
- ];
113
- case 3:
114
- _d.sent();
115
- return [4 /*yield*/, sdk.api.endusers.createOne({ email: linkedEmail, fname: 'Welle', lname: 'Linked' })];
116
- case 4:
117
- linked = _d.sent();
118
- linkedId = linked.id;
119
- return [4 /*yield*/, sdk.api.endusers.updateOne(linkedId, { references: [{ type: constants_1.HEALTHIE_TITLE, id: HEALTHIE_PATIENT_ID }] }, { replaceObjectFields: true })
120
- // an enduser with no Healthie reference
121
- ];
122
- case 5:
123
- _d.sent();
124
- return [4 /*yield*/, sdk.api.endusers.createOne({ email: unlinkedEmail, fname: 'Welle', lname: 'Unlinked' })];
125
- case 6:
126
- unlinked = _d.sent();
127
- unlinkedId = unlinked.id;
128
- linkedSDK_1 = new sdk_1.EnduserSession({ host: host, businessId: sdk.userInfo.businessId });
129
- return [4 /*yield*/, (0, setup_1.authenticate_enduser_via_token)(sdk, linkedSDK_1, { email: linkedEmail })];
130
- case 7:
131
- _d.sent();
132
- unlinkedSDK_1 = new sdk_1.EnduserSession({ host: host, businessId: sdk.userInfo.businessId });
133
- return [4 /*yield*/, (0, setup_1.authenticate_enduser_via_token)(sdk, unlinkedSDK_1, { email: unlinkedEmail })
134
- // 1) happy path — claims are correct
135
- ];
136
- case 8:
137
- _d.sent();
138
- issuedToken_1 = '';
139
- return [4 /*yield*/, (0, testing_1.async_test)("enduser can mint a Welle partner token with the expected claims", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { onResult: function (r) {
140
- var _a;
141
- issuedToken_1 = (_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token;
142
- if (!issuedToken_1)
143
- return false;
144
- var header = decode_jwt_header(issuedToken_1);
145
- var payload = decode_jwt_payload(issuedToken_1);
146
- var expectedExp = Math.floor(Date.now() / 1000) + 60;
147
- return (header.alg === 'HS256'
148
- && payload.sub === HEALTHIE_PATIENT_ID
149
- && payload.iss === 'tellescope'
150
- && payload.aud === 'welle:sso-launch'
151
- && typeof payload.jti === 'string' && payload.jti.length > 0
152
- && Math.abs(payload.exp - expectedExp) < 10);
153
- } })
154
- // each launch gets a unique jti
155
- ];
156
- case 9:
157
- _d.sent();
158
- // each launch gets a unique jti
159
- return [4 /*yield*/, (0, testing_1.async_test)("back-to-back tokens carry distinct jti values", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { onResult: function (r) {
160
- var _a;
161
- var second = (_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token;
162
- if (!second)
163
- return false;
164
- return decode_jwt_payload(second).jti !== decode_jwt_payload(issuedToken_1).jti;
165
- } })
166
- // optional deep-link target — allowlisted value is echoed as a claim
167
- ];
168
- case 10:
203
+ },
204
+ })
205
+ // an enduser linked to Healthie — eligible for a partner token
206
+ ];
207
+ case 3:
208
+ _b.sent();
209
+ return [4 /*yield*/, sdk_2.api.endusers.createOne({ email: linkedEmail, fname: 'Welle', lname: 'Linked' })];
210
+ case 4:
211
+ linked = _b.sent();
212
+ linkedId = linked.id;
213
+ return [4 /*yield*/, sdk_2.api.endusers.updateOne(linkedId, { references: [{ type: constants_1.HEALTHIE_TITLE, id: HEALTHIE_PATIENT_ID }] }, { replaceObjectFields: true })
214
+ // an enduser with no Healthie reference
215
+ ];
216
+ case 5:
217
+ _b.sent();
218
+ return [4 /*yield*/, sdk_2.api.endusers.createOne({ email: unlinkedEmail, fname: 'Welle', lname: 'Unlinked' })];
219
+ case 6:
220
+ unlinked = _b.sent();
221
+ unlinkedId = unlinked.id;
222
+ enduser_session = function (filter) { return __awaiter(void 0, void 0, void 0, function () {
223
+ var enduserSDK, _a, authToken, enduser;
224
+ return __generator(this, function (_b) {
225
+ switch (_b.label) {
226
+ case 0:
227
+ enduserSDK = new sdk_1.EnduserSession({ host: host, businessId: businessId_1 });
228
+ return [4 /*yield*/, sdk_2.api.endusers.generate_auth_token(filter)];
229
+ case 1:
230
+ _a = _b.sent(), authToken = _a.authToken, enduser = _a.enduser;
231
+ return [4 /*yield*/, enduserSDK.handle_new_session({ authToken: authToken, enduser: enduser })];
232
+ case 2:
233
+ _b.sent();
234
+ return [2 /*return*/, enduserSDK];
235
+ }
236
+ });
237
+ }); };
238
+ return [4 /*yield*/, enduser_session({ email: linkedEmail })];
239
+ case 7:
240
+ linkedSDK_1 = _b.sent();
241
+ return [4 /*yield*/, enduser_session({ email: unlinkedEmail })
242
+ // 1) happy path — claims are correct
243
+ ];
244
+ case 8:
245
+ unlinkedSDK_1 = _b.sent();
246
+ issuedToken_1 = '';
247
+ return [4 /*yield*/, expect_result("enduser can mint a Welle partner token with the expected claims", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, function (r) {
248
+ var _a;
249
+ issuedToken_1 = (_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token;
250
+ if (!issuedToken_1)
251
+ return false;
252
+ var header = decode_jwt_header(issuedToken_1);
253
+ var payload = decode_jwt_payload(issuedToken_1);
254
+ var expectedExp = Math.floor(Date.now() / 1000) + 60;
255
+ return (header.alg === 'HS256'
256
+ && payload.sub === HEALTHIE_PATIENT_ID
257
+ && payload.iss === 'tellescope'
258
+ && payload.aud === 'welle:sso-launch'
259
+ && typeof payload.jti === 'string' && payload.jti.length > 0
260
+ && Math.abs(payload.exp - expectedExp) < 10);
261
+ })
169
262
  // each launch gets a unique jti
170
- _d.sent();
171
- // optional deep-link target — allowlisted value is echoed as a claim
172
- return [4 /*yield*/, (0, testing_1.async_test)("target: 'plan' is included as a target claim", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token', target: 'plan' }); }, { onResult: function (r) {
173
- var _a;
174
- return (!!((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token) && decode_jwt_payload(r.data.token).target === 'plan');
175
- } })
176
- // omitted target → no target claim at all (the happy-path token above was minted without one)
177
- ];
178
- case 11:
263
+ ];
264
+ case 9:
265
+ _b.sent();
266
+ // each launch gets a unique jti
267
+ return [4 /*yield*/, expect_result("back-to-back tokens carry distinct jti values", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, function (r) {
268
+ var _a;
269
+ var second = (_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token;
270
+ if (!second || !issuedToken_1)
271
+ return false;
272
+ return decode_jwt_payload(second).jti !== decode_jwt_payload(issuedToken_1).jti;
273
+ })
179
274
  // optional deep-link target — allowlisted value is echoed as a claim
180
- _d.sent();
275
+ ];
276
+ case 10:
277
+ // each launch gets a unique jti
278
+ _b.sent();
279
+ // optional deep-link target — allowlisted value is echoed as a claim
280
+ return [4 /*yield*/, expect_result("target: 'plan' is included as a target claim", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token', target: 'plan' }); }, function (r) { var _a; return !!((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token) && decode_jwt_payload(r.data.token).target === 'plan'; })
181
281
  // omitted target → no target claim at all (the happy-path token above was minted without one)
182
- (0, testing_1.assert)(decode_jwt_payload(issuedToken_1).target === undefined, "token minted without a target has a target claim", "token minted without a target has no target claim");
183
- // non-allowlisted target is rejected at the API boundary by schema validation
184
- return [4 /*yield*/, (0, testing_1.async_test)("invalid target is rejected by schema validation", function () { return linkedSDK_1.api.integrations.proxy_read({
185
- integration: constants_1.WELLE_TITLE,
186
- type: 'partner-redirect-token',
187
- target: 'admin',
188
- }); }, { shouldError: true, onError: function () { return true; } })
189
- // 2) the signature is real — verifies against the stored signing key, and only that key
190
- ];
191
- case 12:
192
- // non-allowlisted target is rejected at the API boundary by schema validation
193
- _d.sent();
194
- _b = issuedToken_1.split('.'), header = _b[0], payload = _b[1], signature = _b[2];
195
- (0, testing_1.assert)(sign_hs256("".concat(header, ".").concat(payload), SIGNING_KEY) === signature, "token signature does not verify against the stored Welle signing key", "token is signed with the organization's Welle signing key");
196
- (0, testing_1.assert)(sign_hs256("".concat(header, ".").concat(payload), "".concat(SIGNING_KEY, "_wrong")) !== signature, "token signature verified against the WRONG key", "token signature does not verify against a different key");
197
- // 3) the subject is non-forgeable — the branch ignores the id param and uses the session's enduser
198
- return [4 /*yield*/, (0, testing_1.async_test)("enduser cannot mint a token for another enduser by passing id", function () { return linkedSDK_1.api.integrations.proxy_read({
199
- integration: constants_1.WELLE_TITLE,
200
- type: 'partner-redirect-token',
201
- id: unlinkedId,
202
- }); }, { onResult: function (r) {
203
- var _a;
204
- return (!!((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token) && decode_jwt_payload(r.data.token).sub === HEALTHIE_PATIENT_ID);
205
- } })
206
- // 4) an enduser with no Healthie reference gets no token
207
- ];
208
- case 13:
209
- // 3) the subject is non-forgeable — the branch ignores the id param and uses the session's enduser
210
- _d.sent();
211
- // 4) an enduser with no Healthie reference gets no token
212
- return [4 /*yield*/, (0, testing_1.async_test)("enduser without a Healthie reference cannot mint a token", function () { return unlinkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { shouldError: true, onError: function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('enduser has no Healthie reference'); } })
213
- // 5) staff sessions are not served by this branch (it is enduser-gated) — falls through to an empty result
214
- ];
215
- case 14:
282
+ ];
283
+ case 11:
284
+ // optional deep-link target — allowlisted value is echoed as a claim
285
+ _b.sent();
286
+ // omitted target → no target claim at all (the happy-path token above was minted without one)
287
+ record_sync("token minted without a target has no target claim", function () { return ({
288
+ pass: !!issuedToken_1 && decode_jwt_payload(issuedToken_1).target === undefined,
289
+ detail: issuedToken_1
290
+ ? "target=".concat(describe(decode_jwt_payload(issuedToken_1).target))
291
+ : 'no token was minted above, so the claim could not be read',
292
+ }); });
293
+ // non-allowlisted target is rejected at the API boundary by schema validation
294
+ return [4 /*yield*/, expect_rejected("invalid target is rejected by schema validation", function () { return linkedSDK_1.api.integrations.proxy_read({
295
+ integration: constants_1.WELLE_TITLE,
296
+ type: 'partner-redirect-token',
297
+ target: 'admin',
298
+ }); })
299
+ // 2) the signature is real — verifies against the stored signing key, and only that key
300
+ ];
301
+ case 12:
302
+ // non-allowlisted target is rejected at the API boundary by schema validation
303
+ _b.sent();
304
+ // 2) the signature is real — verifies against the stored signing key, and only that key
305
+ record_sync("token is signed with the organization's Welle signing key", function () {
306
+ if (!issuedToken_1)
307
+ return { pass: false, detail: 'no token was minted above, so the signature could not be checked' };
308
+ var _a = issuedToken_1.split('.'), header = _a[0], payload = _a[1], signature = _a[2];
309
+ return {
310
+ pass: sign_hs256("".concat(header, ".").concat(payload), SIGNING_KEY) === signature,
311
+ detail: "signature=".concat(describe(signature)),
312
+ };
313
+ });
314
+ record_sync("token signature does not verify against a different key", function () {
315
+ if (!issuedToken_1)
316
+ return { pass: false, detail: 'no token was minted above, so the signature could not be checked' };
317
+ var _a = issuedToken_1.split('.'), header = _a[0], payload = _a[1], signature = _a[2];
318
+ return {
319
+ pass: sign_hs256("".concat(header, ".").concat(payload), "".concat(SIGNING_KEY, "_wrong")) !== signature,
320
+ detail: "signature=".concat(describe(signature)),
321
+ };
322
+ });
323
+ // 3) the subject is non-forgeable — the branch ignores the id param and uses the session's enduser
324
+ return [4 /*yield*/, expect_result("enduser cannot mint a token for another enduser by passing id", function () { return linkedSDK_1.api.integrations.proxy_read({
325
+ integration: constants_1.WELLE_TITLE,
326
+ type: 'partner-redirect-token',
327
+ id: unlinkedId,
328
+ }); }, function (r) { var _a; return !!((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token) && decode_jwt_payload(r.data.token).sub === HEALTHIE_PATIENT_ID; })
216
329
  // 4) an enduser with no Healthie reference gets no token
217
- _d.sent();
218
- // 5) staff sessions are not served by this branch (it is enduser-gated) — falls through to an empty result
219
- return [4 /*yield*/, (0, testing_1.async_test)("admin user session is not issued a Welle partner token", function () { return sdk.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { onResult: function (r) { var _a; return !((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token); } })];
220
- case 15:
330
+ ];
331
+ case 13:
332
+ // 3) the subject is non-forgeable — the branch ignores the id param and uses the session's enduser
333
+ _b.sent();
334
+ // 4) an enduser with no Healthie reference gets no token
335
+ return [4 /*yield*/, expect_rejected("enduser without a Healthie reference cannot mint a token", function () { return unlinkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('enduser has no Healthie reference'); })
221
336
  // 5) staff sessions are not served by this branch (it is enduser-gated) — falls through to an empty result
222
- _d.sent();
223
- return [4 /*yield*/, (0, testing_1.async_test)("non-admin user session is not issued a Welle partner token", function () { return sdkNonAdmin.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { onResult: function (r) { var _a; return !((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token); } })
224
- // 6) no other Welle proxy_read type is reachable by an enduser
225
- ];
226
- case 16:
227
- _d.sent();
228
- // 6) no other Welle proxy_read type is reachable by an enduser
229
- return [4 /*yield*/, (0, testing_1.async_test)("enduser cannot read other Welle proxy types", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'anything-else' }); }, { shouldError: true, onError: function (e) { return (((e === null || e === void 0 ? void 0 : e.message) || '').includes('enduser session type not valid for this integration type')); } })
230
- // 7) with the integration disconnected, no token can be minted
231
- ];
232
- case 17:
337
+ ];
338
+ case 14:
339
+ // 4) an enduser with no Healthie reference gets no token
340
+ _b.sent();
341
+ // 5) staff sessions are not served by this branch (it is enduser-gated) — falls through to an empty result
342
+ return [4 /*yield*/, expect_result("admin user session is not issued a Welle partner token", function () { return sdk_2.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, function (r) { var _a; return !((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token); })];
343
+ case 15:
344
+ // 5) staff sessions are not served by this branch (it is enduser-gated) — falls through to an empty result
345
+ _b.sent();
346
+ return [4 /*yield*/, expect_result("non-admin user session is not issued a Welle partner token", function () { return sdkNonAdmin_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, function (r) { var _a; return !((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token); })
233
347
  // 6) no other Welle proxy_read type is reachable by an enduser
234
- _d.sent();
235
- // 7) with the integration disconnected, no token can be minted
236
- return [4 /*yield*/, delete_all_welle_integrations(sdk)];
237
- case 18:
348
+ ];
349
+ case 16:
350
+ _b.sent();
351
+ // 6) no other Welle proxy_read type is reachable by an enduser
352
+ return [4 /*yield*/, expect_rejected("enduser cannot read other Welle proxy types", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'anything-else' }); }, function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('enduser session type not valid for this integration type'); })
238
353
  // 7) with the integration disconnected, no token can be minted
239
- _d.sent();
240
- return [4 /*yield*/, (0, testing_1.async_test)("no token is issued once the Welle integration is disconnected", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { shouldError: true, onError: function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('Welle integration not found'); } })
241
- // 8) the real connect path — add_api_key_integration, not integrations.createOne.
242
- // Welle has no credential-validation branch (an opaque HMAC key has nothing to authenticate
243
- // against), so unlike Canvas/Candid/MDI this endpoint makes no upstream call and is testable.
244
- ];
245
- case 19:
246
- _d.sent();
247
- // 8) the real connect path — add_api_key_integration, not integrations.createOne.
248
- // Welle has no credential-validation branch (an opaque HMAC key has nothing to authenticate
249
- // against), so unlike Canvas/Candid/MDI this endpoint makes no upstream call and is testable.
250
- return [4 /*yield*/, (0, testing_1.async_test)("add_api_key_integration connects Welle", function () { return sdk.api.integrations.add_api_key_integration({ integration: constants_1.WELLE_TITLE, API_KEY: SIGNING_KEY }); }, { onResult: function (r) { var _a; return ((_a = r === null || r === void 0 ? void 0 : r.integration) === null || _a === void 0 ? void 0 : _a.title) === constants_1.WELLE_TITLE; } })];
251
- case 20:
354
+ ];
355
+ case 17:
356
+ // 6) no other Welle proxy_read type is reachable by an enduser
357
+ _b.sent();
358
+ // 7) with the integration disconnected, no token can be minted
359
+ return [4 /*yield*/, delete_all_welle_integrations(sdk_2)];
360
+ case 18:
361
+ // 7) with the integration disconnected, no token can be minted
362
+ _b.sent();
363
+ return [4 /*yield*/, expect_rejected("no token is issued once the Welle integration is disconnected", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('Welle integration not found'); })
252
364
  // 8) the real connect path — add_api_key_integration, not integrations.createOne.
253
365
  // Welle has no credential-validation branch (an opaque HMAC key has nothing to authenticate
254
366
  // against), so unlike Canvas/Candid/MDI this endpoint makes no upstream call and is testable.
255
- _d.sent();
256
- return [4 /*yield*/, (0, testing_1.async_test)("add_api_key_integration sets hasConnectedWelle", function () { return sdk.api.organizations.getOne(sdk.userInfo.businessId); }, { onResult: function (o) { return (o === null || o === void 0 ? void 0 : o.hasConnectedWelle) === true; } })
257
- // the key stored by add_api_key_integration must land in the field the proxy_read branch reads
258
- // (authentication.info.access_token) — minting a verifiable token proves the two paths agree
259
- ];
260
- case 21:
261
- _d.sent();
262
- // the key stored by add_api_key_integration must land in the field the proxy_read branch reads
263
- // (authentication.info.access_token) — minting a verifiable token proves the two paths agree
264
- return [4 /*yield*/, (0, testing_1.async_test)("token minted from the add_api_key_integration credential verifies", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { onResult: function (r) {
265
- var _a;
266
- var token = (_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token;
267
- if (!token)
268
- return false;
269
- var _b = token.split('.'), h = _b[0], p = _b[1], s = _b[2];
270
- return sign_hs256("".concat(h, ".").concat(p), SIGNING_KEY) === s
271
- && decode_jwt_payload(token).sub === HEALTHIE_PATIENT_ID;
272
- } })
273
- // 9) the real disconnect path — remove_api_key_integration
274
- ];
275
- case 22:
367
+ ];
368
+ case 19:
369
+ _b.sent();
370
+ // 8) the real connect path — add_api_key_integration, not integrations.createOne.
371
+ // Welle has no credential-validation branch (an opaque HMAC key has nothing to authenticate
372
+ // against), so unlike Canvas/Candid/MDI this endpoint makes no upstream call and is testable.
373
+ return [4 /*yield*/, expect_result("add_api_key_integration connects Welle", function () { return sdk_2.api.integrations.add_api_key_integration({ integration: constants_1.WELLE_TITLE, API_KEY: SIGNING_KEY }); }, function (r) { var _a; return ((_a = r === null || r === void 0 ? void 0 : r.integration) === null || _a === void 0 ? void 0 : _a.title) === constants_1.WELLE_TITLE; })];
374
+ case 20:
375
+ // 8) the real connect path — add_api_key_integration, not integrations.createOne.
376
+ // Welle has no credential-validation branch (an opaque HMAC key has nothing to authenticate
377
+ // against), so unlike Canvas/Candid/MDI this endpoint makes no upstream call and is testable.
378
+ _b.sent();
379
+ return [4 /*yield*/, expect_result("add_api_key_integration sets hasConnectedWelle", function () { return sdk_2.api.organizations.getOne(businessId_1); }, function (o) { return (o === null || o === void 0 ? void 0 : o.hasConnectedWelle) === true; })
276
380
  // the key stored by add_api_key_integration must land in the field the proxy_read branch reads
277
381
  // (authentication.info.access_token) — minting a verifiable token proves the two paths agree
278
- _d.sent();
279
- // 9) the real disconnect path — remove_api_key_integration
280
- return [4 /*yield*/, (0, testing_1.async_test)("remove_api_key_integration disconnects Welle", function () { return sdk.api.integrations.remove_api_key_integration({ integration: constants_1.WELLE_TITLE }); }, { onResult: function () { return true; } })
281
- // the org flag update is fire-and-forget on this handler (res.end() returns before the .then chain)
282
- ];
283
- case 23:
382
+ ];
383
+ case 21:
384
+ _b.sent();
385
+ // the key stored by add_api_key_integration must land in the field the proxy_read branch reads
386
+ // (authentication.info.access_token) — minting a verifiable token proves the two paths agree
387
+ return [4 /*yield*/, expect_result("token minted from the add_api_key_integration credential verifies", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, function (r) {
388
+ var _a;
389
+ var token = (_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token;
390
+ if (!token)
391
+ return false;
392
+ var _b = token.split('.'), h = _b[0], p = _b[1], s = _b[2];
393
+ return sign_hs256("".concat(h, ".").concat(p), SIGNING_KEY) === s
394
+ && decode_jwt_payload(token).sub === HEALTHIE_PATIENT_ID;
395
+ })
284
396
  // 9) the real disconnect path — remove_api_key_integration
285
- _d.sent();
286
- // the org flag update is fire-and-forget on this handler (res.end() returns before the .then chain)
287
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
288
- case 24:
397
+ ];
398
+ case 22:
399
+ // the key stored by add_api_key_integration must land in the field the proxy_read branch reads
400
+ // (authentication.info.access_token) — minting a verifiable token proves the two paths agree
401
+ _b.sent();
402
+ // 9) the real disconnect path — remove_api_key_integration
403
+ return [4 /*yield*/, expect_result("remove_api_key_integration disconnects Welle", function () { return sdk_2.api.integrations.remove_api_key_integration({ integration: constants_1.WELLE_TITLE }); }, function () { return true; })
289
404
  // the org flag update is fire-and-forget on this handler (res.end() returns before the .then chain)
290
- _d.sent();
291
- return [4 /*yield*/, (0, testing_1.async_test)("remove_api_key_integration clears hasConnectedWelle", function () { return sdk.api.organizations.getOne(sdk.userInfo.businessId); }, { onResult: function (o) { return !(o === null || o === void 0 ? void 0 : o.hasConnectedWelle); } })];
292
- case 25:
293
- _d.sent();
294
- return [4 /*yield*/, (0, testing_1.async_test)("no token is issued after remove_api_key_integration", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { shouldError: true, onError: function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('Welle integration not found'); } })];
295
- case 26:
296
- _d.sent();
297
- return [3 /*break*/, 34];
298
- case 27: return [4 /*yield*/, delete_all_welle_integrations(sdk).catch(console.error)];
299
- case 28:
300
- _d.sent();
301
- return [4 /*yield*/, sdk.api.organizations.updateOne(sdk.userInfo.businessId, { hasConnectedWelle: false }).catch(console.error)];
302
- case 29:
303
- _d.sent();
304
- _i = 0, _c = [linkedId, unlinkedId];
305
- _d.label = 30;
306
- case 30:
307
- if (!(_i < _c.length)) return [3 /*break*/, 33];
308
- id = _c[_i];
309
- if (!id)
310
- return [3 /*break*/, 32];
311
- return [4 /*yield*/, sdk.api.endusers.deleteOne(id).catch(console.error)];
312
- case 31:
313
- _d.sent();
314
- _d.label = 32;
315
- case 32:
316
- _i++;
317
- return [3 /*break*/, 30];
318
- case 33: return [7 /*endfinally*/];
319
- case 34: return [2 /*return*/];
320
- }
321
- });
405
+ ];
406
+ case 23:
407
+ // 9) the real disconnect path — remove_api_key_integration
408
+ _b.sent();
409
+ // the org flag update is fire-and-forget on this handler (res.end() returns before the .then chain)
410
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 250); })];
411
+ case 24:
412
+ // the org flag update is fire-and-forget on this handler (res.end() returns before the .then chain)
413
+ _b.sent();
414
+ return [4 /*yield*/, expect_result("remove_api_key_integration clears hasConnectedWelle", function () { return sdk_2.api.organizations.getOne(businessId_1); }, function (o) { return !(o === null || o === void 0 ? void 0 : o.hasConnectedWelle); })];
415
+ case 25:
416
+ _b.sent();
417
+ return [4 /*yield*/, expect_rejected("no token is issued after remove_api_key_integration", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('Welle integration not found'); })];
418
+ case 26:
419
+ _b.sent();
420
+ return [3 /*break*/, 37];
421
+ case 27:
422
+ if (!tenant) return [3 /*break*/, 36];
423
+ sdk = tenant.sdk, businessId = tenant.businessId;
424
+ return [4 /*yield*/, delete_all_welle_integrations(sdk).catch(console.error)];
425
+ case 28:
426
+ _b.sent();
427
+ return [4 /*yield*/, sdk.api.organizations.updateOne(businessId, { hasConnectedWelle: false }).catch(console.error)];
428
+ case 29:
429
+ _b.sent();
430
+ _i = 0, _a = [linkedId, unlinkedId];
431
+ _b.label = 30;
432
+ case 30:
433
+ if (!(_i < _a.length)) return [3 /*break*/, 33];
434
+ id = _a[_i];
435
+ if (!id)
436
+ return [3 /*break*/, 32];
437
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(id).catch(console.error)];
438
+ case 31:
439
+ _b.sent();
440
+ _b.label = 32;
441
+ case 32:
442
+ _i++;
443
+ return [3 /*break*/, 30];
444
+ case 33:
445
+ _b.trys.push([33, 35, , 36]);
446
+ return [4 /*yield*/, tenant.teardown()];
447
+ case 34:
448
+ _b.sent();
449
+ return [3 /*break*/, 36];
450
+ case 35:
451
+ e_1 = _b.sent();
452
+ console.error('teardown failed', e_1);
453
+ return [3 /*break*/, 36];
454
+ case 36: return [7 /*endfinally*/];
455
+ case 37: return [2 /*return*/, checks];
456
+ }
322
457
  });
323
- };
458
+ }); };
459
+ exports.welle_partner_token_checks = welle_partner_token_checks;
460
+ /** Asserting wrapper, for standalone runs. */
461
+ var welle_partner_token_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
462
+ var _a, _b;
463
+ return __generator(this, function (_c) {
464
+ switch (_c.label) {
465
+ case 0:
466
+ _a = setup_isolated_1.assert_checks;
467
+ _b = ['Welle partner token'];
468
+ return [4 /*yield*/, (0, exports.welle_partner_token_checks)()];
469
+ case 1:
470
+ _a.apply(void 0, _b.concat([_c.sent()]));
471
+ return [2 /*return*/];
472
+ }
473
+ });
474
+ }); };
324
475
  exports.welle_partner_token_tests = welle_partner_token_tests;
476
+ /** Enrolls this suite in the auto-discovered parallel pool — see run_discovered_isolated_suites. */
477
+ exports.ISOLATED_SUITE = {
478
+ name: 'Welle partner token',
479
+ run: exports.welle_partner_token_checks,
480
+ };
325
481
  // Allow running this test file independently
326
482
  if (require.main === module) {
327
- var sdk_2 = new sdk_1.Session({ host: host });
328
- var sdkNonAdmin_1 = new sdk_1.Session({ host: host });
329
- var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
330
- return __generator(this, function (_a) {
331
- switch (_a.label) {
332
- case 0: return [4 /*yield*/, (0, setup_1.setup_tests)(sdk_2, sdkNonAdmin_1)];
333
- case 1:
334
- _a.sent();
335
- return [4 /*yield*/, (0, exports.welle_partner_token_tests)({ sdk: sdk_2, sdkNonAdmin: sdkNonAdmin_1 })];
336
- case 2:
337
- _a.sent();
338
- return [2 /*return*/];
339
- }
340
- });
341
- }); };
342
- runTests()
483
+ console.log("\uD83C\uDF10 Using API URL: ".concat(host));
484
+ (0, exports.welle_partner_token_tests)()
343
485
  .then(function () {
344
486
  console.log("✅ Welle partner token test suite completed successfully");
345
487
  process.exit(0);