@awell-health/awell-extensions 1.0.129 → 1.0.131
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/dist/extensions/calendly/index.d.ts +2 -0
- package/dist/extensions/calendly/index.js +21 -0
- package/dist/extensions/calendly/index.js.map +1 -0
- package/dist/extensions/calendly/settings.d.ts +1 -0
- package/dist/extensions/calendly/settings.js +5 -0
- package/dist/extensions/calendly/settings.js.map +1 -0
- package/dist/extensions/calendly/types.d.ts +30 -0
- package/dist/extensions/calendly/types.js +9 -0
- package/dist/extensions/calendly/types.js.map +1 -0
- package/dist/extensions/calendly/webhooks/eventCanceled.d.ts +35 -0
- package/dist/extensions/calendly/webhooks/eventCanceled.js +63 -0
- package/dist/extensions/calendly/webhooks/eventCanceled.js.map +1 -0
- package/dist/extensions/calendly/webhooks/eventCreated.d.ts +63 -0
- package/dist/extensions/calendly/webhooks/eventCreated.js +104 -0
- package/dist/extensions/calendly/webhooks/eventCreated.js.map +1 -0
- package/dist/extensions/calendly/webhooks/eventRescheduled.d.ts +63 -0
- package/dist/extensions/calendly/webhooks/eventRescheduled.js +103 -0
- package/dist/extensions/calendly/webhooks/eventRescheduled.js.map +1 -0
- package/dist/extensions/calendly/webhooks/index.d.ts +4 -0
- package/dist/extensions/calendly/webhooks/index.js +8 -0
- package/dist/extensions/calendly/webhooks/index.js.map +1 -0
- package/dist/extensions/healthie/actions/createTask/createTask.js +2 -42
- package/dist/extensions/healthie/actions/createTask/createTask.js.map +1 -1
- package/dist/extensions/healthie/actions/createTask/createTask.test.js +13 -11
- package/dist/extensions/healthie/actions/createTask/createTask.test.js.map +1 -1
- package/dist/extensions/index.js +2 -0
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/markdown.json +4 -0
- package/package.json +1 -1
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.Calendly = void 0;
|
4
|
+
const extensions_core_1 = require("@awell-health/extensions-core");
|
5
|
+
const settings_1 = require("./settings");
|
6
|
+
const webhooks_1 = require("./webhooks");
|
7
|
+
exports.Calendly = {
|
8
|
+
key: 'calendly',
|
9
|
+
title: 'Calendly',
|
10
|
+
icon_url: 'https://ww2.freelogovectors.net/wp-content/uploads/2023/05/calendly_logo-freelogovectors.net_.png',
|
11
|
+
description: '** In beta ** Enable scheduling in your care flows with Calendly.',
|
12
|
+
category: extensions_core_1.Category.SCHEDULING,
|
13
|
+
author: {
|
14
|
+
authorType: extensions_core_1.AuthorType.EXTERNAL,
|
15
|
+
authorName: 'Rajeev Gade',
|
16
|
+
},
|
17
|
+
actions: {},
|
18
|
+
webhooks: webhooks_1.webhooks,
|
19
|
+
settings: settings_1.settings,
|
20
|
+
};
|
21
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../extensions/calendly/index.ts"],"names":[],"mappings":";;;AACA,mEAAoE;AACpE,yCAAqC;AACrC,yCAAqC;AAExB,QAAA,QAAQ,GAAc;IACjC,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,QAAQ,EACN,mGAAmG;IACrG,WAAW,EACT,mEAAmE;IACrE,QAAQ,EAAE,0BAAQ,CAAC,UAAU;IAC7B,MAAM,EAAE;QACN,UAAU,EAAE,4BAAU,CAAC,QAAQ;QAC/B,UAAU,EAAE,aAAa;KAC1B;IACD,OAAO,EAAE,EAAE;IACX,QAAQ,EAAR,mBAAQ;IACR,QAAQ,EAAR,mBAAQ;CACT,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const settings: {};
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../extensions/calendly/settings.ts"],"names":[],"mappings":";;;AAEa,QAAA,QAAQ,GAAG,EAAoC,CAAA"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
export declare enum TriggerEvent {
|
2
|
+
EVENT_CREATED = "invitee.created",
|
3
|
+
EVENT_CANCELLED = "invitee.canceled"
|
4
|
+
}
|
5
|
+
export interface CalendlyWebhookPayload {
|
6
|
+
event: TriggerEvent;
|
7
|
+
created_at: string;
|
8
|
+
payload: {
|
9
|
+
scheduled_event: {
|
10
|
+
start_time: string;
|
11
|
+
end_time: string;
|
12
|
+
uri: string;
|
13
|
+
event_type: string;
|
14
|
+
event_memberships: Array<{
|
15
|
+
user: string;
|
16
|
+
user_email: string;
|
17
|
+
}>;
|
18
|
+
location: any;
|
19
|
+
};
|
20
|
+
email: string;
|
21
|
+
first_name: string;
|
22
|
+
last_name: string;
|
23
|
+
name: string;
|
24
|
+
status: 'active' | 'canceled';
|
25
|
+
timezone: string;
|
26
|
+
rescheduled: boolean;
|
27
|
+
cancel_url: string;
|
28
|
+
reschedule_url: string;
|
29
|
+
};
|
30
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.TriggerEvent = void 0;
|
4
|
+
var TriggerEvent;
|
5
|
+
(function (TriggerEvent) {
|
6
|
+
TriggerEvent["EVENT_CREATED"] = "invitee.created";
|
7
|
+
TriggerEvent["EVENT_CANCELLED"] = "invitee.canceled";
|
8
|
+
})(TriggerEvent = exports.TriggerEvent || (exports.TriggerEvent = {}));
|
9
|
+
//# sourceMappingURL=types.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../extensions/calendly/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,iDAAiC,CAAA;IACjC,oDAAoC,CAAA;AACtC,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB"}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { type Webhook } from '@awell-health/extensions-core';
|
2
|
+
import { type CalendlyWebhookPayload } from '../types';
|
3
|
+
declare const dataPoints: {
|
4
|
+
eventId: {
|
5
|
+
key: string;
|
6
|
+
valueType: "string";
|
7
|
+
};
|
8
|
+
inviteeEmail: {
|
9
|
+
key: string;
|
10
|
+
valueType: "string";
|
11
|
+
};
|
12
|
+
inviteeFirstName: {
|
13
|
+
key: string;
|
14
|
+
valueType: "string";
|
15
|
+
};
|
16
|
+
inviteeLastName: {
|
17
|
+
key: string;
|
18
|
+
valueType: "string";
|
19
|
+
};
|
20
|
+
inviteeName: {
|
21
|
+
key: string;
|
22
|
+
valueType: "string";
|
23
|
+
};
|
24
|
+
inviteeStatus: {
|
25
|
+
key: string;
|
26
|
+
valueType: "string";
|
27
|
+
};
|
28
|
+
inviteeTimezone: {
|
29
|
+
key: string;
|
30
|
+
valueType: "string";
|
31
|
+
};
|
32
|
+
};
|
33
|
+
export declare const eventCanceled: Webhook<keyof typeof dataPoints, CalendlyWebhookPayload>;
|
34
|
+
export type EventCanceled = typeof eventCanceled;
|
35
|
+
export {};
|
@@ -0,0 +1,63 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.eventCanceled = void 0;
|
4
|
+
const lodash_1 = require("lodash");
|
5
|
+
const dataPoints = {
|
6
|
+
eventId: {
|
7
|
+
key: 'eventId',
|
8
|
+
valueType: 'string',
|
9
|
+
},
|
10
|
+
inviteeEmail: {
|
11
|
+
key: 'inviteeEmail',
|
12
|
+
valueType: 'string',
|
13
|
+
},
|
14
|
+
inviteeFirstName: {
|
15
|
+
key: 'inviteeFirstName',
|
16
|
+
valueType: 'string',
|
17
|
+
},
|
18
|
+
inviteeLastName: {
|
19
|
+
key: 'inviteeLastName',
|
20
|
+
valueType: 'string',
|
21
|
+
},
|
22
|
+
inviteeName: {
|
23
|
+
key: 'inviteeName',
|
24
|
+
valueType: 'string',
|
25
|
+
},
|
26
|
+
inviteeStatus: {
|
27
|
+
key: 'inviteeStatus',
|
28
|
+
valueType: 'string',
|
29
|
+
},
|
30
|
+
inviteeTimezone: {
|
31
|
+
key: 'inviteeTimezone',
|
32
|
+
valueType: 'string',
|
33
|
+
},
|
34
|
+
};
|
35
|
+
exports.eventCanceled = {
|
36
|
+
key: 'eventCanceled',
|
37
|
+
dataPoints,
|
38
|
+
onWebhookReceived: async ({ payload }, onSuccess, onError) => {
|
39
|
+
const { payload: { email, first_name, last_name, name, scheduled_event, status, timezone, rescheduled, }, } = payload;
|
40
|
+
if (rescheduled) {
|
41
|
+
return;
|
42
|
+
}
|
43
|
+
// https://api.calendly.com/scheduled_events/GBGBDCAADAEDCRZ2 => GBGBDCAADAEDCRZ2
|
44
|
+
const scheduledEventId = scheduled_event.uri.split('/').pop();
|
45
|
+
if (!(0, lodash_1.isNil)(scheduledEventId)) {
|
46
|
+
await onSuccess({
|
47
|
+
data_points: {
|
48
|
+
eventId: scheduledEventId,
|
49
|
+
inviteeEmail: email,
|
50
|
+
inviteeFirstName: first_name,
|
51
|
+
inviteeLastName: last_name,
|
52
|
+
inviteeName: name,
|
53
|
+
inviteeStatus: status,
|
54
|
+
inviteeTimezone: timezone,
|
55
|
+
},
|
56
|
+
});
|
57
|
+
}
|
58
|
+
await onError({
|
59
|
+
// We should automatically send a 400 here, so no need to provide info
|
60
|
+
});
|
61
|
+
},
|
62
|
+
};
|
63
|
+
//# sourceMappingURL=eventCanceled.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"eventCanceled.js","sourceRoot":"","sources":["../../../../extensions/calendly/webhooks/eventCanceled.ts"],"names":[],"mappings":";;;AAAA,mCAA8B;AAO9B,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE;QACP,GAAG,EAAE,SAAS;QACd,SAAS,EAAE,QAAQ;KACpB;IACD,YAAY,EAAE;QACZ,GAAG,EAAE,cAAc;QACnB,SAAS,EAAE,QAAQ;KACpB;IACD,gBAAgB,EAAE;QAChB,GAAG,EAAE,kBAAkB;QACvB,SAAS,EAAE,QAAQ;KACpB;IACD,eAAe,EAAE;QACf,GAAG,EAAE,iBAAiB;QACtB,SAAS,EAAE,QAAQ;KACpB;IACD,WAAW,EAAE;QACX,GAAG,EAAE,aAAa;QAClB,SAAS,EAAE,QAAQ;KACpB;IACD,aAAa,EAAE;QACb,GAAG,EAAE,eAAe;QACpB,SAAS,EAAE,QAAQ;KACpB;IACD,eAAe,EAAE;QACf,GAAG,EAAE,iBAAiB;QACtB,SAAS,EAAE,QAAQ;KACpB;CAC4C,CAAA;AAElC,QAAA,aAAa,GAGtB;IACF,GAAG,EAAE,eAAe;IACpB,UAAU;IACV,iBAAiB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QAC3D,MAAM,EACJ,OAAO,EAAE,EACP,KAAK,EACL,UAAU,EACV,SAAS,EACT,IAAI,EACJ,eAAe,EACf,MAAM,EACN,QAAQ,EACR,WAAW,GACZ,GACF,GAAG,OAAO,CAAA;QAEX,IAAI,WAAW,EAAE;YACf,OAAM;SACP;QAED,iFAAiF;QACjF,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;QAE7D,IAAI,CAAC,IAAA,cAAK,EAAC,gBAAgB,CAAC,EAAE;YAC5B,MAAM,SAAS,CAAC;gBACd,WAAW,EAAE;oBACX,OAAO,EAAE,gBAAgB;oBACzB,YAAY,EAAE,KAAK;oBACnB,gBAAgB,EAAE,UAAU;oBAC5B,eAAe,EAAE,SAAS;oBAC1B,WAAW,EAAE,IAAI;oBACjB,aAAa,EAAE,MAAM;oBACrB,eAAe,EAAE,QAAQ;iBAC1B;aACF,CAAC,CAAA;SACH;QAED,MAAM,OAAO,CAAC;QACZ,sEAAsE;SACvE,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import { type Webhook } from '@awell-health/extensions-core';
|
2
|
+
import { type CalendlyWebhookPayload } from '../types';
|
3
|
+
declare const dataPoints: {
|
4
|
+
eventId: {
|
5
|
+
key: string;
|
6
|
+
valueType: "string";
|
7
|
+
};
|
8
|
+
eventTypeId: {
|
9
|
+
key: string;
|
10
|
+
valueType: "string";
|
11
|
+
};
|
12
|
+
inviteeEmail: {
|
13
|
+
key: string;
|
14
|
+
valueType: "string";
|
15
|
+
};
|
16
|
+
inviteeFirstName: {
|
17
|
+
key: string;
|
18
|
+
valueType: "string";
|
19
|
+
};
|
20
|
+
inviteeLastName: {
|
21
|
+
key: string;
|
22
|
+
valueType: "string";
|
23
|
+
};
|
24
|
+
inviteeName: {
|
25
|
+
key: string;
|
26
|
+
valueType: "string";
|
27
|
+
};
|
28
|
+
inviteeStatus: {
|
29
|
+
key: string;
|
30
|
+
valueType: "string";
|
31
|
+
};
|
32
|
+
inviteeTimezone: {
|
33
|
+
key: string;
|
34
|
+
valueType: "string";
|
35
|
+
};
|
36
|
+
hostEmail: {
|
37
|
+
key: string;
|
38
|
+
valueType: "string";
|
39
|
+
};
|
40
|
+
startTime: {
|
41
|
+
key: string;
|
42
|
+
valueType: "string";
|
43
|
+
};
|
44
|
+
endTime: {
|
45
|
+
key: string;
|
46
|
+
valueType: "string";
|
47
|
+
};
|
48
|
+
cancelUrl: {
|
49
|
+
key: string;
|
50
|
+
valueType: "string";
|
51
|
+
};
|
52
|
+
rescheduleUrl: {
|
53
|
+
key: string;
|
54
|
+
valueType: "string";
|
55
|
+
};
|
56
|
+
videoCallUrl: {
|
57
|
+
key: string;
|
58
|
+
valueType: "string";
|
59
|
+
};
|
60
|
+
};
|
61
|
+
export declare const eventCreated: Webhook<keyof typeof dataPoints, CalendlyWebhookPayload>;
|
62
|
+
export type EventCreated = typeof eventCreated;
|
63
|
+
export {};
|
@@ -0,0 +1,104 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.eventCreated = void 0;
|
4
|
+
const lodash_1 = require("lodash");
|
5
|
+
const dataPoints = {
|
6
|
+
eventId: {
|
7
|
+
key: 'eventId',
|
8
|
+
valueType: 'string',
|
9
|
+
},
|
10
|
+
eventTypeId: {
|
11
|
+
key: 'eventTypeId',
|
12
|
+
valueType: 'string',
|
13
|
+
},
|
14
|
+
inviteeEmail: {
|
15
|
+
key: 'inviteeEmail',
|
16
|
+
valueType: 'string',
|
17
|
+
},
|
18
|
+
inviteeFirstName: {
|
19
|
+
key: 'inviteeFirstName',
|
20
|
+
valueType: 'string',
|
21
|
+
},
|
22
|
+
inviteeLastName: {
|
23
|
+
key: 'inviteeLastName',
|
24
|
+
valueType: 'string',
|
25
|
+
},
|
26
|
+
inviteeName: {
|
27
|
+
key: 'inviteeName',
|
28
|
+
valueType: 'string',
|
29
|
+
},
|
30
|
+
inviteeStatus: {
|
31
|
+
key: 'inviteeStatus',
|
32
|
+
valueType: 'string',
|
33
|
+
},
|
34
|
+
inviteeTimezone: {
|
35
|
+
key: 'inviteeTimezone',
|
36
|
+
valueType: 'string',
|
37
|
+
},
|
38
|
+
hostEmail: {
|
39
|
+
key: 'hostEmail',
|
40
|
+
valueType: 'string',
|
41
|
+
},
|
42
|
+
startTime: {
|
43
|
+
key: 'startTime',
|
44
|
+
valueType: 'string',
|
45
|
+
},
|
46
|
+
endTime: {
|
47
|
+
key: 'endTime',
|
48
|
+
valueType: 'string',
|
49
|
+
},
|
50
|
+
cancelUrl: {
|
51
|
+
key: 'cancelUrl',
|
52
|
+
valueType: 'string',
|
53
|
+
},
|
54
|
+
rescheduleUrl: {
|
55
|
+
key: 'rescheduleUrl',
|
56
|
+
valueType: 'string',
|
57
|
+
},
|
58
|
+
videoCallUrl: {
|
59
|
+
key: 'videoCallUrl',
|
60
|
+
valueType: 'string',
|
61
|
+
},
|
62
|
+
};
|
63
|
+
exports.eventCreated = {
|
64
|
+
key: 'eventCreated',
|
65
|
+
dataPoints,
|
66
|
+
onWebhookReceived: async ({ payload }, onSuccess, onError) => {
|
67
|
+
const { payload: { email, first_name, last_name, name, scheduled_event, status, timezone, cancel_url, reschedule_url, rescheduled, }, } = payload;
|
68
|
+
// https://api.calendly.com/scheduled_events/GBGBDCAADAEDCRZ2 => GBGBDCAADAEDCRZ2
|
69
|
+
const scheduledEventId = scheduled_event.uri.split('/').pop();
|
70
|
+
const scheduledEventTypeId = scheduled_event.event_type.split('/').pop();
|
71
|
+
const hostEmail = scheduled_event.event_memberships.length > 0
|
72
|
+
? scheduled_event.event_memberships[0].user_email
|
73
|
+
: '';
|
74
|
+
const videoCallUrl = scheduled_event.location.type === 'zoom'
|
75
|
+
? scheduled_event.location.join_url
|
76
|
+
: '';
|
77
|
+
if (!(0, lodash_1.isNil)(scheduledEventId) &&
|
78
|
+
!(0, lodash_1.isNil)(scheduledEventTypeId) &&
|
79
|
+
!rescheduled) {
|
80
|
+
await onSuccess({
|
81
|
+
data_points: {
|
82
|
+
eventId: scheduledEventId,
|
83
|
+
eventTypeId: scheduledEventTypeId,
|
84
|
+
inviteeEmail: email,
|
85
|
+
inviteeFirstName: first_name,
|
86
|
+
inviteeLastName: last_name,
|
87
|
+
inviteeName: name,
|
88
|
+
inviteeStatus: status,
|
89
|
+
inviteeTimezone: timezone,
|
90
|
+
startTime: scheduled_event.start_time,
|
91
|
+
endTime: scheduled_event.end_time,
|
92
|
+
cancelUrl: cancel_url,
|
93
|
+
rescheduleUrl: reschedule_url,
|
94
|
+
hostEmail,
|
95
|
+
videoCallUrl,
|
96
|
+
},
|
97
|
+
});
|
98
|
+
}
|
99
|
+
await onError({
|
100
|
+
// We should automatically send a 400 here, so no need to provide info
|
101
|
+
});
|
102
|
+
},
|
103
|
+
};
|
104
|
+
//# sourceMappingURL=eventCreated.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"eventCreated.js","sourceRoot":"","sources":["../../../../extensions/calendly/webhooks/eventCreated.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import { type Webhook } from '@awell-health/extensions-core';
|
2
|
+
import { type CalendlyWebhookPayload } from '../types';
|
3
|
+
declare const dataPoints: {
|
4
|
+
eventId: {
|
5
|
+
key: string;
|
6
|
+
valueType: "string";
|
7
|
+
};
|
8
|
+
eventTypeId: {
|
9
|
+
key: string;
|
10
|
+
valueType: "string";
|
11
|
+
};
|
12
|
+
inviteeEmail: {
|
13
|
+
key: string;
|
14
|
+
valueType: "string";
|
15
|
+
};
|
16
|
+
inviteeFirstName: {
|
17
|
+
key: string;
|
18
|
+
valueType: "string";
|
19
|
+
};
|
20
|
+
inviteeLastName: {
|
21
|
+
key: string;
|
22
|
+
valueType: "string";
|
23
|
+
};
|
24
|
+
inviteeName: {
|
25
|
+
key: string;
|
26
|
+
valueType: "string";
|
27
|
+
};
|
28
|
+
inviteeStatus: {
|
29
|
+
key: string;
|
30
|
+
valueType: "string";
|
31
|
+
};
|
32
|
+
inviteeTimezone: {
|
33
|
+
key: string;
|
34
|
+
valueType: "string";
|
35
|
+
};
|
36
|
+
hostEmail: {
|
37
|
+
key: string;
|
38
|
+
valueType: "string";
|
39
|
+
};
|
40
|
+
startTime: {
|
41
|
+
key: string;
|
42
|
+
valueType: "string";
|
43
|
+
};
|
44
|
+
endTime: {
|
45
|
+
key: string;
|
46
|
+
valueType: "string";
|
47
|
+
};
|
48
|
+
cancelUrl: {
|
49
|
+
key: string;
|
50
|
+
valueType: "string";
|
51
|
+
};
|
52
|
+
rescheduleUrl: {
|
53
|
+
key: string;
|
54
|
+
valueType: "string";
|
55
|
+
};
|
56
|
+
videoCallUrl: {
|
57
|
+
key: string;
|
58
|
+
valueType: "string";
|
59
|
+
};
|
60
|
+
};
|
61
|
+
export declare const eventRescheduled: Webhook<keyof typeof dataPoints, CalendlyWebhookPayload>;
|
62
|
+
export type EventRescheduled = typeof eventRescheduled;
|
63
|
+
export {};
|
@@ -0,0 +1,103 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.eventRescheduled = void 0;
|
4
|
+
const lodash_1 = require("lodash");
|
5
|
+
const dataPoints = {
|
6
|
+
eventId: {
|
7
|
+
key: 'eventId',
|
8
|
+
valueType: 'string',
|
9
|
+
},
|
10
|
+
eventTypeId: {
|
11
|
+
key: 'eventTypeId',
|
12
|
+
valueType: 'string',
|
13
|
+
},
|
14
|
+
inviteeEmail: {
|
15
|
+
key: 'inviteeEmail',
|
16
|
+
valueType: 'string',
|
17
|
+
},
|
18
|
+
inviteeFirstName: {
|
19
|
+
key: 'inviteeFirstName',
|
20
|
+
valueType: 'string',
|
21
|
+
},
|
22
|
+
inviteeLastName: {
|
23
|
+
key: 'inviteeLastName',
|
24
|
+
valueType: 'string',
|
25
|
+
},
|
26
|
+
inviteeName: {
|
27
|
+
key: 'inviteeName',
|
28
|
+
valueType: 'string',
|
29
|
+
},
|
30
|
+
inviteeStatus: {
|
31
|
+
key: 'inviteeStatus',
|
32
|
+
valueType: 'string',
|
33
|
+
},
|
34
|
+
inviteeTimezone: {
|
35
|
+
key: 'inviteeTimezone',
|
36
|
+
valueType: 'string',
|
37
|
+
},
|
38
|
+
hostEmail: {
|
39
|
+
key: 'hostEmail',
|
40
|
+
valueType: 'string',
|
41
|
+
},
|
42
|
+
startTime: {
|
43
|
+
key: 'startTime',
|
44
|
+
valueType: 'string',
|
45
|
+
},
|
46
|
+
endTime: {
|
47
|
+
key: 'endTime',
|
48
|
+
valueType: 'string',
|
49
|
+
},
|
50
|
+
cancelUrl: {
|
51
|
+
key: 'cancelUrl',
|
52
|
+
valueType: 'string',
|
53
|
+
},
|
54
|
+
rescheduleUrl: {
|
55
|
+
key: 'rescheduleUrl',
|
56
|
+
valueType: 'string',
|
57
|
+
},
|
58
|
+
videoCallUrl: {
|
59
|
+
key: 'videoCallUrl',
|
60
|
+
valueType: 'string',
|
61
|
+
},
|
62
|
+
};
|
63
|
+
exports.eventRescheduled = {
|
64
|
+
key: 'eventRescheduled',
|
65
|
+
dataPoints,
|
66
|
+
onWebhookReceived: async ({ payload }, onSuccess, onError) => {
|
67
|
+
const { payload: { email, first_name, last_name, name, scheduled_event, status, timezone, cancel_url, reschedule_url, rescheduled, }, } = payload;
|
68
|
+
if (rescheduled) {
|
69
|
+
// https://api.calendly.com/scheduled_events/GBGBDCAADAEDCRZ2 => GBGBDCAADAEDCRZ2
|
70
|
+
const scheduledEventId = scheduled_event.uri.split('/').pop();
|
71
|
+
const scheduledEventTypeId = scheduled_event.event_type.split('/').pop();
|
72
|
+
const hostEmail = scheduled_event.event_memberships.length > 0
|
73
|
+
? scheduled_event.event_memberships[0].user_email
|
74
|
+
: '';
|
75
|
+
const videoCallUrl = scheduled_event.location.type === 'zoom'
|
76
|
+
? scheduled_event.location.join_url
|
77
|
+
: '';
|
78
|
+
if (!(0, lodash_1.isNil)(scheduledEventId) &&
|
79
|
+
!(0, lodash_1.isNil)(scheduledEventTypeId) &&
|
80
|
+
rescheduled) {
|
81
|
+
await onSuccess({
|
82
|
+
data_points: {
|
83
|
+
eventId: scheduledEventId,
|
84
|
+
eventTypeId: scheduledEventTypeId,
|
85
|
+
inviteeEmail: email,
|
86
|
+
inviteeFirstName: first_name,
|
87
|
+
inviteeLastName: last_name,
|
88
|
+
inviteeName: name,
|
89
|
+
inviteeStatus: status,
|
90
|
+
inviteeTimezone: timezone,
|
91
|
+
startTime: scheduled_event.start_time,
|
92
|
+
endTime: scheduled_event.end_time,
|
93
|
+
cancelUrl: cancel_url,
|
94
|
+
rescheduleUrl: reschedule_url,
|
95
|
+
hostEmail,
|
96
|
+
videoCallUrl,
|
97
|
+
},
|
98
|
+
});
|
99
|
+
}
|
100
|
+
}
|
101
|
+
},
|
102
|
+
};
|
103
|
+
//# sourceMappingURL=eventRescheduled.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"eventRescheduled.js","sourceRoot":"","sources":["../../../../extensions/calendly/webhooks/eventRescheduled.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
export type { EventCreated } from './eventCreated';
|
2
|
+
export type { EventCanceled } from './eventCanceled';
|
3
|
+
export type { EventRescheduled } from './eventRescheduled';
|
4
|
+
export declare const webhooks: import("@awell-health/extensions-core").Webhook<"eventId" | "inviteeEmail" | "inviteeFirstName" | "inviteeLastName" | "inviteeName" | "inviteeStatus" | "inviteeTimezone", import("../types").CalendlyWebhookPayload>[];
|
@@ -0,0 +1,8 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.webhooks = void 0;
|
4
|
+
const eventCreated_1 = require("./eventCreated");
|
5
|
+
const eventCanceled_1 = require("./eventCanceled");
|
6
|
+
const eventRescheduled_1 = require("./eventRescheduled");
|
7
|
+
exports.webhooks = [eventCreated_1.eventCreated, eventCanceled_1.eventCanceled, eventRescheduled_1.eventRescheduled];
|
8
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../extensions/calendly/webhooks/index.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAC7C,mDAA+C;AAC/C,yDAAqD;AAKxC,QAAA,QAAQ,GAAG,CAAC,2BAAY,EAAE,6BAAa,EAAE,mCAAgB,CAAC,CAAA"}
|
@@ -1,8 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.createTask = void 0;
|
4
|
-
const zod_1 = require("zod");
|
5
|
-
const zod_validation_error_1 = require("zod-validation-error");
|
6
4
|
const extensions_core_1 = require("@awell-health/extensions-core");
|
7
5
|
const sdk_1 = require("../../gql/sdk");
|
8
6
|
const graphqlClient_1 = require("../../graphqlClient");
|
@@ -39,18 +37,7 @@ exports.createTask = {
|
|
39
37
|
});
|
40
38
|
}
|
41
39
|
else {
|
42
|
-
|
43
|
-
events: [
|
44
|
-
{
|
45
|
-
date: new Date().toISOString(),
|
46
|
-
text: { en: 'API client requires an API url and API key' },
|
47
|
-
error: {
|
48
|
-
category: 'MISSING_SETTINGS',
|
49
|
-
message: 'Missing api url or api key',
|
50
|
-
},
|
51
|
-
},
|
52
|
-
],
|
53
|
-
});
|
40
|
+
throw new Error('API Client is missing settings (api url or api key)');
|
54
41
|
}
|
55
42
|
}
|
56
43
|
catch (err) {
|
@@ -60,35 +47,8 @@ exports.createTask = {
|
|
60
47
|
events: errors,
|
61
48
|
});
|
62
49
|
}
|
63
|
-
else if (err instanceof zod_1.ZodError) {
|
64
|
-
const error = (0, zod_validation_error_1.fromZodError)(err);
|
65
|
-
await onError({
|
66
|
-
events: [
|
67
|
-
{
|
68
|
-
date: new Date().toISOString(),
|
69
|
-
text: { en: error.message },
|
70
|
-
error: {
|
71
|
-
category: 'WRONG_INPUT',
|
72
|
-
message: error.message,
|
73
|
-
},
|
74
|
-
},
|
75
|
-
],
|
76
|
-
});
|
77
|
-
}
|
78
50
|
else {
|
79
|
-
|
80
|
-
await onError({
|
81
|
-
events: [
|
82
|
-
{
|
83
|
-
date: new Date().toISOString(),
|
84
|
-
text: { en: 'Healthie API reported an error' },
|
85
|
-
error: {
|
86
|
-
category: 'SERVER_ERROR',
|
87
|
-
message: error.message,
|
88
|
-
},
|
89
|
-
},
|
90
|
-
],
|
91
|
-
});
|
51
|
+
throw err;
|
92
52
|
}
|
93
53
|
}
|
94
54
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createTask.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/createTask/createTask.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"createTask.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/createTask/createTask.ts"],"names":[],"mappings":";;;AACA,mEAAwD;AACxD,uCAAsC;AACtC,uDAAsD;AAEtD,oEAAkE;AAClE,yCAAwE;AACxE,qCAA6C;AAEhC,QAAA,UAAU,GAInB;IACF,GAAG,EAAE,YAAY;IACjB,QAAQ,EAAE,0BAAQ,CAAC,gBAAgB;IACnC,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,gCAAgC;IAC7C,MAAM,EAAN,eAAM;IACN,UAAU,EAAV,mBAAU;IACV,WAAW,EAAE,IAAI;IACjB,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAiB,EAAE;;QACvE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;QAEpC,IAAI;YACF,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAC7D,iCAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAEhC,MAAM,MAAM,GAAG,IAAA,gCAAgB,EAAC,QAAQ,CAAC,CAAA;YACzC,IAAI,MAAM,KAAK,SAAS,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAA,YAAM,EAAC,MAAM,CAAC,CAAA;gBAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC;oBACpC,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,cAAc;oBACvB,OAAO;oBACP,QAAQ,EAAE,OAAO;oBACjB,QAAQ;iBACT,CAAC,CAAA;gBACF,MAAM,UAAU,CAAC;oBACf,WAAW,EAAE;wBACX,MAAM,EAAE,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,0CAAE,EAAE;qBAClC;iBACF,CAAC,CAAA;aACH;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;aACvE;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,YAAY,sBAAa,EAAE;gBAChC,MAAM,MAAM,GAAG,IAAA,mCAA0B,EAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACrD,MAAM,OAAO,CAAC;oBACZ,MAAM,EAAE,MAAM;iBACf,CAAC,CAAA;aACH;iBAAM;gBACL,MAAM,GAAG,CAAA;aACV;SACF;IACH,CAAC;CACF,CAAA"}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
/* eslint-disable @typescript-eslint/no-floating-promises */
|
3
4
|
const tests_1 = require("../../../../src/tests");
|
4
5
|
const sdk_1 = require("../../gql/sdk");
|
5
6
|
const sdk_2 = require("../../gql/__mocks__/sdk");
|
@@ -63,14 +64,14 @@ describe('createTask action', () => {
|
|
63
64
|
expect(sdk_2.mockGetSdkReturn.createTask).toHaveBeenCalledWith(sampleTask);
|
64
65
|
});
|
65
66
|
test('Should call onError when isReminderEnabled is undefined and any of the rest fields is not undefined', async () => {
|
66
|
-
|
67
|
+
const failedPromise = createTask_1.createTask.onActivityCreated({
|
67
68
|
...samplePayload,
|
68
69
|
fields: {
|
69
70
|
...samplePayload.fields,
|
70
71
|
reminderTime: 1,
|
71
72
|
},
|
72
73
|
}, onComplete, onError);
|
73
|
-
expect(
|
74
|
+
expect(failedPromise).rejects.toThrow();
|
74
75
|
});
|
75
76
|
});
|
76
77
|
describe('Reminder = daily', () => {
|
@@ -103,7 +104,7 @@ describe('createTask action', () => {
|
|
103
104
|
});
|
104
105
|
});
|
105
106
|
test('Should call onError when reminderIntervalValue is not undefined', async () => {
|
106
|
-
|
107
|
+
const payload = {
|
107
108
|
...samplePayload,
|
108
109
|
fields: {
|
109
110
|
...samplePayload.fields,
|
@@ -112,8 +113,9 @@ describe('createTask action', () => {
|
|
112
113
|
reminderIntervalValue: '',
|
113
114
|
reminderTime: 1,
|
114
115
|
},
|
115
|
-
}
|
116
|
-
|
116
|
+
};
|
117
|
+
const failedPromise = createTask_1.createTask.onActivityCreated(payload, onComplete, onError);
|
118
|
+
expect(failedPromise).rejects.toThrow();
|
117
119
|
});
|
118
120
|
});
|
119
121
|
describe('Reminder = weekly', () => {
|
@@ -153,7 +155,7 @@ describe('createTask action', () => {
|
|
153
155
|
expect(onComplete).toHaveBeenCalled();
|
154
156
|
});
|
155
157
|
test('Should call onError when reminderIntervalValue is not known day of week', async () => {
|
156
|
-
|
158
|
+
const failedPromise = createTask_1.createTask.onActivityCreated({
|
157
159
|
...samplePayload,
|
158
160
|
fields: {
|
159
161
|
...samplePayload.fields,
|
@@ -163,7 +165,7 @@ describe('createTask action', () => {
|
|
163
165
|
reminderTime: 1,
|
164
166
|
},
|
165
167
|
}, onComplete, onError);
|
166
|
-
expect(
|
168
|
+
expect(failedPromise).rejects.toThrow();
|
167
169
|
});
|
168
170
|
});
|
169
171
|
describe('Reminder = once (legacy - reminderIntervalValue)', () => {
|
@@ -190,7 +192,7 @@ describe('createTask action', () => {
|
|
190
192
|
});
|
191
193
|
});
|
192
194
|
test('Should call onError when reminderIntervalValue is incorrect date', async () => {
|
193
|
-
|
195
|
+
const failedPromise = createTask_1.createTask.onActivityCreated({
|
194
196
|
...samplePayload,
|
195
197
|
fields: {
|
196
198
|
...samplePayload.fields,
|
@@ -200,7 +202,7 @@ describe('createTask action', () => {
|
|
200
202
|
reminderTime: 1,
|
201
203
|
},
|
202
204
|
}, onComplete, onError);
|
203
|
-
expect(
|
205
|
+
expect(failedPromise).rejects.toThrow();
|
204
206
|
});
|
205
207
|
});
|
206
208
|
describe('Reminder = once (reminderIntervalValueOnce)', () => {
|
@@ -227,7 +229,7 @@ describe('createTask action', () => {
|
|
227
229
|
});
|
228
230
|
});
|
229
231
|
test('Should call onError when reminderIntervalValueOnce is incorrect date', async () => {
|
230
|
-
|
232
|
+
const failedPromise = createTask_1.createTask.onActivityCreated({
|
231
233
|
...samplePayload,
|
232
234
|
fields: {
|
233
235
|
...samplePayload.fields,
|
@@ -237,7 +239,7 @@ describe('createTask action', () => {
|
|
237
239
|
reminderTime: 1,
|
238
240
|
},
|
239
241
|
}, onComplete, onError);
|
240
|
-
expect(
|
242
|
+
expect(failedPromise).rejects.toThrow();
|
241
243
|
});
|
242
244
|
});
|
243
245
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createTask.test.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/createTask/createTask.test.ts"],"names":[],"mappings":";;AAAA,iDAA2D;AAC3D,uCAAsC;AACtC,iDAAsE;AACtE,8CAA0C;AAE1C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AAC1B,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;AAEhC,MAAM,aAAa,GAAG,IAAA,2BAAmB,EAAC;IACxC,MAAM,EAAE;QACN,SAAS,EAAE,cAAc;QACzB,cAAc,EAAE,WAAW;QAC3B,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,YAAY;QACrB,iBAAiB,EAAE,KAAK;QACxB,oBAAoB,EAAE,SAAS;QAC/B,qBAAqB,EAAE,SAAS;QAChC,yBAAyB,EAAE,SAAS;QACpC,YAAY,EAAE,SAAS;KACxB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,UAAU;KACnB;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,SAAS;CACpB,CAAA;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAEzB,SAAS,CAAC,GAAG,EAAE;QACb,CAAC;QAAC,YAAoB,CAAC,kBAAkB,CAAC,gBAAU,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,uBAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;QAEtE,MAAM,CAAC,sBAAgB,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACtD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC;YACtC,WAAW,EAAE;gBACX,MAAM,EAAE,QAAQ;aACjB;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAC3B,2EAA2E,EAC3E,KAAK,EAAE,KAAK,EAAE,EAAE;gBACd,MAAM,uBAAU,CAAC,iBAAiB,CAChC;oBACE,GAAG,aAAa;oBAChB,MAAM,EAAE;wBACN,GAAG,aAAa,CAAC,MAAM;wBACvB,iBAAiB,EAAE,KAAK;qBACzB;iBACF,EACD,UAAU,EACV,OAAO,CACR,CAAA;gBAED,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAA;gBACrC,MAAM,CAAC,sBAAgB,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAA;YACtE,CAAC,CACF,CAAA;YAED,IAAI,CAAC,qGAAqG,EAAE,KAAK,IAAI,EAAE;gBACrH,MAAM,uBAAU,CAAC,iBAAiB,
|
1
|
+
{"version":3,"file":"createTask.test.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/createTask/createTask.test.ts"],"names":[],"mappings":"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"}
|
package/dist/extensions/index.js
CHANGED
@@ -27,6 +27,7 @@ exports.extensions = exports.markdown = void 0;
|
|
27
27
|
// import { AvaAi } from './avaAi'
|
28
28
|
const awell_1 = require("./awell");
|
29
29
|
const calDotCom_1 = require("./calDotCom");
|
30
|
+
const calendly_1 = require("./calendly");
|
30
31
|
const canvasMedical_1 = require("./canvasMedical");
|
31
32
|
const cloudinary_1 = require("./cloudinary");
|
32
33
|
const dropboxSign_1 = require("./dropboxSign");
|
@@ -55,6 +56,7 @@ exports.extensions = [
|
|
55
56
|
// AvaAi, Best to disable this until we cleared out data privacy & HIPAA with OpenAI
|
56
57
|
awell_1.Awell,
|
57
58
|
calDotCom_1.CalDotCom,
|
59
|
+
calendly_1.Calendly,
|
58
60
|
canvasMedical_1.CanvasMedical,
|
59
61
|
cloudinary_1.Cloudinary,
|
60
62
|
dropboxSign_1.DropboxSign,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../extensions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAAkC;AAClC,mCAA+B;AAC/B,2CAAuC;AACvC,mDAA+C;AAC/C,6CAAyC;AACzC,+CAA2C;AAC3C,uCAAmC;AACnC,yCAAqC;AACrC,yCAAqC;AACrC,+CAA0C;AAC1C,2CAAuC;AACvC,uCAAmC;AACnC,iCAAsC;AACtC,+CAA2C;AAC3C,2CAAuC;AACvC,qCAAiC;AACjC,yCAAqC;AACrC,6DAA+C;AAC/C,yCAAqC;AACrC,yCAAqC;AACrC,yCAAqC;AACrC,2CAAuC;AACvC,yCAAqC;AACrC,uCAAmC;AACnC,uCAAmC;AAEnC,sDAAuC;AAG1B,QAAA,QAAQ,GAAa,IAAI,CAAA;AAEzB,QAAA,UAAU,GAAG;IACxB,oFAAoF;IACpF,aAAK;IACL,qBAAS;IACT,6BAAa;IACb,uBAAU;IACV,yBAAW;IACX,iBAAO;IACP,mBAAQ;IACR,mBAAQ;IACR,wBAAU;IACV,qBAAS;IACT,iBAAO;IACP,oBAAa;IACb,yBAAW;IACX,qBAAS;IACT,qBAAS;IACT,eAAM;IACN,mBAAQ;IACR,6BAAQ;IACR,mBAAQ;IACR,mBAAQ;IACR,mBAAQ;IACR,4CAA4C;IAC5C,aAAa;IACb,mBAAQ;IACR,iBAAO;IACP,iBAAO;CACR,CAAA"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../extensions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAAkC;AAClC,mCAA+B;AAC/B,2CAAuC;AACvC,yCAAqC;AACrC,mDAA+C;AAC/C,6CAAyC;AACzC,+CAA2C;AAC3C,uCAAmC;AACnC,yCAAqC;AACrC,yCAAqC;AACrC,+CAA0C;AAC1C,2CAAuC;AACvC,uCAAmC;AACnC,iCAAsC;AACtC,+CAA2C;AAC3C,2CAAuC;AACvC,qCAAiC;AACjC,yCAAqC;AACrC,6DAA+C;AAC/C,yCAAqC;AACrC,yCAAqC;AACrC,yCAAqC;AACrC,2CAAuC;AACvC,yCAAqC;AACrC,uCAAmC;AACnC,uCAAmC;AAEnC,sDAAuC;AAG1B,QAAA,QAAQ,GAAa,IAAI,CAAA;AAEzB,QAAA,UAAU,GAAG;IACxB,oFAAoF;IACpF,aAAK;IACL,qBAAS;IACT,mBAAQ;IACR,6BAAa;IACb,uBAAU;IACV,yBAAW;IACX,iBAAO;IACP,mBAAQ;IACR,mBAAQ;IACR,wBAAU;IACV,qBAAS;IACT,iBAAO;IACP,oBAAa;IACb,yBAAW;IACX,qBAAS;IACT,qBAAS;IACT,eAAM;IACN,mBAAQ;IACR,6BAAQ;IACR,mBAAQ;IACR,mBAAQ;IACR,mBAAQ;IACR,4CAA4C;IAC5C,aAAa;IACb,mBAAQ;IACR,iBAAO;IACP,iBAAO;CACR,CAAA"}
|
@@ -11,6 +11,10 @@
|
|
11
11
|
"readme": "---\ntitle: Cal.com\ndescription: Cal.com is a modern and open source scheduling platform. With HIPAA, GDPR and SOC2 compliance, you can ensure that data is well-protected and that makes Cal.com a great fit for healthcare use cases.\n---\n\n# Cal.com\n\n[Cal.com](https://cal.com/) is a modern and **open source** scheduling platform. With HIPAA, GDPR and SOC2 compliance, you can ensure that data is well-protected and that makes Cal.com a great fit for healthcare use cases.\n\n## Cal.com x Awell\n\nThis extension allows you to let a stakeholder (eg: a patient) book an appointment as part of a care flow and to retrieve the booking details of an appointment.\n\n## Extension settings\n\nIn order to set up this extension, **you will need to provide a Cal.com API key**. You can obtain an API key via the Cal.com portal (`Settings > Developer > API keys`).\n\n## Custom Actions\n\n### Book appointment action\n\nYou can add this action to your care flow to enable a stakeholder (eg: a patient) to book an appointment in a predefined calendar. This is a **stakeholder-actionable action** which means it requires an actual user to book an appointment. Also note that this is a blocking action and that the care flow will not progress - unless there are parallel tracks or transitions - until the action/activity is completed (i.e. an appointment was booked).\n\n**The actual booking of the appointment can happen in two ways:**\n\n1. With Awell Hosted Pages: when the \"Book appointment\" action is activated, we serve the booking widget to the stakeholder so they can book an appointment directly from within Awell Hosted Pages.\n2. If you are not leveraging Awell Hosted Pages but have built a custom integration then we expose you all the details via our API so you can either create a Cal.com booking widget yourself or redirect the user to the Cal.com platform. Additionally, we expose a mutation that allows you to complete the activity and pass in the required data.\n\nBelow you can find an overview of all Awell Apps and whether they support rendering of the booking widget.\n\n| App | Supported |\n| ----------------------------- | --------- |\n| Awell Hosted Pages | Yes |\n| Your app (custom integration) | Yes |\n| Awell Care | No |\n| Awell MyCare | No |\n\n#### Data points\n\nAdding this action to your care flow will expose a new data point you can use in your care flow, the `bookingId`. When the care flow is orchestrated and the book appointment activity is completed, the id of the actual booking will be ingested as the value of that `bookingId` data point.\n\n### Get booking action\n\nThis action allows you to fetch the details of a booking based on the provided `bookingId`. This action will make the following data points available for you to use in your care flow:\n\n1. Event type ID\n2. Title\n3. Description\n4. Start time\n5. End time\n6. Status\n7. Cancel URL\n8. Reschedule URL\n9. Video call URL (if available)\n10. First Attendee's name\n12. First Attendee's timezone\n12. First Attendee's email\n13. Organizer's email\n\n### Update booking\n\nUpdates a booking and saves new `bookingId` and `bookingUid` as Data Points. Values possible to update:\n\n- Title - Title of Booking event\n- Description - Description of the meeting\n- Status - Status of the meeting to be set. Possible values: \"ACCEPTED\", \"PENDING\", \"CANCELLED\", \"REJECTED\".\n- Start - Start time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours.\n- End - End time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours.\n\n### Create booking\n\nCreates a booking and saves new `bookingId` as Data Points. Available fields:\n\n- Event Type ID - ID of the event type to book\n- Responses - Object containing email, name, location\n - ```json\n \"responses\": {\n \"name\": \"John Doe\",\n \"email\": \"john.doe@example.com\",\n \"location\": \"Calcom HQ\"\n },\n ```\n- Metadata - Any metadata associated with the booking\n- Timezone - Timezone of the Attendee\n- Language - Language of the Attendee\n- Recurring Event ID - Recurring Event ID if the event is recurring\n- Title - Title of Booking event\n- Description - Description of the meeting\n- Status - Status of the meeting to be set. Possible values: \"ACCEPTED\", \"PENDING\", \"CANCELLED\", \"REJECTED\".\n- Start - Start time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours.\n- End - End time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours.\n\n### Delete Boooking\n\nDeletes a Booking with a given ID.\n\n## Pricing\n\n**This extension is free** but keep in mind that you might need a paid plan for Cal.com depending on your needs.\n\n## Limitations\n\n### Rescheduling\n\nWhen a previously made booking is rescheduled, there is no way yet to get the new/updated booking details into the care flow or have the care flow react on the updated booking.\n\nAlso note that when a booking is rescheduled, Cal.com doesn't update the original booking resource but creates a new one instead. As far as we know, there is no reference from the old booking to the new (rescheduled) booking.\n\n#### Example\n\nAn appointment has been booked with Cal.com and we have the below booking resource:\n\n```json\n{\n ...,\n \"bookingId\": \"1\",\n \"date\": \"Jan 1, 2023\"\n}\n```\n\nHowever, the patient reschedules the booking to Jan 10, 2023. When querying Cal.com's API (`GET v1/bookings/{bookingId}`), it will still return the old booking date instead of the new/rescheduled date.\n\n```json\n{\n ...,\n \"bookingId\": \"1\",\n \"date\": \"Jan 1, 2023\"\n}\n```\n\n## Webhooks\n\nWebhooks offer a great way to automate the flow with Awell when invitees schedule, cancel, or reschedule events, or when the meeting ends.\n\n**Important notes:**\n\n1. An Awell webhook endpoint can only listen to one event type. So make sure that when you create a webhook in Cal.com, the subscriber URL and the event trigger match the Awell webhook endpoint. This also means there can only be one event type per subscriber URL.\n2. Using a secret to verify the authenticity of the received payload is not yet supported.\n3. Custom payload templates are not supported, please use the default ones.\n",
|
12
12
|
"changelog": "# Cal.com changelog\n\n## September 15, 2023\n\n- add createBooking action\n- add first attendee name and timezone to getBooking data points\n\n## September 4, 2023\n\n- add updateBooking and deleteBooking actions\n- update and refactor structure of getBooking and bookAppointment actions\n\n## July 4, 2023\n\n- Get booking action: add validation that bookingId and apiKey are not empty\n- Get booking action: add validation of response data to make sure we have data points\n\n## April 27, 2023\n\n- Get booking action: `startTime` and `endTime` data points are now of value type `date` instead of `string`.\n"
|
13
13
|
},
|
14
|
+
"calendly": {
|
15
|
+
"readme": "---\ntitle: Calendly\ndescription: Calendly is your scheduling automation platform for eliminating the back-and-forth emails to find the perfect time\n---\n\n# Calendly\n\n[Calendly](https://calendly.com/) is the scheduling automation platform with team-based scheduling, solutions and integrations for every department, and advanced security features. Note that Calendly is not HIPAA-compliant, so is not endorsed by Awell. If you wish to use a HIPAA-compliant scheduling solution, we recommend using our Cal.com extension instead.\n\n## Extension settings\n\nIn order to set up this extension, **you will need to provide a Calendly API key**. You can obtain an API key via the Calendly portal (`Settings > Developer > API keys`).\n\n## Pricing\n\n**This extension is free** but keep in mind that you might need a paid plan for Calendly depending on your needs.\n\n## Webhooks\n\nWebhooks offer a great way to automate the flow with Awell when invitees schedule, cancel, or reschedule events, or when the meeting ends.\n\n**Important notes:**\n\n1. An Awell webhook endpoint can only listen to one event type. So make sure that when you create a webhook in Calendly, the subscriber URL and the event trigger match the Awell webhook endpoint. This also means there can only be one event type per subscriber URL.\n2. Using a secret to verify the authenticity of the received payload is not yet supported.\n3. Custom payload templates are not supported, please use the default ones.\n",
|
16
|
+
"changelog": "# Calendly changelog\n\n## November 3, 2023\n\n- Calendly webhooks for event created, canceled and rescheduled are now supported.\n"
|
17
|
+
},
|
14
18
|
"canvasMedical": {
|
15
19
|
"readme": "---\ntitle: Canvas Medical\ndescription: Canvas Medical is a healthcare platform that empowers care delivery companies to revolutionize digital health experiences for their patients and users.\n---\n\n# Canvas Medical\n\nCanvas Medical is a healthcare platform that empowers care delivery companies to revolutionize digital health experiences for their patients and users. Leveraging certified EHR as a foundation, Canvas Medical offers a comprehensive suite of APIs, enabling customers to swiftly launch innovative patient experiences and cost-effective business models.\n\nCanvas Medical provides appointment management, patient data creation and updates, task management, questionnaire creation, and much more.\n\n## Extension settings\n\nFor the extension to function correctly, you must include the following elements in your settings:\n\n`client_id` and `client_secret`: These values are generated on the Canvas Medical platform.\n`base_url`: This determines the base URL for your FHIR endpoint.\n`auth_url`: This determines the base URL for your authorization endpoint.\n\n### Create appointment\n\nEasily schedule appointments with providers using the Canvas API. This action allows you to reserve a meeting with a healthcare provider by submitting `appointmentData` in JSON format. Upon successful execution, the data points returns the unique `appointmentId`, serving as the key within the Canvas API object.\n\n### Create patient\n\nEffortlessly create patients using the Canvas API. This action allows you to generate a new patient record by submitting `patientData` in JSON format. Upon successful execution, the data points returns the unique `patientId`, serving as the key within the Canvas API object.\n\n### Create task\n\nEfficiently create tasks associated with a specific patient using the Canvas API. This action allows you to generate a new task linked to a designated patient by submitting `taskData` in JSON format. Upon successful execution, the data points returns the unique `taskId`, serving as the key within the Canvas API object.\n\n### Create questionnaire responses\n\nCreate questionnaire responses using the Canvas API to effortlessly record answers within an existing questionnaire. This action requires several parameters:\n\n- `Questionnaire ID`: Reference to the Canvas Questionnaire using the questionnaire id.\n- `Subject ID`: Reference to the Canvas Patient using the patient id.\n- `Authored`: Timestamp when the Questionnaire response was filled out (If omitted, the current timestamp at data ingestion will be used).\n- `Author ID`: Reference to the patient or practitioner filling out the questionnaire. If omitted, it defaults to Canvas Bot.\n- `Item`: List of answers to questions in the questionnaire.\n\nUpon successful execution, the data points returns `questionnaireResponseId`, which serves as the key within the Canvas API object.\n\n### Update appointment\n\nEffortlessly cancel or modify a reserved appointment using the Canvas API. This action allows you to update appointment details by submitting `appointmentData` in JSON format. Upon successful execution, the data points returns the `appointmentId`, serving as the key within the Canvas API object.\n\n### Update patient\n\nEfficiently update existing patient information within the system using the Canvas API. This action allows you to modify data by submitting `patientData` in JSON format. Upon successful execution, the data points returns the `patientId`, which serves as the key within the Canvas API object\n\n### Update task\n\nEfficiently update existing task information within the system using the Canvas API. This action allows you to modify data by submitting `taskData` in JSON format. Upon successful execution, the action returns the `taskId`, which serves as the key within the Canvas API object.\n\n### Create coverage\n\nEfficiently create a coverage using the Canvas API. This action requires several parameters:\n\n- `Order`: Specifies the order in which insurance coverages should be utilized when processing claims.\n- `Status`: Refers to the statuses represented within the Canvas Medical system.\n- `Type`: Pertains to the Insurance Coverage Code Category, such as medical or accident, using values from http://hl7.org/fhir/ValueSet/coverage-type.\n- `Subscriber`: Refers to the Canvas Patient using the patient ID, serving as the resource for the coverage's subscriber.\n- `Subscriber ID`: Refers to the Canvas Patient using the patient ID.\n- `Beneficiary`: Specifies the intended patient for the coverage.\n- `Relationship`: Relates to the beneficiary's relationship to the subscriber, as defined in the http://hl7.org/fhir/ValueSet/.\n- `Period start`: Indicates when the coverage became active for the patient.\n- `Period end`: Indicates when the coverage ceased to be active for the patient.\n- `Payor`: Relates to the entity responsible for payment.\n- `Class`: Utilized to define the plan, subplan, group, and subgroup.\n\n### Update coverage\n\nEfficiently update existin coverage using the Canvas API. This action requires several parameters:\n\n- `Id`: Reference to the Canvas Coverage using the coverage id.\n- `Order`: Specifies the order in which insurance coverages should be utilized when processing claims.\n- `Status`: Refers to the statuses represented within the Canvas Medical system.\n- `Type`: Pertains to the Insurance Coverage Code Category, such as medical or accident, using values from http://hl7.org/fhir/ValueSet/coverage-type.\n- `Subscriber`: Refers to the Canvas Patient using the patient ID, serving as the resource for the coverage's subscriber.\n- `Subscriber ID`: Refers to the Canvas Patient using the patient ID.\n- `Beneficiary`: Specifies the intended patient for the coverage.\n- `Relationship`: Relates to the beneficiary's relationship to the subscriber, as defined in the http://hl7.org/fhir/ValueSet/.\n- `Period start`: Indicates when the coverage became active for the patient.\n- `Period end`: Indicates when the coverage ceased to be active for the patient.\n- `Payor`: Relates to the entity responsible for payment.\n- `Class`: Utilized to define the plan, subplan, group, and subgroup.\n\n### Create claim\n\nCreate claim using the Canvas API. This action requires several parameters:\n\n- `status`: Status compliant with Canvas Medical.\n- `type`: Type compliant with Canvas Medical.\n- `patientId`: Reference to the Canvas Patient using the patient id.\n- `created`: The field indicating when this claim resource was created\n- `provider`: The field related to determining personnel resources for services in the statement\n- `supportingInfo`: Supporting info compliant with Canvas Medical.\n- `diagnosis`: The field represents the list will create the Assessments in Canvas for this claim.\n- `insurance`: The field represents the list of elements that defines what coverages are to be used when adjudicating the claim.\n- `item`: The field represents the list of service charges to be used in the claim.\n\nUpon successful execution, the data points returns `claimId`, which serves as the key within the Canvas API object.\n\n",
|
16
20
|
"changelog": "# Canvas Medical changelog\n\n## 2023-09-01\n\n- Add new actions: `createAppointment`, `createPatient`, `createQuestionnaireResponses`, `createTask`, `updateAppointment`, `updatePatient`, and `updateTask` for enhanced functionality.\n"
|