@awell-health/awell-extensions 2.0.228 → 2.0.230

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 (71) hide show
  1. package/dist/extensions/bland/actions/getCallDetails/config/dataPoints.d.ts +48 -0
  2. package/dist/extensions/bland/actions/getCallDetails/config/dataPoints.js +48 -0
  3. package/dist/extensions/bland/actions/getCallDetails/config/dataPoints.js.map +1 -1
  4. package/dist/extensions/bland/actions/getCallDetails/config/fields.js +1 -1
  5. package/dist/extensions/bland/actions/getCallDetails/config/fields.js.map +1 -1
  6. package/dist/extensions/bland/actions/getCallDetails/getCallDetails.js +24 -8
  7. package/dist/extensions/bland/actions/getCallDetails/getCallDetails.js.map +1 -1
  8. package/dist/extensions/bland/actions/index.d.ts +549 -1
  9. package/dist/extensions/bland/actions/sendCall/config/dataPoints.js +0 -2
  10. package/dist/extensions/bland/actions/sendCall/config/dataPoints.js.map +1 -1
  11. package/dist/extensions/bland/actions/sendCall/config/fields.d.ts +369 -2
  12. package/dist/extensions/bland/actions/sendCall/config/fields.js +299 -36
  13. package/dist/extensions/bland/actions/sendCall/config/fields.js.map +1 -1
  14. package/dist/extensions/bland/actions/sendCall/sendCall.js +23 -40
  15. package/dist/extensions/bland/actions/sendCall/sendCall.js.map +1 -1
  16. package/dist/extensions/bland/actions/sendCallWithPathway/config/dataPoints.js +0 -2
  17. package/dist/extensions/bland/actions/sendCallWithPathway/config/dataPoints.js.map +1 -1
  18. package/dist/extensions/bland/actions/sendCallWithPathway/config/fields.d.ts +369 -2
  19. package/dist/extensions/bland/actions/sendCallWithPathway/config/fields.js +300 -37
  20. package/dist/extensions/bland/actions/sendCallWithPathway/config/fields.js.map +1 -1
  21. package/dist/extensions/bland/actions/sendCallWithPathway/sendCallWithPathway.js +23 -40
  22. package/dist/extensions/bland/actions/sendCallWithPathway/sendCallWithPathway.js.map +1 -1
  23. package/dist/extensions/bland/api/schema/GetCallDetails.schema.d.ts +20 -29
  24. package/dist/extensions/bland/api/schema/GetCallDetails.schema.js +8 -9
  25. package/dist/extensions/bland/api/schema/GetCallDetails.schema.js.map +1 -1
  26. package/dist/extensions/bland/api/schema/SendCall.schema.d.ts +281 -34
  27. package/dist/extensions/bland/api/schema/SendCall.schema.js +53 -15
  28. package/dist/extensions/bland/api/schema/SendCall.schema.js.map +1 -1
  29. package/dist/extensions/bland/api/schema/atoms/BackgroundTrackSchema.d.ts +7 -0
  30. package/dist/extensions/bland/api/schema/atoms/BackgroundTrackSchema.js +21 -0
  31. package/dist/extensions/bland/api/schema/atoms/BackgroundTrackSchema.js.map +1 -0
  32. package/dist/extensions/bland/api/schema/atoms/ModelSchema.d.ts +2 -0
  33. package/dist/extensions/bland/api/schema/atoms/ModelSchema.js +6 -0
  34. package/dist/extensions/bland/api/schema/atoms/ModelSchema.js.map +1 -0
  35. package/dist/extensions/bland/api/schema/atoms/VoicemailActionSchema.d.ts +2 -0
  36. package/dist/extensions/bland/api/schema/atoms/VoicemailActionSchema.js +10 -0
  37. package/dist/extensions/bland/api/schema/atoms/VoicemailActionSchema.js.map +1 -0
  38. package/dist/extensions/bland/api/schema/atoms/WebhookEventsSchema.d.ts +2 -0
  39. package/dist/extensions/bland/api/schema/atoms/WebhookEventsSchema.js +6 -0
  40. package/dist/extensions/bland/api/schema/atoms/WebhookEventsSchema.js.map +1 -0
  41. package/dist/extensions/bland/api/schema/atoms/index.d.ts +4 -0
  42. package/dist/extensions/bland/api/schema/atoms/index.js +21 -0
  43. package/dist/extensions/bland/api/schema/atoms/index.js.map +1 -0
  44. package/dist/extensions/bland/index.js +2 -0
  45. package/dist/extensions/bland/index.js.map +1 -1
  46. package/dist/extensions/bland/lib/sharedActionFields.d.ts +8 -0
  47. package/dist/extensions/bland/lib/sharedActionFields.js +59 -0
  48. package/dist/extensions/bland/lib/sharedActionFields.js.map +1 -0
  49. package/dist/extensions/bland/webhooks/CallCompleted/__testdata__/callCompleted.mock.d.ts +68 -0
  50. package/dist/extensions/bland/webhooks/CallCompleted/__testdata__/callCompleted.mock.js +108 -0
  51. package/dist/extensions/bland/webhooks/CallCompleted/__testdata__/callCompleted.mock.js.map +1 -0
  52. package/dist/extensions/bland/webhooks/CallCompleted/callCompleted.d.ts +12 -0
  53. package/dist/extensions/bland/webhooks/CallCompleted/callCompleted.js +31 -0
  54. package/dist/extensions/bland/webhooks/CallCompleted/callCompleted.js.map +1 -0
  55. package/dist/extensions/bland/webhooks/CallCompleted/index.d.ts +1 -0
  56. package/dist/extensions/bland/webhooks/CallCompleted/index.js +18 -0
  57. package/dist/extensions/bland/webhooks/CallCompleted/index.js.map +1 -0
  58. package/dist/extensions/bland/webhooks/CallCompleted/types.d.ts +37 -0
  59. package/dist/extensions/bland/webhooks/CallCompleted/types.js +3 -0
  60. package/dist/extensions/bland/webhooks/CallCompleted/types.js.map +1 -0
  61. package/dist/extensions/bland/webhooks/index.d.ts +9 -0
  62. package/dist/extensions/bland/webhooks/index.js +6 -0
  63. package/dist/extensions/bland/webhooks/index.js.map +1 -0
  64. package/dist/extensions/elation/webhooks/appointmentCreatedOrUpdated.js +4 -3
  65. package/dist/extensions/elation/webhooks/appointmentCreatedOrUpdated.js.map +1 -1
  66. package/dist/extensions/elation/webhooks/patientCreatedOrUpdated.js +4 -3
  67. package/dist/extensions/elation/webhooks/patientCreatedOrUpdated.js.map +1 -1
  68. package/dist/extensions/markdown.json +1 -1
  69. package/dist/extensions/text-em-all/actions/createCallBroadcast/config.d.ts +20 -20
  70. package/dist/extensions/text-em-all/actions/types.d.ts +14 -14
  71. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoicemailActionSchema.js","sourceRoot":"","sources":["../../../../../../extensions/bland/api/schema/atoms/VoicemailActionSchema.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AAEV,QAAA,qBAAqB,GAAG,OAAC,CAAC,IAAI,CAAC;IAC1C,QAAQ;IACR,eAAe;IACf,QAAQ;CACT,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { z } from 'zod';
