@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.
- package/lib/cjs/sdk.d.ts +6 -5
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +5 -0
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/tests/api_tests/ai_conversations.test.d.ts +14 -5
- package/lib/cjs/tests/api_tests/ai_conversations.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/ai_conversations.test.js +163 -149
- package/lib/cjs/tests/api_tests/ai_conversations.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.d.ts +22 -0
- package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.js +518 -0
- package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/appointment_link_expiration.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/appointment_link_expiration.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/appointment_link_expiration.test.js +135 -73
- package/lib/cjs/tests/api_tests/appointment_link_expiration.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.js +240 -174
- package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/availability_block_buffer.test.d.ts +22 -0
- package/lib/cjs/tests/api_tests/availability_block_buffer.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/availability_block_buffer.test.js +311 -0
- package/lib/cjs/tests/api_tests/availability_block_buffer.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/beluga_manual_sync.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/beluga_manual_sync.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/beluga_manual_sync.test.js +235 -192
- package/lib/cjs/tests/api_tests/beluga_manual_sync.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.js +351 -264
- package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/bulk_assignment.test.d.ts +16 -5
- package/lib/cjs/tests/api_tests/bulk_assignment.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/bulk_assignment.test.js +336 -243
- package/lib/cjs/tests/api_tests/bulk_assignment.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/calendar_event_references_update.test.d.ts +13 -5
- package/lib/cjs/tests/api_tests/calendar_event_references_update.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/calendar_event_references_update.test.js +131 -108
- package/lib/cjs/tests/api_tests/calendar_event_references_update.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.d.ts +15 -5
- package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.js +240 -252
- package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/chats_analytics.test.d.ts +14 -5
- package/lib/cjs/tests/api_tests/chats_analytics.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/chats_analytics.test.js +190 -189
- package/lib/cjs/tests/api_tests/chats_analytics.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/concurrent_build_threads.test.d.ts +23 -5
- package/lib/cjs/tests/api_tests/concurrent_build_threads.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/concurrent_build_threads.test.js +121 -118
- package/lib/cjs/tests/api_tests/concurrent_build_threads.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts +21 -5
- package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/configurations_public_read.test.js +235 -119
- package/lib/cjs/tests/api_tests/configurations_public_read.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts +7 -0
- package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.js +356 -0
- package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/create_note_action.test.d.ts +18 -5
- package/lib/cjs/tests/api_tests/create_note_action.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/create_note_action.test.js +218 -173
- package/lib/cjs/tests/api_tests/create_note_action.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.d.ts +17 -4
- package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.js +144 -205
- package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/custom_aggregation.test.d.ts +15 -5
- package/lib/cjs/tests/api_tests/custom_aggregation.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/custom_aggregation.test.js +284 -223
- package/lib/cjs/tests/api_tests/custom_aggregation.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/database_cascade_delete.test.d.ts +13 -5
- package/lib/cjs/tests/api_tests/database_cascade_delete.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/database_cascade_delete.test.js +218 -242
- package/lib/cjs/tests/api_tests/database_cascade_delete.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +21 -5
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js +168 -112
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/elation_user_id.test.d.ts +17 -5
- package/lib/cjs/tests/api_tests/elation_user_id.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/elation_user_id.test.js +121 -54
- package/lib/cjs/tests/api_tests/elation_user_id.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/file_download_unicode_names.test.js +193 -143
- package/lib/cjs/tests/api_tests/file_download_unicode_names.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.d.ts +7 -0
- package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.js +532 -0
- package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/form_submitted_trigger.test.d.ts +25 -5
- package/lib/cjs/tests/api_tests/form_submitted_trigger.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/form_submitted_trigger.test.js +395 -366
- package/lib/cjs/tests/api_tests/form_submitted_trigger.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/form_translations.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/form_translations.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/form_translations.test.js +269 -189
- package/lib/cjs/tests/api_tests/form_translations.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/formsort_header_auth.test.d.ts +29 -5
- package/lib/cjs/tests/api_tests/formsort_header_auth.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/formsort_header_auth.test.js +179 -162
- package/lib/cjs/tests/api_tests/formsort_header_auth.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/gcal_sync_retry.test.d.ts +12 -6
- package/lib/cjs/tests/api_tests/gcal_sync_retry.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/gcal_sync_retry.test.js +98 -84
- package/lib/cjs/tests/api_tests/gcal_sync_retry.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/get_some_projection.test.d.ts +20 -5
- package/lib/cjs/tests/api_tests/get_some_projection.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/get_some_projection.test.js +342 -298
- package/lib/cjs/tests/api_tests/get_some_projection.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js +294 -223
- package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/integrations_redacted.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/integrations_redacted.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/integrations_redacted.test.js +307 -213
- package/lib/cjs/tests/api_tests/integrations_redacted.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js +179 -178
- package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/load_team_chat.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/load_team_chat.test.js +181 -124
- package/lib/cjs/tests/api_tests/load_team_chat.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/load_threads_autobuild.test.d.ts +24 -5
- package/lib/cjs/tests/api_tests/load_threads_autobuild.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/load_threads_autobuild.test.js +261 -227
- package/lib/cjs/tests/api_tests/load_threads_autobuild.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/load_threads_care_team.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/load_threads_care_team.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/load_threads_care_team.test.js +115 -31
- package/lib/cjs/tests/api_tests/load_threads_care_team.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/managed_content_file_access.test.d.ts +15 -5
- package/lib/cjs/tests/api_tests/managed_content_file_access.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/managed_content_file_access.test.js +285 -311
- package/lib/cjs/tests/api_tests/managed_content_file_access.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/mdb_sort.test.d.ts +20 -5
- package/lib/cjs/tests/api_tests/mdb_sort.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/mdb_sort.test.js +361 -305
- package/lib/cjs/tests/api_tests/mdb_sort.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/mdi_manual_sync.test.d.ts +27 -0
- package/lib/cjs/tests/api_tests/mdi_manual_sync.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/mdi_manual_sync.test.js +395 -0
- package/lib/cjs/tests/api_tests/mdi_manual_sync.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js +259 -209
- package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/mdi_webhooks.test.d.ts +12 -5
- package/lib/cjs/tests/api_tests/mdi_webhooks.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/mdi_webhooks.test.js +67 -61
- package/lib/cjs/tests/api_tests/mdi_webhooks.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/message_assignment_trigger.test.d.ts +23 -14
- package/lib/cjs/tests/api_tests/message_assignment_trigger.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/message_assignment_trigger.test.js +258 -306
- package/lib/cjs/tests/api_tests/message_assignment_trigger.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/metriport_push_form_response.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/metriport_push_form_response.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/metriport_push_form_response.test.js +301 -238
- package/lib/cjs/tests/api_tests/metriport_push_form_response.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/organization_api_keys.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/organization_api_keys.test.js +226 -59
- package/lib/cjs/tests/api_tests/organization_api_keys.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts +19 -5
- package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js +335 -222
- package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/organization_signup.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/organization_signup.test.js +218 -51
- package/lib/cjs/tests/api_tests/organization_signup.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.js +109 -1
- package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.d.ts +6 -6
- package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.js +309 -361
- package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js +246 -165
- package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.d.ts +15 -5
- package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.js +130 -47
- package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.js +180 -132
- package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/programs.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/programs.test.js +417 -50
- package/lib/cjs/tests/api_tests/programs.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.d.ts +10 -5
- package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.js +401 -282
- package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.d.ts +9 -5
- package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.js +228 -211
- package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts +13 -8
- package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.js +270 -254
- package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts +16 -6
- package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js +167 -142
- package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts +10 -5
- package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.js +296 -221
- package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts +12 -5
- package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js +221 -216
- package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts +11 -5
- package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js +300 -203
- package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.d.ts +11 -5
- package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.js +415 -275
- package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.d.ts +11 -5
- package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.js +347 -228
- package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts +18 -7
- package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.js +164 -75
- package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts +15 -9
- package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js +99 -102
- package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.d.ts +11 -5
- package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.js +132 -89
- package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts +12 -5
- package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.js +190 -138
- package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts +18 -16
- package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js +164 -124
- package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.js +122 -2
- package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts +11 -5
- package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.js +288 -274
- package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.d.ts +17 -10
- package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.js +173 -138
- package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js +310 -265
- package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/webhook-timeout.test.d.ts +9 -5
- package/lib/cjs/tests/api_tests/security/webhook-timeout.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/webhook-timeout.test.js +108 -83
- package/lib/cjs/tests/api_tests/security/webhook-timeout.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/stedi_approval.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/stedi_approval.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/stedi_approval.test.js +206 -137
- package/lib/cjs/tests/api_tests/stedi_approval.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/ticket_stage_archive.test.d.ts +7 -0
- package/lib/cjs/tests/api_tests/ticket_stage_archive.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/ticket_stage_archive.test.js +344 -0
- package/lib/cjs/tests/api_tests/ticket_stage_archive.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.js +165 -149
- package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/translations.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/translations.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/translations.test.js +104 -75
- package/lib/cjs/tests/api_tests/translations.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.d.ts +21 -4
- package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.js +238 -370
- package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/user_preferences.test.d.ts +30 -0
- package/lib/cjs/tests/api_tests/user_preferences.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/user_preferences.test.js +279 -0
- package/lib/cjs/tests/api_tests/user_preferences.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts +17 -5
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.js +204 -195
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.d.ts +15 -5
- package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.js +154 -179
- package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts +6 -5
- package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/welle_partner_token.test.js +393 -251
- package/lib/cjs/tests/api_tests/welle_partner_token.test.js.map +1 -1
- package/lib/cjs/tests/setup_isolated.d.ts +7 -0
- package/lib/cjs/tests/setup_isolated.d.ts.map +1 -1
- package/lib/cjs/tests/setup_isolated.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +229 -461
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/cjs/tests/unit_tests/date_string_validation.test.d.ts +2 -0
- package/lib/cjs/tests/unit_tests/date_string_validation.test.d.ts.map +1 -0
- package/lib/cjs/tests/unit_tests/date_string_validation.test.js +112 -0
- package/lib/cjs/tests/unit_tests/date_string_validation.test.js.map +1 -0
- package/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/esm/sdk.d.ts +6 -5
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +5 -0
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/tests/api_tests/ai_conversations.test.d.ts +14 -5
- package/lib/esm/tests/api_tests/ai_conversations.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/ai_conversations.test.js +161 -148
- package/lib/esm/tests/api_tests/ai_conversations.test.js.map +1 -1
- package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.d.ts +22 -0
- package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.js +510 -0
- package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.js.map +1 -0
- package/lib/esm/tests/api_tests/appointment_link_expiration.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/appointment_link_expiration.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/appointment_link_expiration.test.js +132 -71
- package/lib/esm/tests/api_tests/appointment_link_expiration.test.js.map +1 -1
- package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.js +238 -173
- package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.js.map +1 -1
- package/lib/esm/tests/api_tests/availability_block_buffer.test.d.ts +22 -0
- package/lib/esm/tests/api_tests/availability_block_buffer.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/availability_block_buffer.test.js +306 -0
- package/lib/esm/tests/api_tests/availability_block_buffer.test.js.map +1 -0
- package/lib/esm/tests/api_tests/beluga_manual_sync.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/beluga_manual_sync.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/beluga_manual_sync.test.js +232 -190
- package/lib/esm/tests/api_tests/beluga_manual_sync.test.js.map +1 -1
- package/lib/esm/tests/api_tests/beluga_trigger_refill.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/beluga_trigger_refill.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/beluga_trigger_refill.test.js +348 -262
- package/lib/esm/tests/api_tests/beluga_trigger_refill.test.js.map +1 -1
- package/lib/esm/tests/api_tests/bulk_assignment.test.d.ts +16 -5
- package/lib/esm/tests/api_tests/bulk_assignment.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/bulk_assignment.test.js +333 -241
- package/lib/esm/tests/api_tests/bulk_assignment.test.js.map +1 -1
- package/lib/esm/tests/api_tests/calendar_event_references_update.test.d.ts +13 -5
- package/lib/esm/tests/api_tests/calendar_event_references_update.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/calendar_event_references_update.test.js +129 -107
- package/lib/esm/tests/api_tests/calendar_event_references_update.test.js.map +1 -1
- package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.d.ts +15 -5
- package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.js +238 -251
- package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.js.map +1 -1
- package/lib/esm/tests/api_tests/chats_analytics.test.d.ts +14 -5
- package/lib/esm/tests/api_tests/chats_analytics.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/chats_analytics.test.js +188 -188
- package/lib/esm/tests/api_tests/chats_analytics.test.js.map +1 -1
- package/lib/esm/tests/api_tests/concurrent_build_threads.test.d.ts +23 -5
- package/lib/esm/tests/api_tests/concurrent_build_threads.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/concurrent_build_threads.test.js +119 -117
- package/lib/esm/tests/api_tests/concurrent_build_threads.test.js.map +1 -1
- package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts +21 -5
- package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/configurations_public_read.test.js +233 -118
- package/lib/esm/tests/api_tests/configurations_public_read.test.js.map +1 -1
- package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts +7 -0
- package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.js +351 -0
- package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.js.map +1 -0
- package/lib/esm/tests/api_tests/create_note_action.test.d.ts +18 -5
- package/lib/esm/tests/api_tests/create_note_action.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/create_note_action.test.js +216 -172
- package/lib/esm/tests/api_tests/create_note_action.test.js.map +1 -1
- package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.d.ts +17 -4
- package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.js +141 -203
- package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.js.map +1 -1
- package/lib/esm/tests/api_tests/custom_aggregation.test.d.ts +15 -5
- package/lib/esm/tests/api_tests/custom_aggregation.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/custom_aggregation.test.js +282 -222
- package/lib/esm/tests/api_tests/custom_aggregation.test.js.map +1 -1
- package/lib/esm/tests/api_tests/database_cascade_delete.test.d.ts +13 -5
- package/lib/esm/tests/api_tests/database_cascade_delete.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/database_cascade_delete.test.js +216 -241
- package/lib/esm/tests/api_tests/database_cascade_delete.test.js.map +1 -1
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +21 -5
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js +165 -110
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -1
- package/lib/esm/tests/api_tests/elation_user_id.test.d.ts +17 -5
- package/lib/esm/tests/api_tests/elation_user_id.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/elation_user_id.test.js +119 -53
- package/lib/esm/tests/api_tests/elation_user_id.test.js.map +1 -1
- package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/file_download_unicode_names.test.js +190 -141
- package/lib/esm/tests/api_tests/file_download_unicode_names.test.js.map +1 -1
- package/lib/esm/tests/api_tests/form_intake_email_normalization.test.d.ts +7 -0
- package/lib/esm/tests/api_tests/form_intake_email_normalization.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/form_intake_email_normalization.test.js +527 -0
- package/lib/esm/tests/api_tests/form_intake_email_normalization.test.js.map +1 -0
- package/lib/esm/tests/api_tests/form_submitted_trigger.test.d.ts +25 -5
- package/lib/esm/tests/api_tests/form_submitted_trigger.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/form_submitted_trigger.test.js +393 -365
- package/lib/esm/tests/api_tests/form_submitted_trigger.test.js.map +1 -1
- package/lib/esm/tests/api_tests/form_translations.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/form_translations.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/form_translations.test.js +268 -189
- package/lib/esm/tests/api_tests/form_translations.test.js.map +1 -1
- package/lib/esm/tests/api_tests/formsort_header_auth.test.d.ts +29 -5
- package/lib/esm/tests/api_tests/formsort_header_auth.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/formsort_header_auth.test.js +177 -161
- package/lib/esm/tests/api_tests/formsort_header_auth.test.js.map +1 -1
- package/lib/esm/tests/api_tests/gcal_sync_retry.test.d.ts +12 -6
- package/lib/esm/tests/api_tests/gcal_sync_retry.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/gcal_sync_retry.test.js +96 -83
- package/lib/esm/tests/api_tests/gcal_sync_retry.test.js.map +1 -1
- package/lib/esm/tests/api_tests/get_some_projection.test.d.ts +20 -5
- package/lib/esm/tests/api_tests/get_some_projection.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/get_some_projection.test.js +339 -296
- package/lib/esm/tests/api_tests/get_some_projection.test.js.map +1 -1
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js +292 -222
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -1
- package/lib/esm/tests/api_tests/integrations_redacted.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/integrations_redacted.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/integrations_redacted.test.js +304 -211
- package/lib/esm/tests/api_tests/integrations_redacted.test.js.map +1 -1
- package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js +177 -154
- package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -1
- package/lib/esm/tests/api_tests/load_team_chat.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/load_team_chat.test.js +181 -124
- package/lib/esm/tests/api_tests/load_team_chat.test.js.map +1 -1
- package/lib/esm/tests/api_tests/load_threads_autobuild.test.d.ts +24 -5
- package/lib/esm/tests/api_tests/load_threads_autobuild.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/load_threads_autobuild.test.js +259 -226
- package/lib/esm/tests/api_tests/load_threads_autobuild.test.js.map +1 -1
- package/lib/esm/tests/api_tests/load_threads_care_team.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/load_threads_care_team.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/load_threads_care_team.test.js +115 -31
- package/lib/esm/tests/api_tests/load_threads_care_team.test.js.map +1 -1
- package/lib/esm/tests/api_tests/managed_content_file_access.test.d.ts +15 -5
- package/lib/esm/tests/api_tests/managed_content_file_access.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/managed_content_file_access.test.js +283 -287
- package/lib/esm/tests/api_tests/managed_content_file_access.test.js.map +1 -1
- package/lib/esm/tests/api_tests/mdb_sort.test.d.ts +20 -5
- package/lib/esm/tests/api_tests/mdb_sort.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/mdb_sort.test.js +358 -303
- package/lib/esm/tests/api_tests/mdb_sort.test.js.map +1 -1
- package/lib/esm/tests/api_tests/mdi_manual_sync.test.d.ts +27 -0
- package/lib/esm/tests/api_tests/mdi_manual_sync.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/mdi_manual_sync.test.js +390 -0
- package/lib/esm/tests/api_tests/mdi_manual_sync.test.js.map +1 -0
- package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js +257 -208
- package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js.map +1 -1
- package/lib/esm/tests/api_tests/mdi_webhooks.test.d.ts +12 -5
- package/lib/esm/tests/api_tests/mdi_webhooks.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/mdi_webhooks.test.js +65 -60
- package/lib/esm/tests/api_tests/mdi_webhooks.test.js.map +1 -1
- package/lib/esm/tests/api_tests/message_assignment_trigger.test.d.ts +23 -14
- package/lib/esm/tests/api_tests/message_assignment_trigger.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/message_assignment_trigger.test.js +256 -305
- package/lib/esm/tests/api_tests/message_assignment_trigger.test.js.map +1 -1
- package/lib/esm/tests/api_tests/metriport_push_form_response.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/metriport_push_form_response.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/metriport_push_form_response.test.js +298 -236
- package/lib/esm/tests/api_tests/metriport_push_form_response.test.js.map +1 -1
- package/lib/esm/tests/api_tests/organization_api_keys.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/organization_api_keys.test.js +226 -59
- package/lib/esm/tests/api_tests/organization_api_keys.test.js.map +1 -1
- package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts +19 -5
- package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js +332 -220
- package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js.map +1 -1
- package/lib/esm/tests/api_tests/organization_signup.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/organization_signup.test.js +218 -51
- package/lib/esm/tests/api_tests/organization_signup.test.js.map +1 -1
- package/lib/esm/tests/api_tests/out_of_office_endpoint.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/out_of_office_endpoint.test.js +109 -1
- package/lib/esm/tests/api_tests/out_of_office_endpoint.test.js.map +1 -1
- package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.d.ts +6 -6
- package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.js +308 -361
- package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.js.map +1 -1
- package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js +243 -163
- package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
- package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.d.ts +15 -5
- package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.js +127 -45
- package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.js.map +1 -1
- package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.js +177 -130
- package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.js.map +1 -1
- package/lib/esm/tests/api_tests/programs.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/programs.test.js +417 -50
- package/lib/esm/tests/api_tests/programs.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.d.ts +10 -5
- package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.js +399 -281
- package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.d.ts +9 -5
- package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.js +225 -209
- package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts +13 -8
- package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.js +268 -253
- package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts +16 -6
- package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js +165 -141
- package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts +10 -5
- package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.js +294 -220
- package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts +12 -5
- package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js +219 -215
- package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts +11 -5
- package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js +298 -202
- package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/enduser-cross-create.test.d.ts +11 -5
- package/lib/esm/tests/api_tests/security/enduser-cross-create.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/enduser-cross-create.test.js +413 -274
- package/lib/esm/tests/api_tests/security/enduser-cross-create.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.d.ts +11 -5
- package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.js +345 -227
- package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts +18 -7
- package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.js +162 -74
- package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts +15 -9
- package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js +96 -100
- package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.d.ts +11 -5
- package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.js +129 -87
- package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts +12 -5
- package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.js +187 -136
- package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts +18 -16
- package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js +162 -123
- package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.js +122 -2
- package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts +11 -5
- package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.js +285 -272
- package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.d.ts +17 -10
- package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.js +171 -137
- package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js +307 -263
- package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/webhook-timeout.test.d.ts +9 -5
- package/lib/esm/tests/api_tests/security/webhook-timeout.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/webhook-timeout.test.js +105 -81
- package/lib/esm/tests/api_tests/security/webhook-timeout.test.js.map +1 -1
- package/lib/esm/tests/api_tests/stedi_approval.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/stedi_approval.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/stedi_approval.test.js +204 -136
- package/lib/esm/tests/api_tests/stedi_approval.test.js.map +1 -1
- package/lib/esm/tests/api_tests/ticket_stage_archive.test.d.ts +7 -0
- package/lib/esm/tests/api_tests/ticket_stage_archive.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/ticket_stage_archive.test.js +339 -0
- package/lib/esm/tests/api_tests/ticket_stage_archive.test.js.map +1 -0
- package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.js +162 -147
- package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.js.map +1 -1
- package/lib/esm/tests/api_tests/translations.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/translations.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/translations.test.js +102 -74
- package/lib/esm/tests/api_tests/translations.test.js.map +1 -1
- package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.d.ts +21 -4
- package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.js +236 -369
- package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.js.map +1 -1
- package/lib/esm/tests/api_tests/user_preferences.test.d.ts +30 -0
- package/lib/esm/tests/api_tests/user_preferences.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/user_preferences.test.js +274 -0
- package/lib/esm/tests/api_tests/user_preferences.test.js.map +1 -0
- package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts +17 -5
- package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/webhook_error_handling.test.js +202 -194
- package/lib/esm/tests/api_tests/webhook_error_handling.test.js.map +1 -1
- package/lib/esm/tests/api_tests/webhook_raw_json_number.test.d.ts +15 -5
- package/lib/esm/tests/api_tests/webhook_raw_json_number.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/webhook_raw_json_number.test.js +152 -178
- package/lib/esm/tests/api_tests/webhook_raw_json_number.test.js.map +1 -1
- package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts +6 -5
- package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/welle_partner_token.test.js +391 -250
- package/lib/esm/tests/api_tests/welle_partner_token.test.js.map +1 -1
- package/lib/esm/tests/setup_isolated.d.ts +7 -0
- package/lib/esm/tests/setup_isolated.d.ts.map +1 -1
- package/lib/esm/tests/setup_isolated.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +229 -461
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/esm/tests/unit_tests/date_string_validation.test.d.ts +2 -0
- package/lib/esm/tests/unit_tests/date_string_validation.test.d.ts.map +1 -0
- package/lib/esm/tests/unit_tests/date_string_validation.test.js +108 -0
- package/lib/esm/tests/unit_tests/date_string_validation.test.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/sdk.ts +14 -3
- package/src/tests/api_tests/ai_conversations.test.ts +170 -138
- package/src/tests/api_tests/ai_conversations_agent_message.test.ts +491 -0
- package/src/tests/api_tests/appointment_link_expiration.test.ts +94 -35
- package/src/tests/api_tests/appointment_no_showed_trigger.test.ts +181 -128
- package/src/tests/api_tests/availability_block_buffer.test.ts +286 -0
- package/src/tests/api_tests/beluga_manual_sync.test.ts +103 -53
- package/src/tests/api_tests/beluga_trigger_refill.test.ts +131 -46
- package/src/tests/api_tests/bulk_assignment.test.ts +307 -220
- package/src/tests/api_tests/calendar_event_references_update.test.ts +97 -54
- package/src/tests/api_tests/calendar_event_webhook_template.test.ts +198 -158
- package/src/tests/api_tests/chats_analytics.test.ts +161 -123
- package/src/tests/api_tests/concurrent_build_threads.test.ts +80 -69
- package/src/tests/api_tests/configurations_public_read.test.ts +154 -67
- package/src/tests/api_tests/copied_form_response_no_enduser_sync.test.ts +307 -0
- package/src/tests/api_tests/create_note_action.test.ts +149 -70
- package/src/tests/api_tests/create_user_notifications_trigger.test.ts +116 -144
- package/src/tests/api_tests/custom_aggregation.test.ts +163 -92
- package/src/tests/api_tests/database_cascade_delete.test.ts +101 -87
- package/src/tests/api_tests/dont_sync_to_elation_form_submission.test.ts +122 -51
- package/src/tests/api_tests/elation_user_id.test.ts +105 -42
- package/src/tests/api_tests/file_download_unicode_names.test.ts +171 -122
- package/src/tests/api_tests/form_intake_email_normalization.test.ts +489 -0
- package/src/tests/api_tests/form_submitted_trigger.test.ts +152 -86
- package/src/tests/api_tests/form_translations.test.ts +117 -48
- package/src/tests/api_tests/formsort_header_auth.test.ts +147 -97
- package/src/tests/api_tests/gcal_sync_retry.test.ts +71 -49
- package/src/tests/api_tests/get_some_projection.test.ts +333 -169
- package/src/tests/api_tests/group_event_attendee_self_update.test.ts +103 -52
- package/src/tests/api_tests/integrations_redacted.test.ts +161 -84
- package/src/tests/api_tests/journey_delete_cancels_actions.test.ts +93 -64
- package/src/tests/api_tests/load_team_chat.test.ts +62 -6
- package/src/tests/api_tests/load_threads_autobuild.test.ts +163 -67
- package/src/tests/api_tests/load_threads_care_team.test.ts +103 -0
- package/src/tests/api_tests/managed_content_file_access.test.ts +132 -108
- package/src/tests/api_tests/mdb_sort.test.ts +247 -161
- package/src/tests/api_tests/mdi_manual_sync.test.ts +277 -0
- package/src/tests/api_tests/mdi_trigger_refill.test.ts +132 -78
- package/src/tests/api_tests/mdi_webhooks.test.ts +52 -22
- package/src/tests/api_tests/message_assignment_trigger.test.ts +129 -155
- package/src/tests/api_tests/metriport_push_form_response.test.ts +109 -49
- package/src/tests/api_tests/organization_api_keys.test.ts +170 -2
- package/src/tests/api_tests/organization_settings_duplicates.test.ts +291 -181
- package/src/tests/api_tests/organization_signup.test.ts +170 -5
- package/src/tests/api_tests/out_of_office_endpoint.test.ts +98 -0
- package/src/tests/api_tests/outbound_chat_sent_trigger.test.ts +163 -175
- package/src/tests/api_tests/phone_calls_cold_transfer.test.ts +195 -133
- package/src/tests/api_tests/phone_calls_conference_hold.test.ts +112 -42
- package/src/tests/api_tests/phone_tree_enduser_condition.test.ts +81 -32
- package/src/tests/api_tests/programs.test.ts +350 -0
- package/src/tests/api_tests/security/ai-conversations-rbac.test.ts +248 -128
- package/src/tests/api_tests/security/automated-actions-process-gate.test.ts +47 -42
- package/src/tests/api_tests/security/booking-info-idor-token-mint.test.ts +53 -45
- package/src/tests/api_tests/security/cascade-role-rename-cross-tenant.test.ts +100 -73
- package/src/tests/api_tests/security/data-sync-redaction-bypass.test.ts +125 -59
- package/src/tests/api_tests/security/develop-health-benefit-verification-rbac.test.ts +131 -103
- package/src/tests/api_tests/security/enduser-ai-summary-trust-gate.test.ts +161 -68
- package/src/tests/api_tests/security/enduser-cross-create.test.ts +200 -61
- package/src/tests/api_tests/security/enduser-write-restrictions.test.ts +179 -61
- package/src/tests/api_tests/security/globalunique-conflict-redaction.test.ts +163 -44
- package/src/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.ts +78 -70
- package/src/tests/api_tests/security/load-inbox-redaction.test.ts +79 -44
- package/src/tests/api_tests/security/proxy-image-unauth-ssrf.test.ts +95 -52
- package/src/tests/api_tests/security/register_business_id_injection.test.ts +132 -93
- package/src/tests/api_tests/security/sanitize-user-html-with-iframes.test.ts +127 -0
- package/src/tests/api_tests/security/schema-adminonly-enforcement.test.ts +42 -37
- package/src/tests/api_tests/security/self-admin-role-assignment.test.ts +92 -54
- package/src/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.ts +76 -34
- package/src/tests/api_tests/security/webhook-timeout.test.ts +67 -36
- package/src/tests/api_tests/stedi_approval.test.ts +156 -90
- package/src/tests/api_tests/ticket_stage_archive.test.ts +314 -0
- package/src/tests/api_tests/tickets_bulk_assign_care_team.test.ts +138 -103
- package/src/tests/api_tests/translations.test.ts +69 -46
- package/src/tests/api_tests/trigger_set_fields_date_difference.test.ts +198 -256
- package/src/tests/api_tests/user_preferences.test.ts +227 -0
- package/src/tests/api_tests/webhook_error_handling.test.ts +121 -60
- package/src/tests/api_tests/webhook_raw_json_number.test.ts +127 -109
- package/src/tests/api_tests/welle_partner_token.test.ts +217 -90
- package/src/tests/setup_isolated.ts +7 -0
- package/src/tests/tests.ts +41 -147
- package/src/tests/{api_tests → unit_tests}/date_string_validation.test.ts +2 -23
- package/test_generated.pdf +0 -0
|
@@ -1,24 +1,56 @@
|
|
|
1
1
|
require('source-map-support').install();
|
|
2
2
|
|
|
3
|
-
import { Session } from "../../sdk"
|
|
4
|
-
import {
|
|
5
|
-
assert,
|
|
6
|
-
async_test,
|
|
7
|
-
log_header,
|
|
8
|
-
} from "@tellescope/testing"
|
|
9
|
-
import { setup_tests } from "../setup"
|
|
10
3
|
import { METRIPORT_TITLE } from "@tellescope/constants"
|
|
4
|
+
import {
|
|
5
|
+
assert_checks,
|
|
6
|
+
Check,
|
|
7
|
+
IsolatedSuite,
|
|
8
|
+
setup_isolated_tenant,
|
|
9
|
+
} from "../setup_isolated"
|
|
11
10
|
|
|
12
11
|
const host = process.env.API_URL || 'http://localhost:8080' as const
|
|
13
12
|
|
|
13
|
+
const RAND = () => Math.random().toString(36).slice(2, 10)
|
|
14
|
+
|
|
14
15
|
// metriportPushFormResponse journey action (CU-86e2cucba).
|
|
15
16
|
//
|
|
16
17
|
// Fast / no-upload: this exercises validation and the guard branches that reject before any
|
|
17
18
|
// Metriport HTTP call. A real upload needs a Metriport sandbox API key plus a patient already
|
|
18
19
|
// synced to a facility, so the happy path is verified manually (see the task plan).
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
//
|
|
21
|
+
// Runs on its own provisioned tenant, which is what makes the no-integration guard reliable: a
|
|
22
|
+
// fresh tenant never holds a Metriport integration, so that assertion always runs. On the shared
|
|
23
|
+
// fixture it was wrapped in `if (!metriportIntegrationExists)` and was silently skipped whenever
|
|
24
|
+
// another suite had left an integration behind — a skip reports green without asserting anything.
|
|
25
|
+
export const metriport_push_form_response_checks = async (): Promise<Check[]> => {
|
|
26
|
+
const checks: Check[] = []
|
|
27
|
+
const record = (label: string, pass: boolean, detail: string) => checks.push({ label, pass, detail })
|
|
28
|
+
|
|
29
|
+
// The raw value decides the fallback, not JSON.stringify of it — JSON.stringify('') is '""',
|
|
30
|
+
// which is truthy, so a `|| fallback` on the stringified form could never fire.
|
|
31
|
+
const describe = (value: any): string => {
|
|
32
|
+
if (value === undefined || value === null) return String(value)
|
|
33
|
+
const stringified = JSON.stringify(value)
|
|
34
|
+
return stringified === undefined ? String(value) : stringified
|
|
35
|
+
}
|
|
36
|
+
const errorMessage = (e: any): string => (
|
|
37
|
+
typeof e?.message === 'string' && e.message !== '' ? e.message : describe(e)
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The async_test({ shouldError: true, onError: () => true }) equivalent: a call that RESOLVES is a
|
|
42
|
+
* failure (async_test treats it the same way), and any rejection passes.
|
|
43
|
+
*/
|
|
44
|
+
const expect_rejected = async (label: string, fn: () => Promise<any>) => {
|
|
45
|
+
try {
|
|
46
|
+
const unexpected = await fn()
|
|
47
|
+
record(label, false, `resolved instead of rejecting; result=${describe(unexpected)}`)
|
|
48
|
+
} catch (e: any) {
|
|
49
|
+
record(label, true, `rejected with ${errorMessage(e)}`)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
21
52
|
|
|
53
|
+
let tenant: Awaited<ReturnType<typeof setup_isolated_tenant>> | undefined
|
|
22
54
|
let enduserId: string | undefined
|
|
23
55
|
let otherEnduserId: string | undefined
|
|
24
56
|
let formId: string | undefined
|
|
@@ -26,6 +58,13 @@ export const metriport_push_form_response_tests = async ({ sdk, sdkNonAdmin }: {
|
|
|
26
58
|
let createdIntegrationId: string | undefined
|
|
27
59
|
|
|
28
60
|
try {
|
|
61
|
+
tenant = await setup_isolated_tenant({
|
|
62
|
+
name: `Metriport push form response ${RAND()}`,
|
|
63
|
+
users: [{ isAdmin: true }],
|
|
64
|
+
apiKeys: 0,
|
|
65
|
+
})
|
|
66
|
+
const { sdk } = tenant
|
|
67
|
+
|
|
29
68
|
const journey = await sdk.api.journeys.createOne({ title: 'Metriport Push Form Response Journey' })
|
|
30
69
|
journeyId = journey.id
|
|
31
70
|
|
|
@@ -48,10 +87,10 @@ export const metriport_push_form_response_tests = async ({ sdk, sdkNonAdmin }: {
|
|
|
48
87
|
events: [{ type: 'onJourneyStart', info: {} }],
|
|
49
88
|
action: { type: 'metriportPushFormResponse', info: { formId: form.id, integrationTitle: '' } },
|
|
50
89
|
})
|
|
51
|
-
|
|
52
|
-
step.action.type === 'metriportPushFormResponse' && step.action.info.formId === form.id,
|
|
53
|
-
'metriportPushFormResponse step round-trip failed',
|
|
90
|
+
record(
|
|
54
91
|
'metriportPushFormResponse step round-trips',
|
|
92
|
+
step.action.type === 'metriportPushFormResponse' && (step.action.info as any).formId === form.id,
|
|
93
|
+
`action=${describe(step.action)}`,
|
|
55
94
|
)
|
|
56
95
|
|
|
57
96
|
// formId is optional — a step with no info at all is valid (uses the journey's form response)
|
|
@@ -60,19 +99,19 @@ export const metriport_push_form_response_tests = async ({ sdk, sdkNonAdmin }: {
|
|
|
60
99
|
events: [{ type: 'onJourneyStart', info: {} }],
|
|
61
100
|
action: { type: 'metriportPushFormResponse', info: {} },
|
|
62
101
|
})
|
|
63
|
-
|
|
64
|
-
contextOnlyStep.action.type === 'metriportPushFormResponse',
|
|
65
|
-
'metriportPushFormResponse step without info was rejected',
|
|
102
|
+
record(
|
|
66
103
|
'metriportPushFormResponse info is optional',
|
|
104
|
+
contextOnlyStep.action.type === 'metriportPushFormResponse',
|
|
105
|
+
`action=${describe(contextOnlyStep.action)}`,
|
|
67
106
|
)
|
|
68
107
|
|
|
69
|
-
await
|
|
108
|
+
await expect_rejected(
|
|
109
|
+
'metriportPushFormResponse with a malformed formId is rejected',
|
|
70
110
|
() => sdk.api.automation_steps.createOne({
|
|
71
111
|
journeyId: journey.id,
|
|
72
112
|
events: [{ type: 'onJourneyStart', info: {} }],
|
|
73
113
|
action: { type: 'metriportPushFormResponse', info: { formId: 'not-a-mongo-id' } },
|
|
74
114
|
}),
|
|
75
|
-
{ shouldError: true, onError: () => true },
|
|
76
115
|
)
|
|
77
116
|
|
|
78
117
|
/*************** runtime ***************/
|
|
@@ -99,8 +138,10 @@ export const metriport_push_form_response_tests = async ({ sdk, sdkNonAdmin }: {
|
|
|
99
138
|
return sdk.api.automated_actions.process({ automatedActionId: automatedAction.id })
|
|
100
139
|
}
|
|
101
140
|
|
|
102
|
-
//
|
|
103
|
-
//
|
|
141
|
+
// Kept from the shared-fixture version, and now expected never to be true: a freshly provisioned
|
|
142
|
+
// tenant holds no Metriport integration, so the no-integration assertion below always runs. If
|
|
143
|
+
// the probe ever does find one, that is a failed check rather than a silent skip — provisioning
|
|
144
|
+
// would have changed.
|
|
104
145
|
let metriportIntegrationExists = false
|
|
105
146
|
try {
|
|
106
147
|
const existing = await sdk.api.integrations.load_redacted({})
|
|
@@ -109,12 +150,12 @@ export const metriport_push_form_response_tests = async ({ sdk, sdkNonAdmin }: {
|
|
|
109
150
|
|
|
110
151
|
if (!metriportIntegrationExists) {
|
|
111
152
|
const noIntegrationResult = await processStep()
|
|
112
|
-
|
|
153
|
+
record(
|
|
154
|
+
'metriportPushFormResponse is wired into automated_actions.process (no integration)',
|
|
113
155
|
!noIntegrationResult.success
|
|
114
156
|
&& !noIntegrationResult.unimplemented
|
|
115
157
|
&& noIntegrationResult.error === 'Metriport integration not found',
|
|
116
|
-
`expected 'Metriport integration not found', got: ${
|
|
117
|
-
'metriportPushFormResponse is wired into automated_actions.process (no integration)',
|
|
158
|
+
`expected 'Metriport integration not found', got: ${describe(noIntegrationResult)}`,
|
|
118
159
|
)
|
|
119
160
|
|
|
120
161
|
const created = await sdk.api.integrations.createOne({
|
|
@@ -125,17 +166,25 @@ export const metriport_push_form_response_tests = async ({ sdk, sdkNonAdmin }: {
|
|
|
125
166
|
},
|
|
126
167
|
})
|
|
127
168
|
createdIntegrationId = created.id
|
|
169
|
+
} else {
|
|
170
|
+
record(
|
|
171
|
+
'a freshly provisioned tenant holds no Metriport integration',
|
|
172
|
+
false,
|
|
173
|
+
'the tenant already had a Metriport integration, so the no-integration assertion could not run'
|
|
174
|
+
+ ' (no placeholder is created on this branch, so the not-synced check below fails too, with'
|
|
175
|
+
+ " a misleading 'Metriport integration not found')",
|
|
176
|
+
)
|
|
128
177
|
}
|
|
129
178
|
|
|
130
179
|
// With an integration but a patient that was never synced to a facility, the action fails
|
|
131
180
|
// before any HTTP call to Metriport
|
|
132
181
|
const unsyncedResult = await processStep()
|
|
133
|
-
|
|
182
|
+
record(
|
|
183
|
+
'metriportPushFormResponse rejects a patient not synced to Metriport',
|
|
134
184
|
!unsyncedResult.success
|
|
135
185
|
&& !unsyncedResult.unimplemented
|
|
136
186
|
&& /not synced to Metriport/i.test(unsyncedResult.error || ''),
|
|
137
|
-
`expected a 'Patient is not synced to Metriport' error, got: ${
|
|
138
|
-
'metriportPushFormResponse rejects a patient not synced to Metriport',
|
|
187
|
+
`expected a 'Patient is not synced to Metriport' error, got: ${describe(unsyncedResult)}`,
|
|
139
188
|
)
|
|
140
189
|
|
|
141
190
|
/*************** cross-patient ownership (CU-86e2cucba security fix) ***************/
|
|
@@ -160,26 +209,27 @@ export const metriport_push_form_response_tests = async ({ sdk, sdkNonAdmin }: {
|
|
|
160
209
|
processAfter: Date.now(),
|
|
161
210
|
})
|
|
162
211
|
const crossPatientResult = await sdk.api.automated_actions.process({ automatedActionId: crossPatientAction.id })
|
|
163
|
-
|
|
212
|
+
record(
|
|
213
|
+
'metriportPushFormResponse rejects a form response owned by a different patient',
|
|
164
214
|
!crossPatientResult.success
|
|
165
215
|
&& !crossPatientResult.unimplemented
|
|
166
216
|
&& crossPatientResult.error === 'Form response does not belong to this patient',
|
|
167
|
-
`expected a cross-patient ownership rejection, got: ${
|
|
168
|
-
'metriportPushFormResponse rejects a form response owned by a different patient',
|
|
217
|
+
`expected a cross-patient ownership rejection, got: ${describe(crossPatientResult)}`,
|
|
169
218
|
)
|
|
170
219
|
|
|
171
220
|
// the rejection must occur before any Metriport reference is stamped on A's response
|
|
172
221
|
const untouched = await sdk.api.form_responses.getOne(formResponseId)
|
|
173
|
-
|
|
174
|
-
!(untouched as any).references?.find((r: any) => r.type === METRIPORT_TITLE),
|
|
175
|
-
`patient A's form response was stamped despite a cross-patient rejection: ${JSON.stringify((untouched as any).references)}`,
|
|
222
|
+
record(
|
|
176
223
|
'metriportPushFormResponse does not stamp a form response on cross-patient rejection',
|
|
224
|
+
!(untouched as any).references?.find((r: any) => r.type === METRIPORT_TITLE),
|
|
225
|
+
`references=${describe((untouched as any).references)}`,
|
|
177
226
|
)
|
|
178
227
|
|
|
179
228
|
/*************** idempotency ***************/
|
|
180
229
|
// form_responses.references is a readonly field, so it can only be stamped server-side (which
|
|
181
230
|
// is what a successful upload does). Attempt the stamp; if the API drops it, skip the check
|
|
182
|
-
// rather than assert on a state we couldn't set up.
|
|
231
|
+
// rather than assert on a state we couldn't set up. (This skip is about a readonly schema field,
|
|
232
|
+
// not about shared-tenant contention, so isolation does not make it unreachable.)
|
|
183
233
|
await sdk.api.form_responses.updateOne(formResponseId, {
|
|
184
234
|
references: [{ type: METRIPORT_TITLE, id: 'test-document-reference-id' }],
|
|
185
235
|
} as any).catch(() => {})
|
|
@@ -187,34 +237,44 @@ export const metriport_push_form_response_tests = async ({ sdk, sdkNonAdmin }: {
|
|
|
187
237
|
const stamped = await sdk.api.form_responses.getOne(formResponseId)
|
|
188
238
|
if ((stamped as any).references?.find((r: any) => r.type === METRIPORT_TITLE)) {
|
|
189
239
|
const idempotentResult = await processStep()
|
|
190
|
-
|
|
191
|
-
idempotentResult.success === true,
|
|
192
|
-
`expected a no-op success for an already-shared form response, got: ${JSON.stringify(idempotentResult)}`,
|
|
240
|
+
record(
|
|
193
241
|
'metriportPushFormResponse no-ops for an already-shared form response',
|
|
242
|
+
idempotentResult.success === true,
|
|
243
|
+
`expected a no-op success for an already-shared form response, got: ${describe(idempotentResult)}`,
|
|
194
244
|
)
|
|
195
245
|
} else {
|
|
196
246
|
console.log("⏭️ Skipping idempotency check (form_responses.references is readonly over the API)")
|
|
197
247
|
}
|
|
198
248
|
} finally {
|
|
199
|
-
if (
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
249
|
+
if (tenant) {
|
|
250
|
+
const { sdk } = tenant
|
|
251
|
+
if (createdIntegrationId) await sdk.api.integrations.deleteOne(createdIntegrationId).catch(console.error)
|
|
252
|
+
if (journeyId) await sdk.api.journeys.deleteOne(journeyId).catch(console.error)
|
|
253
|
+
if (formId) await sdk.api.forms.deleteOne(formId).catch(console.error)
|
|
254
|
+
if (enduserId) await sdk.api.endusers.deleteOne(enduserId).catch(console.error)
|
|
255
|
+
if (otherEnduserId) await sdk.api.endusers.deleteOne(otherEnduserId).catch(console.error)
|
|
256
|
+
// Teardown BEFORE anything asserts — assert calls process.exit, which would strand this tenant.
|
|
257
|
+
try { await tenant.teardown() } catch (e) { console.error('teardown failed', e) }
|
|
258
|
+
}
|
|
204
259
|
}
|
|
260
|
+
|
|
261
|
+
return checks
|
|
205
262
|
}
|
|
206
263
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
264
|
+
/** Asserting wrapper, for standalone runs. */
|
|
265
|
+
export const metriport_push_form_response_tests = async () => {
|
|
266
|
+
assert_checks('Metriport push form response', await metriport_push_form_response_checks())
|
|
267
|
+
}
|
|
211
268
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
269
|
+
/** Enrolls this suite in the auto-discovered parallel pool — see run_discovered_isolated_suites. */
|
|
270
|
+
export const ISOLATED_SUITE: IsolatedSuite = {
|
|
271
|
+
name: 'Metriport push form response',
|
|
272
|
+
run: metriport_push_form_response_checks,
|
|
273
|
+
}
|
|
216
274
|
|
|
217
|
-
|
|
275
|
+
if (require.main === module) {
|
|
276
|
+
console.log(`Using API URL: ${host}`)
|
|
277
|
+
metriport_push_form_response_tests()
|
|
218
278
|
.then(() => {
|
|
219
279
|
console.log("✅ Metriport push form response test suite completed successfully")
|
|
220
280
|
process.exit(0)
|
|
@@ -8,11 +8,12 @@ import {
|
|
|
8
8
|
wait,
|
|
9
9
|
} from "@tellescope/testing"
|
|
10
10
|
import { setup_tests } from "../setup"
|
|
11
|
+
import { FORM_INGESTION_API_KEY_SCOPE } from "@tellescope/types-models"
|
|
11
12
|
|
|
12
13
|
const host = process.env.API_URL || 'http://localhost:8080' as const
|
|
13
14
|
|
|
14
15
|
// fields that the admin org-wide list endpoint is allowed to return
|
|
15
|
-
const ALLOWED_FIELDS = ['id', 'creator', 'businessId', 'updatedAt', 'scopes'].sort()
|
|
16
|
+
const ALLOWED_FIELDS = ['id', 'creator', 'businessId', 'updatedAt', 'scopes', 'description'].sort()
|
|
16
17
|
|
|
17
18
|
export const organization_api_keys_tests = async (
|
|
18
19
|
{ sdk, sdkNonAdmin }: { sdk: Session, sdkNonAdmin: Session }
|
|
@@ -56,6 +57,9 @@ export const organization_api_keys_tests = async (
|
|
|
56
57
|
// A key created by the admin...
|
|
57
58
|
const adminKey = await sdk.api.api_keys.createOne({})
|
|
58
59
|
adminKeyIds.push(adminKey.id)
|
|
60
|
+
// the plaintext secret is returned once, at creation — kept here only to prove that relabelling
|
|
61
|
+
// a key never rotates or invalidates it (never logged, never asserted on by value)
|
|
62
|
+
const adminKeySecret = adminKey.key
|
|
59
63
|
|
|
60
64
|
// ...and a key created by ANOTHER user in the org (the offboarded-employee scenario)
|
|
61
65
|
const otherKey = await otherSdk.api.api_keys.createOne({})
|
|
@@ -104,7 +108,7 @@ export const organization_api_keys_tests = async (
|
|
|
104
108
|
assert(
|
|
105
109
|
offending === undefined,
|
|
106
110
|
`a returned record exposed non-allowlisted fields: ${JSON.stringify(offending)}`,
|
|
107
|
-
"returned records contain only allowlisted fields (subset of id, creator, businessId, updatedAt, scopes)"
|
|
111
|
+
"returned records contain only allowlisted fields (subset of id, creator, businessId, updatedAt, scopes, description)"
|
|
108
112
|
)
|
|
109
113
|
|
|
110
114
|
// =============================================
|
|
@@ -116,6 +120,158 @@ export const organization_api_keys_tests = async (
|
|
|
116
120
|
"all returned keys are scoped to the admin's businessId"
|
|
117
121
|
)
|
|
118
122
|
|
|
123
|
+
// =============================================
|
|
124
|
+
// DESCRIPTION (the only editable field on an api_key)
|
|
125
|
+
// =============================================
|
|
126
|
+
// a creator relabels their OWN key through the generic routed update
|
|
127
|
+
await async_test(
|
|
128
|
+
"creator sets a description on their own key (generic update)",
|
|
129
|
+
() => otherSdk.api.api_keys.updateOne(otherKeyId!, { description: 'Billing export script' }),
|
|
130
|
+
{ onResult: (k: any) => k.description === 'Billing export script' },
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
// the admin's org-wide list must surface it — both the Mongo projection AND the explicit
|
|
134
|
+
// re-map in get_organization_api_keys have to know the field, or it is dropped with no error
|
|
135
|
+
const withDescription = await sdk.api.api_keys.get_organization_api_keys()
|
|
136
|
+
assert(
|
|
137
|
+
withDescription.apiKeys.find(k => k.id === otherKeyId)?.description === 'Billing export script',
|
|
138
|
+
"org-wide list did not return the description set by its creator",
|
|
139
|
+
"org-wide list returns the description (projection + explicit re-map)"
|
|
140
|
+
)
|
|
141
|
+
// re-run the strict allowlist now that an optional field is actually populated
|
|
142
|
+
const offendingWithDescription = withDescription.apiKeys
|
|
143
|
+
.map(k => Object.keys(k).filter(key => !ALLOWED_FIELDS.includes(key)))
|
|
144
|
+
.find(extra => extra.length > 0)
|
|
145
|
+
assert(
|
|
146
|
+
offendingWithDescription === undefined,
|
|
147
|
+
`a described record exposed non-allowlisted fields: ${JSON.stringify(offendingWithDescription)}`,
|
|
148
|
+
"records with a description still contain only allowlisted fields"
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
// CREATOR_ONLY_ACCESS still applies to the generic update — this is precisely why the admin
|
|
152
|
+
// needs a dedicated org-wide action to relabel a key somebody else created
|
|
153
|
+
await async_test(
|
|
154
|
+
"non-admin cannot relabel another user's key via the generic update",
|
|
155
|
+
() => otherSdk.api.api_keys.updateOne(adminKey.id, { description: 'hijacked' }),
|
|
156
|
+
{ shouldError: true, onError: () => true },
|
|
157
|
+
)
|
|
158
|
+
await async_test(
|
|
159
|
+
"admin cannot relabel another user's key via the generic update either (CREATOR_ONLY_ACCESS)",
|
|
160
|
+
() => sdk.api.api_keys.updateOne(otherKeyId!, { description: 'hijacked' }),
|
|
161
|
+
{ shouldError: true, onError: () => true },
|
|
162
|
+
)
|
|
163
|
+
const afterBlockedWrites = await sdk.api.api_keys.get_organization_api_keys()
|
|
164
|
+
assert(
|
|
165
|
+
afterBlockedWrites.apiKeys.find(k => k.id === adminKey.id)?.description === undefined
|
|
166
|
+
&& afterBlockedWrites.apiKeys.find(k => k.id === otherKeyId)?.description === 'Billing export script',
|
|
167
|
+
"a rejected cross-creator relabel still changed a description",
|
|
168
|
+
"rejected cross-creator relabels left both descriptions untouched"
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
// the dedicated admin action DOES reach another user's key
|
|
172
|
+
await async_test(
|
|
173
|
+
"admin update_organization_api_key relabels another user's key",
|
|
174
|
+
() => sdk.api.api_keys.update_organization_api_key({ id: otherKeyId!, description: 'Relabelled by admin' }),
|
|
175
|
+
{ shouldError: false, onResult: () => true },
|
|
176
|
+
)
|
|
177
|
+
const afterAdminRelabel = await sdk.api.api_keys.get_organization_api_keys()
|
|
178
|
+
assert(
|
|
179
|
+
afterAdminRelabel.apiKeys.find(k => k.id === otherKeyId)?.description === 'Relabelled by admin',
|
|
180
|
+
"admin relabel of another user's key did not persist",
|
|
181
|
+
"admin relabel of another user's key persisted"
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
// clearing back to empty is accepted (description is not a required field)
|
|
185
|
+
await async_test(
|
|
186
|
+
"admin can clear a description (empty string)",
|
|
187
|
+
() => sdk.api.api_keys.update_organization_api_key({ id: otherKeyId!, description: '' }),
|
|
188
|
+
{ shouldError: false, onResult: () => true },
|
|
189
|
+
)
|
|
190
|
+
const afterClear = await sdk.api.api_keys.get_organization_api_keys()
|
|
191
|
+
assert(
|
|
192
|
+
!afterClear.apiKeys.find(k => k.id === otherKeyId)?.description,
|
|
193
|
+
"cleared description is still set",
|
|
194
|
+
"a description can be cleared back to empty"
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
// a cross-org / non-existent id is reported as not found, never as a successful relabel
|
|
198
|
+
await async_test(
|
|
199
|
+
"admin update of a non-existent/cross-org key id is rejected, not reported as success",
|
|
200
|
+
() => sdk.api.api_keys.update_organization_api_key({ id: '000000000000000000000000', description: 'nope' }),
|
|
201
|
+
{ shouldError: true, onError: (e: any) => e.statusCode === 404 || /could not find a record/i.test(e.message || e || '') },
|
|
202
|
+
)
|
|
203
|
+
const afterMissingUpdate = await sdk.api.api_keys.get_organization_api_keys()
|
|
204
|
+
assert(
|
|
205
|
+
afterMissingUpdate.apiKeys.every(k => k.description !== 'nope'),
|
|
206
|
+
"a rejected update of an unknown id still wrote a description somewhere",
|
|
207
|
+
"a rejected update of an unknown id left our org's keys untouched"
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
// =============================================
|
|
211
|
+
// DESCRIPTION INPUT HANDLING (edge cases from the QA script)
|
|
212
|
+
// =============================================
|
|
213
|
+
// over the 1000-character limit: a clear 400, never a silent truncation or a 500
|
|
214
|
+
await async_test(
|
|
215
|
+
"an over-long description is rejected with a validation error",
|
|
216
|
+
() => sdk.api.api_keys.updateOne(adminKey.id, { description: 'a'.repeat(1200) }),
|
|
217
|
+
{ shouldError: true, onError: (e: any) => /exceeds maxLength 1000/i.test(e.message || e || '') },
|
|
218
|
+
)
|
|
219
|
+
// punctuation, quotes, emoji and HTML-looking fragments are stored as literal text
|
|
220
|
+
const literalText = '<b>test</b> "quoted" & \'apostrophe\' — emoji 🎉 <script>alert(1)</script>'
|
|
221
|
+
await async_test(
|
|
222
|
+
"punctuation, emoji and HTML-looking text round-trip verbatim",
|
|
223
|
+
async () => {
|
|
224
|
+
await sdk.api.api_keys.updateOne(adminKey.id, { description: literalText })
|
|
225
|
+
return sdk.api.api_keys.getOne(adminKey.id)
|
|
226
|
+
},
|
|
227
|
+
{ onResult: (k: any) => k.description === literalText },
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
// =============================================
|
|
231
|
+
// READONLY FIELDS STAY UNWRITABLE THROUGH UPDATE
|
|
232
|
+
// =============================================
|
|
233
|
+
// enabling `update` on this model must not open a path to the key material. Assert on resulting
|
|
234
|
+
// STATE, so this holds whether the API rejects the write or silently drops the readonly fields.
|
|
235
|
+
// The readonly fields travel WITH a description the request is allowed to write, so the request
|
|
236
|
+
// cannot be rejected wholesale and still pass: the description must land while they do not.
|
|
237
|
+
await sdk.api.api_keys.updateOne(
|
|
238
|
+
adminKey.id,
|
|
239
|
+
{ description: 'tamper probe', hashedKey: 'tampered', scopes: [FORM_INGESTION_API_KEY_SCOPE], creator: otherUser.id } as any,
|
|
240
|
+
)
|
|
241
|
+
const afterTamper = await sdk.api.api_keys.getOne(adminKey.id)
|
|
242
|
+
assert(
|
|
243
|
+
afterTamper.description === 'tamper probe'
|
|
244
|
+
&& (afterTamper as any).hashedKey !== 'tampered'
|
|
245
|
+
&& !afterTamper.scopes?.length
|
|
246
|
+
&& afterTamper.creator === sdk.userInfo.id,
|
|
247
|
+
`readonly fields were not stripped from an accepted update: ${JSON.stringify({ description: afterTamper.description, scopes: afterTamper.scopes, creator: afterTamper.creator })}`,
|
|
248
|
+
"hashedKey, scopes and creator are stripped from an otherwise-valid update"
|
|
249
|
+
)
|
|
250
|
+
// a field that is not on the model at all is a hard rejection, not a silent drop
|
|
251
|
+
await async_test(
|
|
252
|
+
"an undeclared field is rejected by update validation",
|
|
253
|
+
() => sdk.api.api_keys.updateOne(adminKey.id, { key: 'tampered' } as any),
|
|
254
|
+
{ shouldError: true, onError: () => true },
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
// whitespace-only input is accepted (the webapp trims it to empty before sending)
|
|
258
|
+
await async_test(
|
|
259
|
+
"a whitespace-only description is accepted, not an error",
|
|
260
|
+
async () => {
|
|
261
|
+
await sdk.api.api_keys.updateOne(adminKey.id, { description: ' ' })
|
|
262
|
+
return sdk.api.api_keys.getOne(adminKey.id)
|
|
263
|
+
},
|
|
264
|
+
{ onResult: (k: any) => typeof k.description === 'string' },
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
// relabelling must never rotate or invalidate a key
|
|
268
|
+
await sdk.api.api_keys.updateOne(adminKey.id, { description: 'Admin automation key' })
|
|
269
|
+
await async_test(
|
|
270
|
+
"a key still authenticates after its description is changed",
|
|
271
|
+
() => new Session({ host, apiKey: adminKeySecret }).test_authenticated(),
|
|
272
|
+
{ shouldError: false, onResult: () => true },
|
|
273
|
+
)
|
|
274
|
+
|
|
119
275
|
// =============================================
|
|
120
276
|
// ADMIN GATING (negative tests)
|
|
121
277
|
// =============================================
|
|
@@ -124,11 +280,23 @@ export const organization_api_keys_tests = async (
|
|
|
124
280
|
() => otherSdk.api.api_keys.get_organization_api_keys(),
|
|
125
281
|
{ shouldError: true, onError: (e: any) => e.statusCode === 401 || /admin access only/i.test(e.message || '') }
|
|
126
282
|
)
|
|
283
|
+
await async_test(
|
|
284
|
+
"non-admin update_organization_api_key is rejected (401)",
|
|
285
|
+
() => otherSdk.api.api_keys.update_organization_api_key({ id: adminKey.id, description: 'hijacked' }),
|
|
286
|
+
{ shouldError: true, onError: (e: any) => e.statusCode === 401 || /admin access only/i.test(e.message || '') }
|
|
287
|
+
)
|
|
127
288
|
await async_test(
|
|
128
289
|
"non-admin delete_organization_api_key is rejected (401)",
|
|
129
290
|
() => otherSdk.api.api_keys.delete_organization_api_key({ id: adminKey.id }),
|
|
130
291
|
{ shouldError: true, onError: (e: any) => e.statusCode === 401 || /admin access only/i.test(e.message || '') }
|
|
131
292
|
)
|
|
293
|
+
// the rejected non-admin relabel must not have landed
|
|
294
|
+
const afterUpdateGating = await sdk.api.api_keys.get_organization_api_keys()
|
|
295
|
+
assert(
|
|
296
|
+
afterUpdateGating.apiKeys.find(k => k.id === adminKey.id)?.description === 'Admin automation key',
|
|
297
|
+
"rejected non-admin update_organization_api_key still changed the description",
|
|
298
|
+
"rejected non-admin update left the description intact"
|
|
299
|
+
)
|
|
132
300
|
|
|
133
301
|
// confirm the gating did not delete the key
|
|
134
302
|
const afterGating = await sdk.api.api_keys.get_organization_api_keys()
|