2
+ export declare const WebhookEventsSchema: z.ZodArray<z.ZodEnum<["queue", "call", "latency", "webhook", "tool", "dynamic_data"]>, "many">;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebhookEventsSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.WebhookEventsSchema = zod_1.z.array(zod_1.z.enum(['queue', 'call', 'latency', 'webhook', 'tool', 'dynamic_data']));
6
+ //# sourceMappingURL=WebhookEventsSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookEventsSchema.js","sourceRoot":"","sources":["../../../../../../extensions/bland/api/schema/atoms/WebhookEventsSchema.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AAEV,QAAA,mBAAmB,GAAG,OAAC,CAAC,KAAK,CACxC,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CACxE,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './BackgroundTrackSchema';
2
+ export * from './ModelSchema';
3
+ export * from './VoicemailActionSchema';
4
+ export * from './WebhookEventsSchema';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./BackgroundTrackSchema"), exports);
18
+ __exportStar(require("./ModelSchema"), exports);
19
+ __exportStar(require("./VoicemailActionSchema"), exports);
20
+ __exportStar(require("./WebhookEventsSchema"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../extensions/bland/api/schema/atoms/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAuC;AACvC,gDAA6B;AAC7B,0DAAuC;AACvC,wDAAqC"}
@@ -4,6 +4,7 @@ exports.bland = void 0;
4
4
  const extensions_core_1 = require("@awell-health/extensions-core");
5
5
  const actions_1 = require("./actions");
6
6
  const settings_1 = require("./settings");
7
+ const webhooks_1 = require("./webhooks");
7
8
  exports.bland = {
8
9
  key: 'bland',
9
10
  title: 'Bland.ai',
@@ -15,5 +16,6 @@ exports.bland = {
15
16
  },
16
17
  actions: actions_1.actions,
17
18
  settings: settings_1.settings,
19
+ webhooks: webhooks_1.webhooks,
18
20
  };
19
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../extensions/bland/index.ts"],"names":[],"mappings":";;;AACA,mEAAoE;AACpE,uCAAmC;AACnC,yCAAqC;AAExB,QAAA,KAAK,GAAc;IAC9B,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,UAAU;IACjB,QAAQ,EACN,+FAA+F;IACjG,WAAW,EAAE,mCAAmC;IAChD,QAAQ,EAAE,0BAAQ,CAAC,aAAa;IAChC,MAAM,EAAE;QACN,UAAU,EAAE,4BAAU,CAAC,KAAK;KAC7B;IACD,OAAO,EAAP,iBAAO;IACP,QAAQ,EAAR,mBAAQ;CACT,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../extensions/bland/index.ts"],"names":[],"mappings":";;;AACA,mEAAoE;AACpE,uCAAmC;AACnC,yCAAqC;AACrC,yCAAqC;AAExB,QAAA,KAAK,GAAc;IAC9B,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,UAAU;IACjB,QAAQ,EACN,+FAA+F;IACjG,WAAW,EAAE,mCAAmC;IAChD,QAAQ,EAAE,0BAAQ,CAAC,aAAa;IAChC,MAAM,EAAE;QACN,UAAU,EAAE,4BAAU,CAAC,KAAK;KAC7B;IACD,OAAO,EAAP,iBAAO;IACP,QAAQ,EAAR,mBAAQ;IACR,QAAQ,EAAR,mBAAQ;CACT,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export declare const dropdownOptionsBoolean: {
3
+ value: string;
4
+ label: string;
5
+ }[];
6
+ export declare const dropdownOptionsBooleanSchema: z.ZodEffects<z.ZodEnum<["true", "false"]>, boolean, "true" | "false">;
7
+ export declare const JsonObjectSchema: z.ZodEffects<z.ZodOptional<z.ZodString>, Record<string, unknown>, string | undefined>;
8
+ export declare const JsonArraySchema: z.ZodEffects<z.ZodOptional<z.ZodString>, Record<string, string>[], string | undefined>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonArraySchema = exports.JsonObjectSchema = exports.dropdownOptionsBooleanSchema = exports.dropdownOptionsBoolean = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const zod_1 = require("zod");
6
+ exports.dropdownOptionsBoolean = [
7
+ { value: 'true', label: 'Yes' },
8
+ { value: 'false', label: 'No' },
9
+ ];
10
+ exports.dropdownOptionsBooleanSchema = zod_1.z
11
+ .enum(['true', 'false'])
12
+ .transform((val) => val === 'true');
13
+ exports.JsonObjectSchema = zod_1.z
14
+ .string()
15
+ .optional()
16
+ .transform((str, ctx) => {
17
+ if ((0, lodash_1.isNil)(str) || (0, lodash_1.isEmpty)(str))
18
+ return {};
19
+ try {
20
+ const parsedJson = JSON.parse(str);
21
+ return parsedJson;
22
+ }
23
+ catch (e) {
24
+ ctx.addIssue({
25
+ code: 'custom',
26
+ message: 'Not a valid JSON object',
27
+ });
28
+ return zod_1.z.NEVER;
29
+ }
30
+ });
31
+ exports.JsonArraySchema = zod_1.z
32
+ .string()
33
+ .optional()
34
+ .transform((str, ctx) => {
35
+ if ((0, lodash_1.isNil)(str) || (0, lodash_1.isEmpty)(str))
36
+ return [];
37
+ try {
38
+ const parsedJson = JSON.parse(str);
39
+ if ((0, lodash_1.isEmpty)(parsedJson)) {
40
+ return [];
41
+ }
42
+ if (!Array.isArray(parsedJson)) {
43
+ ctx.addIssue({
44
+ code: 'custom',
45
+ message: 'pronunciation_guide should be an array',
46
+ });
47
+ return zod_1.z.NEVER;
48
+ }
49
+ return parsedJson;
50
+ }
51
+ catch (e) {
52
+ ctx.addIssue({
53
+ code: 'custom',
54
+ message: 'Invalid pronunciation_guide data',
55
+ });
56
+ return zod_1.z.NEVER;
57
+ }
58
+ });
59
+ //# sourceMappingURL=sharedActionFields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedActionFields.js","sourceRoot":"","sources":["../../../../extensions/bland/lib/sharedActionFields.ts"],"names":[],"mappings":";;;AAAA,mCAAuC;AACvC,6BAAuB;AAEV,QAAA,sBAAsB,GAAG;IACpC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;IAC/B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;CAChC,CAAA;AAEY,QAAA,4BAA4B,GAAG,OAAC;KAC1C,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvB,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,CAAA;AAExB,QAAA,gBAAgB,GAAG,OAAC;KAC9B,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAA2B,EAAE;IAC/C,IAAI,IAAA,cAAK,EAAC,GAAG,CAAC,IAAI,IAAA,gBAAO,EAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAEzC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClC,OAAO,UAAU,CAAA;IACnB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,yBAAyB;SACnC,CAAC,CAAA;QACF,OAAO,OAAC,CAAC,KAAK,CAAA;IAChB,CAAC;AACH,CAAC,CAAC,CAAA;AAES,QAAA,eAAe,GAAG,OAAC;KAC7B,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAiC,EAAE;IACrD,IAAI,IAAA,cAAK,EAAC,GAAG,CAAC,IAAI,IAAA,gBAAO,EAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAEzC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAElC,IAAI,IAAA,gBAAO,EAAC,UAAU,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,CAAA;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,wCAAwC;aAClD,CAAC,CAAA;YACF,OAAO,OAAC,CAAC,KAAK,CAAA;QAChB,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,kCAAkC;SAC5C,CAAC,CAAA;QACF,OAAO,OAAC,CAAC,KAAK,CAAA;IAChB,CAAC;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,68 @@
1
+ export declare const callCompletedPayload: {
2
+ call_id: string;
3
+ c_id: string;
4
+ call_length: number;
5
+ batch_id: null;
6
+ to: string;
7
+ from: string;
8
+ completed: true;
9
+ created_at: string;
10
+ inbound: false;
11
+ queue_status: string;
12
+ max_duration: number;
13
+ error_message: null;
14
+ variables: {
15
+ now: string;
16
+ now_utc: string;
17
+ short_from: string;
18
+ short_to: string;
19
+ from: string;
20
+ to: string;
21
+ call_id: string;
22
+ phone_number: string;
23
+ country: string;
24
+ language: string;
25
+ metadata: {
26
+ awell_patient_id: string;
27
+ awell_care_flow_definition_id: string;
28
+ awell_care_flow_id: string;
29
+ awell_activity_id: string;
30
+ };
31
+ timestamp: string;
32
+ timezone: string;
33
+ };
34
+ answered_by: null;
35
+ record: false;
36
+ recording_url: null;
37
+ metadata: {
38
+ awell_patient_id: string;
39
+ awell_activity_id: string;
40
+ awell_care_flow_id: string;
41
+ awell_care_flow_definition_id: string;
42
+ };
43
+ summary: string;
44
+ price: number;
45
+ started_at: string;
46
+ local_dialing: false;
47
+ call_ended_by: string;
48
+ pathway_logs: null;
49
+ analysis_schema: null;
50
+ analysis: {
51
+ name: string;
52
+ };
53
+ transferred_to: null;
54
+ pathway_tags: never[];
55
+ recording_expiration: null;
56
+ status: string;
57
+ pathway_id: null;
58
+ concatenated_transcript: string;
59
+ transcripts: {
60
+ id: number;
61
+ user: string;
62
+ text: string;
63
+ created_at: string;
64
+ }[];
65
+ corrected_duration: string;
66
+ end_at: string;
67
+ disposition_tag: string;
68
+ };
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callCompletedPayload = void 0;
4
+ exports.callCompletedPayload = {
5
+ call_id: '4c150427-fb1e-4dd1-a44d-4f25b24361b0',
6
+ c_id: '4c150427-fb1e-4dd1-a44d-4f25b24361b0',
7
+ call_length: 0.4,
8
+ batch_id: null,
9
+ to: '+32476581696',
10
+ from: '+441174634094',
11
+ completed: true,
12
+ created_at: '2025-04-15T18:31:53.696+00:00',
13
+ inbound: false,
14
+ queue_status: 'complete',
15
+ max_duration: 30,
16
+ error_message: null,
17
+ variables: {
18
+ now: 'Tuesday, April 15, 2025 11:32 AM',
19
+ now_utc: 'Tuesday, April 15, 2025 6:32 PM',
20
+ short_from: '1174634094',
21
+ short_to: '2476581696',
22
+ from: '+441174634094',
23
+ to: '+32476581696',
24
+ call_id: '4c150427-fb1e-4dd1-a44d-4f25b24361b0',
25
+ phone_number: '+32476581696',
26
+ country: 'BE',
27
+ language: 'English',
28
+ metadata: {
29
+ awell_patient_id: 'patient-id',
30
+ awell_care_flow_definition_id: 'pathway-definition-id',
31
+ awell_care_flow_id: 'pathway-id',
32
+ awell_activity_id: 'activity-id',
33
+ },
34
+ timestamp: '2025-04-15T11:32:00-07:00',
35
+ timezone: 'America/Los_Angeles',
36
+ },
37
+ answered_by: null,
38
+ record: false,
39
+ recording_url: null,
40
+ metadata: {
41
+ awell_patient_id: 'patient-id',
42
+ awell_activity_id: 'activity-id',
43
+ awell_care_flow_id: 'pathway-id',
44
+ awell_care_flow_definition_id: 'pathway-definition-id',
45
+ },
46
+ summary: 'The call was brief and did not progress beyond introductions. The user, Mr. Chung, provided his name but the conversation was cut short, and the call was ended abruptly without discussing any specific topic or issue.',
47
+ price: 0.036,
48
+ started_at: '2025-04-15T18:31:53.696Z',
49
+ local_dialing: false,
50
+ call_ended_by: 'ASSISTANT',
51
+ pathway_logs: null,
52
+ analysis_schema: null,
53
+ analysis: { name: 'Chung' },
54
+ transferred_to: null,
55
+ pathway_tags: [],
56
+ recording_expiration: null,
57
+ status: 'completed',
58
+ pathway_id: null,
59
+ concatenated_transcript: 'assistant: Hello, thank you for calling. Could you please tell me your name? \n user: My name is Chung. \n assistant: Thank you, Mr. Chung. \n assistant: Hello, Mr. Chung, are you still there? \n user: Yes. \n agent-action: Ended call \n assistant: Goodbye, Mr. Chung. \n ',
60
+ transcripts: [
61
+ {
62
+ id: 144157637,
63
+ user: 'assistant',
64
+ text: 'Hello, thank you for calling. Could you please tell me your name?',
65
+ created_at: '2025-04-15T18:32:02.173844+00:00',
66
+ },
67
+ {
68
+ id: 144157732,
69
+ user: 'user',
70
+ text: 'My name is Chung.',
71
+ created_at: '2025-04-15T18:32:06.228492+00:00',
72
+ },
73
+ {
74
+ id: 144157766,
75
+ user: 'assistant',
76
+ text: 'Thank you, Mr. Chung.',
77
+ created_at: '2025-04-15T18:32:08.112669+00:00',
78
+ },
79
+ {
80
+ id: 144158017,
81
+ user: 'assistant',
82
+ text: 'Hello, Mr. Chung, are you still there?',
83
+ created_at: '2025-04-15T18:32:18.672315+00:00',
84
+ },
85
+ {
86
+ id: 144158086,
87
+ user: 'user',
88
+ text: 'Yes.',
89
+ created_at: '2025-04-15T18:32:21.219698+00:00',
90
+ },
91
+ {
92
+ id: 144158138,
93
+ user: 'agent-action',
94
+ text: 'Ended call',
95
+ created_at: '2025-04-15T18:32:23.353835+00:00',
96
+ },
97
+ {
98
+ id: 144158139,
99
+ user: 'assistant',
100
+ text: 'Goodbye, Mr. Chung.',
101
+ created_at: '2025-04-15T18:32:23.355831+00:00',
102
+ },
103
+ ],
104
+ corrected_duration: '24',
105
+ end_at: '2025-04-15T18:32:23.000Z',
106
+ disposition_tag: 'NO_CONTACT_MADE',
107
+ };
108
+ //# sourceMappingURL=callCompleted.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callCompleted.mock.js","sourceRoot":"","sources":["../../../../../../extensions/bland/webhooks/CallCompleted/__testdata__/callCompleted.mock.ts"],"names":[],"mappings":";;;AACa,QAAA,oBAAoB,GAAG;IAClC,OAAO,EAAE,sCAAsC;IAC/C,IAAI,EAAE,sCAAsC;IAC5C,WAAW,EAAE,GAAG;IAChB,QAAQ,EAAE,IAAI;IACd,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,eAAe;IACrB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,+BAA+B;IAC3C,OAAO,EAAE,KAAK;IACd,YAAY,EAAE,UAAU;IACxB,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE;QACT,GAAG,EAAE,kCAAkC;QACvC,OAAO,EAAE,iCAAiC;QAC1C,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,YAAY;QACtB,IAAI,EAAE,eAAe;QACrB,EAAE,EAAE,cAAc;QAClB,OAAO,EAAE,sCAAsC;QAC/C,YAAY,EAAE,cAAc;QAC5B,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE;YACR,gBAAgB,EAAE,YAAY;YAC9B,6BAA6B,EAAE,uBAAuB;YACtD,kBAAkB,EAAE,YAAY;YAChC,iBAAiB,EAAE,aAAa;SACjC;QACD,SAAS,EAAE,2BAA2B;QACtC,QAAQ,EAAE,qBAAqB;KAChC;IACD,WAAW,EAAE,IAAI;IACjB,MAAM,EAAE,KAAK;IACb,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE;QACR,gBAAgB,EAAE,YAAY;QAC9B,iBAAiB,EAAE,aAAa;QAChC,kBAAkB,EAAE,YAAY;QAChC,6BAA6B,EAAE,uBAAuB;KACvD;IACD,OAAO,EACL,0NAA0N;IAC5N,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,0BAA0B;IACtC,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,WAAW;IAC1B,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3B,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,EAAE;IAChB,oBAAoB,EAAE,IAAI;IAC1B,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,IAAI;IAChB,uBAAuB,EACrB,kRAAkR;IACpR,WAAW,EAAE;QACX;YACE,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,mEAAmE;YACzE,UAAU,EAAE,kCAAkC;SAC/C;QACD;YACE,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,mBAAmB;YACzB,UAAU,EAAE,kCAAkC;SAC/C;QACD;YACE,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,uBAAuB;YAC7B,UAAU,EAAE,kCAAkC;SAC/C;QACD;YACE,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,wCAAwC;YAC9C,UAAU,EAAE,kCAAkC;SAC/C;QACD;YACE,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,kCAAkC;SAC/C;QACD;YACE,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,kCAAkC;SAC/C;QACD;YACE,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,qBAAqB;YAC3B,UAAU,EAAE,kCAAkC;SAC/C;KACF;IACD,kBAAkB,EAAE,IAAI;IACxB,MAAM,EAAE,0BAA0B;IAClC,eAAe,EAAE,iBAAiB;CACG,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { type Webhook } from '@awell-health/extensions-core';
2
+ import { type settings } from '../../settings';
3
+ import { type CallCompletedWebhookPayload } from './types';
4
+ declare const dataPoints: {
5
+ callId: {
6
+ key: string;
7
+ valueType: "string";
8
+ };
9
+ };
10
+ export declare const callCompleted: Webhook<keyof typeof dataPoints, CallCompletedWebhookPayload, typeof settings>;
11
+ export type CallCompleted = typeof callCompleted;
12
+ export {};
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callCompleted = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const dataPoints = {
6
+ callId: {
7
+ key: 'callId',
8
+ valueType: 'string',
9
+ },
10
+ };
11
+ exports.callCompleted = {
12
+ key: 'callCompleted',
13
+ dataPoints,
14
+ onEvent: async ({ payload: { payload, rawBody, headers, settings }, onSuccess, onError, }) => {
15
+ const callId = payload === null || payload === void 0 ? void 0 : payload.call_id;
16
+ if ((0, lodash_1.isNil)(callId)) {
17
+ await onError({
18
+ response: {
19
+ statusCode: 400,
20
+ message: 'Missing call_id in payload',
21
+ },
22
+ });
23
+ }
24
+ await onSuccess({
25
+ data_points: {
26
+ callId,
27
+ },
28
+ });
29
+ },
30
+ };
31
+ //# sourceMappingURL=callCompleted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callCompleted.js","sourceRoot":"","sources":["../../../../../extensions/bland/webhooks/CallCompleted/callCompleted.ts"],"names":[],"mappings":";;;AAAA,mCAA8B;AAQ9B,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE;QACN,GAAG,EAAE,QAAQ;QACb,SAAS,EAAE,QAAQ;KACpB;CAC4C,CAAA;AAElC,QAAA,aAAa,GAItB;IACF,GAAG,EAAE,eAAe;IACpB,UAAU;IACV,OAAO,EAAE,KAAK,EAAE,EACd,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAChD,SAAS,EACT,OAAO,GACR,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAA;QAE/B,IAAI,IAAA,cAAK,EAAC,MAAM,CAAC,EAAE,CAAC;YAClB,MAAM,OAAO,CAAC;gBACZ,QAAQ,EAAE;oBACR,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,4BAA4B;iBACtC;aACF,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,SAAS,CAAC;YACd,WAAW,EAAE;gBACX,MAAM;aACP;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
@@ -0,0 +1 @@
1
+ export * from './callCompleted';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./callCompleted"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../extensions/bland/webhooks/CallCompleted/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA+B"}
@@ -0,0 +1,37 @@
1
+ export interface CallCompletedWebhookPayload {
2
+ call_id: string;
3
+ c_id: string;
4
+ call_length: number;
5
+ batch_id: string | null;
6
+ to: string;
7
+ from: string;
8
+ completed: boolean;
9
+ created_at: string;
10
+ inbound: boolean;
11
+ queue_status: string;
12
+ max_duration: number;
13
+ error_message: string | null;
14
+ variables: Record<string, any>;
15
+ answered_by: string | null;
16
+ record: boolean;
17
+ recording_url: string | null;
18
+ metadata: Record<string, any>;
19
+ summary: string;
20
+ price: number;
21
+ started_at: string;
22
+ local_dialing: boolean;
23
+ call_ended_by: string;
24
+ pathway_logs: unknown | null;
25
+ analysis_schema: unknown | null;
26
+ analysis: Record<string, any>;
27
+ transferred_to: string | null;
28
+ pathway_tags: string[];
29
+ recording_expiration: string | null;
30
+ status: string;
31
+ pathway_id: string | null;
32
+ concatenated_transcript: string;
33
+ transcripts: Array<Record<string, any>>;
34
+ corrected_duration: string;
35
+ end_at: string;
36
+ disposition_tag: string;
37
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../extensions/bland/webhooks/CallCompleted/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export declare const webhooks: import("@awell-health/extensions-core").Webhook<"callId", import("./CallCompleted/types").CallCompletedWebhookPayload, {
2
+ apiKey: {
3
+ key: string;
4
+ label: string;
5
+ obfuscated: true;
6
+ description: string;
7
+ required: true;
8
+ };
9
+ }>[];
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.webhooks = void 0;
4
+ const callCompleted_1 = require("./CallCompleted/callCompleted");
5
+ exports.webhooks = [callCompleted_1.callCompleted];
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../extensions/bland/webhooks/index.ts"],"names":[],"mappings":";;;AAAA,iEAA6D;AAEhD,QAAA,QAAQ,GAAG,CAAC,6BAAa,CAAC,CAAA"}
@@ -29,17 +29,18 @@ exports.appointmentCreatedOrUpdated = {
29
29
  const { success, data: durationString } = settings_1.rateLimitDurationSchema.safeParse(settings.rateLimitDuration);
30
30
  if (success && !(0, lodash_1.isNil)(durationString)) {
31
31
  const duration = (0, settings_1.transformRateLimitDuration)(durationString);
32
- const limiter = rateLimiter('elation-appointment', {
32
+ const limiterName = `elation-appointment-${(_a = endpoint === null || endpoint === void 0 ? void 0 : endpoint.id) !== null && _a !== void 0 ? _a : 'global'}`;
33
+ const limiter = rateLimiter(limiterName, {
33
34
  requests: 1,
34
35
  duration,
35
36
  });
36
- const key = `${(_a = endpoint === null || endpoint === void 0 ? void 0 : endpoint.id) !== null && _a !== void 0 ? _a : 'global'}-${appointmentId}`;
37
+ const key = appointmentId.toString();
37
38
  const { success } = await limiter.limit(key);
38
39
  if (!success) {
39
40
  await onError({
40
41
  response: {
41
42
  statusCode: 200,
42
- message: `Rate limit exceeded. 200 OK response sent to Elation to prevent further requests for appointment ${appointmentId} on endpoint ${(_b = endpoint === null || endpoint === void 0 ? void 0 : endpoint.url) !== null && _b !== void 0 ? _b : 'global'}.`,
43
+ message: `Rate limit exceeded on limiter ${limiterName} for key ${key}. 200 OK response sent to Elation to prevent further requests for appointment ${appointmentId} on endpoint ${(_b = endpoint === null || endpoint === void 0 ? void 0 : endpoint.url) !== null && _b !== void 0 ? _b : 'global'}.`,
43
44
  },
44
45
  });
45
46
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"appointmentCreatedOrUpdated.js","sourceRoot":"","sources":["../../../../extensions/elation/webhooks/appointmentCreatedOrUpdated.ts"],"names":[],"mappings":";;;AAIA,4CAA6C;AAE7C,0CAGoB;AACpB,mCAA8B;AAE9B,MAAM,UAAU,GAAG;IACjB,aAAa,EAAE;QACb,GAAG,EAAE,eAAe;QACpB,SAAS,EAAE,QAAQ;KACpB;IACD,WAAW,EAAE;QACX,GAAG,EAAE,aAAa;QAClB,SAAS,EAAE,MAAM;KAClB;CAC4C,CAAA;AAElC,QAAA,2BAA2B,GAGpC;IACF,GAAG,EAAE,6BAA6B;IAClC,UAAU;IACV,OAAO,EAAE,KAAK,EAAE,EACd,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACxC,SAAS,EACT,OAAO,EACP,OAAO,EAAE,EAAE,WAAW,EAAE,GACzB,EAAE,EAAE;;QACH,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAC1C,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAGjD,CAAA;QAED,6CAA6C;QAC7C,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAM;QACR,CAAC;QAED,gBAAgB;QAChB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,kCAAuB,CAAC,SAAS,CACzE,QAAQ,CAAC,iBAAiB,CAC3B,CAAA;QACD,IAAI,OAAO,IAAI,CAAC,IAAA,cAAK,EAAC,cAAc,CAAC,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAA,qCAA0B,EAAC,cAAc,CAAC,CAAA;YAC3D,MAAM,OAAO,GAAG,WAAW,CAAC,qBAAqB,EAAE;gBACjD,QAAQ,EAAE,CAAC;gBACX,QAAQ;aACT,CAAC,CAAA;YACF,MAAM,GAAG,GAAG,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,mCAAI,QAAQ,IAAI,aAAa,EAAE,CAAA;YAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,OAAO,CAAC;oBACZ,QAAQ,EAAE;wBACR,UAAU,EAAE,GAAG;wBACf,OAAO,EAAE,oGAAoG,aAAa,gBAAgB,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,mCAAI,QAAQ,GAAG;qBACvK;iBACF,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;YAChC,MAAM,OAAO,CAAC;gBACZ,QAAQ,EAAE;oBACR,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,gCAAgC;iBAC1C;aACF,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC;gBACd,WAAW,EAAE;oBACX,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;oBACpC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAClC;gBACD,kBAAkB,EAAE;oBAClB,MAAM,EAAE,0BAAc;oBACtB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;iBACzB;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"appointmentCreatedOrUpdated.js","sourceRoot":"","sources":["../../../../extensions/elation/webhooks/appointmentCreatedOrUpdated.ts"],"names":[],"mappings":";;;AAIA,4CAA6C;AAE7C,0CAGoB;AACpB,mCAA8B;AAE9B,MAAM,UAAU,GAAG;IACjB,aAAa,EAAE;QACb,GAAG,EAAE,eAAe;QACpB,SAAS,EAAE,QAAQ;KACpB;IACD,WAAW,EAAE;QACX,GAAG,EAAE,aAAa;QAClB,SAAS,EAAE,MAAM;KAClB;CAC4C,CAAA;AAElC,QAAA,2BAA2B,GAGpC;IACF,GAAG,EAAE,6BAA6B;IAClC,UAAU;IACV,OAAO,EAAE,KAAK,EAAE,EACd,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACxC,SAAS,EACT,OAAO,EACP,OAAO,EAAE,EAAE,WAAW,EAAE,GACzB,EAAE,EAAE;;QACH,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAC1C,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAGjD,CAAA;QAED,6CAA6C;QAC7C,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAM;QACR,CAAC;QAED,gBAAgB;QAChB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,kCAAuB,CAAC,SAAS,CACzE,QAAQ,CAAC,iBAAiB,CAC3B,CAAA;QACD,IAAI,OAAO,IAAI,CAAC,IAAA,cAAK,EAAC,cAAc,CAAC,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAA,qCAA0B,EAAC,cAAc,CAAC,CAAA;YAC3D,MAAM,WAAW,GAAG,uBAAuB,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,mCAAI,QAAQ,EAAE,CAAA;YACrE,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE;gBACvC,QAAQ,EAAE,CAAC;gBACX,QAAQ;aACT,CAAC,CAAA;YACF,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAA;YACpC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,OAAO,CAAC;oBACZ,QAAQ,EAAE;wBACR,UAAU,EAAE,GAAG;wBACf,OAAO,EAAE,kCAAkC,WAAW,YAAY,GAAG,iFAAiF,aAAa,gBAAgB,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,mCAAI,QAAQ,GAAG;qBAChN;iBACF,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;YAChC,MAAM,OAAO,CAAC;gBACZ,QAAQ,EAAE;oBACR,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,gCAAgC;iBAC1C;aACF,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC;gBACd,WAAW,EAAE;oBACX,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;oBACpC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAClC;gBACD,kBAAkB,EAAE;oBAClB,MAAM,EAAE,0BAAc;oBACtB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;iBACzB;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -28,17 +28,18 @@ exports.patientCreatedOrUpdated = {
28
28
  const { success, data: durationString } = settings_1.rateLimitDurationSchema.safeParse(settings.rateLimitDuration);
29
29
  if (success && !(0, lodash_1.isNil)(durationString)) {
30
30
  const duration = (0, settings_1.transformRateLimitDuration)(durationString);
31
- const limiter = rateLimiter('elation-patient', {
31
+ const limiterName = `elation-patient-${(_a = endpoint === null || endpoint === void 0 ? void 0 : endpoint.id) !== null && _a !== void 0 ? _a : 'global'}`;
32
+ const limiter = rateLimiter(limiterName, {
32
33
  requests: 1,
33
34
  duration,
34
35
  });
35
- const key = `${(_a = endpoint === null || endpoint === void 0 ? void 0 : endpoint.id) !== null && _a !== void 0 ? _a : 'global'}-${patientId}`;
36
+ const key = patientId.toString();
36
37
  const { success } = await limiter.limit(key);
37
38
  if (!success) {
38
39
  await onError({
39
40
  response: {
40
41
  statusCode: 200,
41
- message: `Rate limit exceeded for patient_id=${patientId} on endpoint ${(_b = endpoint === null || endpoint === void 0 ? void 0 : endpoint.url) !== null && _b !== void 0 ? _b : 'global'}. 200 OK response sent to Elation to prevent further requests.`,
42
+ message: `Rate limit exceeded on limiter ${limiterName} for key ${key}. 200 OK response sent to Elation to prevent further requests for patient ${patientId} on endpoint ${(_b = endpoint === null || endpoint === void 0 ? void 0 : endpoint.url) !== null && _b !== void 0 ? _b : 'global'}.`,
42
43
  },
43
44
  });
44
45
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"patientCreatedOrUpdated.js","sourceRoot":"","sources":["../../../../extensions/elation/webhooks/patientCreatedOrUpdated.ts"],"names":[],"mappings":";;;AAKA,0CAGoB;AACpB,mCAA8B;AAE9B,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE;QACT,GAAG,EAAE,WAAW;QAChB,SAAS,EAAE,QAAQ;KACpB;IACD,OAAO,EAAE;QACP,GAAG,EAAE,SAAS;QACd,SAAS,EAAE,MAAM;KAClB;CAC4C,CAAA;AAElC,QAAA,uBAAuB,GAGhC;IACF,GAAG,EAAE,yBAAyB;IAC9B,UAAU;IACV,OAAO,EAAE,KAAK,EAAE,EACd,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACxC,SAAS,EACT,OAAO,EACP,OAAO,EAAE,EAAE,WAAW,EAAE,GACzB,EAAE,EAAE;;QACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;QAC1C,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,IAEzB,CAAA;QACD,4CAA4C;QAC5C,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAM;QACR,CAAC;QAED,gBAAgB;QAChB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,kCAAuB,CAAC,SAAS,CACzE,QAAQ,CAAC,iBAAiB,CAC3B,CAAA;QACD,IAAI,OAAO,IAAI,CAAC,IAAA,cAAK,EAAC,cAAc,CAAC,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAA,qCAA0B,EAAC,cAAc,CAAC,CAAA;YAC3D,MAAM,OAAO,GAAG,WAAW,CAAC,iBAAiB,EAAE;gBAC7C,QAAQ,EAAE,CAAC;gBACX,QAAQ;aACT,CAAC,CAAA;YACF,MAAM,GAAG,GAAG,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,mCAAI,QAAQ,IAAI,SAAS,EAAE,CAAA;YACtD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,OAAO,CAAC;oBACZ,QAAQ,EAAE;wBACR,UAAU,EAAE,GAAG;wBACf,OAAO,EAAE,sCAAsC,SAAS,gBAAgB,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,mCAAI,QAAQ,gEAAgE;qBAClK;iBACF,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5B,MAAM,OAAO,CAAC;gBACZ,QAAQ,EAAE;oBACR,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,2BAA2B;iBACrC;aACF,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC;gBACd,WAAW,EAAE;oBACX,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAC9B;gBACD,iDAAiD;gBACjD,kBAAkB,EAAE;oBAClB,MAAM,EAAE,gCAAgC;oBACxC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;iBACvB;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"patientCreatedOrUpdated.js","sourceRoot":"","sources":["../../../../extensions/elation/webhooks/patientCreatedOrUpdated.ts"],"names":[],"mappings":";;;AAKA,0CAGoB;AACpB,mCAA8B;AAE9B,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE;QACT,GAAG,EAAE,WAAW;QAChB,SAAS,EAAE,QAAQ;KACpB;IACD,OAAO,EAAE;QACP,GAAG,EAAE,SAAS;QACd,SAAS,EAAE,MAAM;KAClB;CAC4C,CAAA;AAElC,QAAA,uBAAuB,GAGhC;IACF,GAAG,EAAE,yBAAyB;IAC9B,UAAU;IACV,OAAO,EAAE,KAAK,EAAE,EACd,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACxC,SAAS,EACT,OAAO,EACP,OAAO,EAAE,EAAE,WAAW,EAAE,GACzB,EAAE,EAAE;;QACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;QAC1C,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,IAEzB,CAAA;QACD,4CAA4C;QAC5C,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAM;QACR,CAAC;QAED,gBAAgB;QAChB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,kCAAuB,CAAC,SAAS,CACzE,QAAQ,CAAC,iBAAiB,CAC3B,CAAA;QACD,IAAI,OAAO,IAAI,CAAC,IAAA,cAAK,EAAC,cAAc,CAAC,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAA,qCAA0B,EAAC,cAAc,CAAC,CAAA;YAC3D,MAAM,WAAW,GAAG,mBAAmB,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,mCAAI,QAAQ,EAAE,CAAA;YACjE,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE;gBACvC,QAAQ,EAAE,CAAC;gBACX,QAAQ;aACT,CAAC,CAAA;YACF,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;YAChC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,OAAO,CAAC;oBACZ,QAAQ,EAAE;wBACR,UAAU,EAAE,GAAG;wBACf,OAAO,EAAE,kCAAkC,WAAW,YAAY,GAAG,6EAA6E,SAAS,gBAAgB,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,mCAAI,QAAQ,GAAG;qBACxM;iBACF,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5B,MAAM,OAAO,CAAC;gBACZ,QAAQ,EAAE;oBACR,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,2BAA2B;iBACrC;aACF,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC;gBACd,WAAW,EAAE;oBACX,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAC9B;gBACD,iDAAiD;gBACjD,kBAAkB,EAAE;oBAClB,MAAM,EAAE,gCAAgC;oBACxC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;iBACvB;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -12,7 +12,7 @@
12
12
  "changelog": "# CHANGELOG"
13
13
  },
14
14
  "bland": {
15
- "readme": "---\ntitle: Bland.ai\ndescription: To do\n---\n\n# Bland.ai\n\nWith Bland.ai you can build, test, and deploy AI phone calling agents. \n\n## Extension settings\n\nTo set up this extension, you will need to provide an API key for Bland.\n\n## Actions\n\n### Send call (with Pathway)\n\nSend an AI phone call using a simple prompt or a conversational pathway agent you've built in the Bland platform. **The action is completed when Awell receives a callback from the Bland platform.**\n\nAwell lets you specify both the data you want to send to Bland and the structured data you’d like to receive in return. This is achieved by defining the request data for outgoing information and an analysis schema for the structured data you’ll get back.\n\n#### Request data\n\nAny JSON you put in here will be visible to the AI agent during the call - and can also be referenced with Prompt Variables.\n\nFor example, let’s say in the action you want to programmatically set the name of the person you’re calling. You could set request data to:\n\n```json\n{\n \"name\": \"John Doe\",\n}\n```\n\n[Also see Bland documentation.](https://docs.bland.ai/api-v1/post/calls)\n\n#### Analysis schema\n\nDefine a JSON schema for how you want to get information about the call - information like email addresses, names, appointment times or any other type of custom data.\n\nFor example, if you wanted to retrieve this information from the call:\n\n```json\n{\n \"email_address\": \"email\",\n \"first_name\": \"string\",\n \"last_name\": \"string\",\n \"wants_to_book_appointment\": \"boolean\",\n \"appointment_time\": \"YYYY-MM-DD HH:MM:SS\"\n}\n```\n\nWhen retrieving the call details, Bland will return data about the call in the following format:\n\n```json\n{\n \"analysis\": {\n \"email_address\": \"johndoe@gmail.com\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"wants_to_book_appointment\": true,\n \"appointment_time\": \"2024-01-01 12:00:00\"\n }\n}\n```\n\n[Also see Bland documentation.](https://docs.bland.ai/api-v1/post/calls)\n\n\n\n### Get call details\n\nRetrieve the details of a call based on the provider call ID.",
15
+ "readme": "---\ntitle: Bland.ai\ndescription: To do\n---\n\n# Bland.ai\n\nWith Bland.ai you can build, test, and deploy AI phone calling agents. \n\n## Extension settings\n\nTo set up this extension, you will need to provide an API key for Bland.\n\n## Actions\n\n### Send call (with Pathway)\n\nInitiates an AI phone call using a simple prompt or a conversational pathway agent built on the Bland platform. This action is asynchronous—it triggers a call request in Bland, which queues the call. Note that the action only confirms that Bland has received the request; it does not wait for the call to complete or handle any callbacks from Bland.\n\nAwell lets you specify both the data you want to send to Bland and the structured data you’d like to receive in return. This is achieved by defining the request data for outgoing information and an analysis schema for the structured data you’ll get back.\n\n#### Request data\n\nAny JSON you put in here will be visible to the AI agent during the call - and can also be referenced with Prompt Variables.\n\nFor example, let’s say in the action you want to programmatically set the name of the person you’re calling. You could set request data to:\n\n```json\n{\n \"name\": \"John Doe\",\n}\n```\n\n[Also see Bland documentation.](https://docs.bland.ai/api-v1/post/calls)\n\n#### Analysis schema\n\nDefine a JSON schema for how you want to get information about the call - information like email addresses, names, appointment times or any other type of custom data.\n\nFor example, if you wanted to retrieve this information from the call:\n\n```json\n{\n \"email_address\": \"email\",\n \"first_name\": \"string\",\n \"last_name\": \"string\",\n \"wants_to_book_appointment\": \"boolean\",\n \"appointment_time\": \"YYYY-MM-DD HH:MM:SS\"\n}\n```\n\nWhen retrieving the call details, Bland will return data about the call in the following format:\n\n```json\n{\n \"analysis\": {\n \"email_address\": \"johndoe@gmail.com\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"wants_to_book_appointment\": true,\n \"appointment_time\": \"2024-01-01 12:00:00\"\n }\n}\n```\n\n[Also see Bland documentation.](https://docs.bland.ai/api-v1/post/calls)\n\n### Get call details\n\nRetrieve the details of a call based on the provider call ID.",
16
16
  "changelog": "# CHANGELOG"
17
17
  },
18
18
  "braze": {