@activepieces/piece-savvycal 0.0.1 → 0.1.0
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/package.json +4 -4
- package/src/i18n/de.json +74 -0
- package/src/i18n/es.json +74 -0
- package/src/i18n/fr.json +101 -0
- package/src/i18n/ja.json +74 -0
- package/src/i18n/nl.json +74 -0
- package/src/i18n/pt.json +74 -0
- package/src/i18n/ru.json +74 -0
- package/src/i18n/translation.json +127 -0
- package/src/i18n/vi.json +74 -0
- package/src/i18n/zh.json +74 -0
- package/src/index.d.ts +3 -2
- package/src/index.js +27 -36
- package/src/index.js.map +1 -1
- package/src/lib/actions/cancel-event.d.ts +3 -1
- package/src/lib/actions/cancel-event.js +3 -3
- package/src/lib/actions/cancel-event.js.map +1 -1
- package/src/lib/actions/create-event.d.ts +10 -2
- package/src/lib/actions/create-event.js +32 -17
- package/src/lib/actions/create-event.js.map +1 -1
- package/src/lib/actions/delete-scheduling-link.d.ts +10 -0
- package/src/lib/actions/delete-scheduling-link.js +67 -0
- package/src/lib/actions/delete-scheduling-link.js.map +1 -0
- package/src/lib/actions/duplicate-scheduling-link.d.ts +10 -0
- package/src/lib/actions/duplicate-scheduling-link.js +63 -0
- package/src/lib/actions/duplicate-scheduling-link.js.map +1 -0
- package/src/lib/actions/find-events-by-email.d.ts +3 -1
- package/src/lib/actions/find-events-by-email.js +3 -3
- package/src/lib/actions/find-events-by-email.js.map +1 -1
- package/src/lib/actions/get-current-user.d.ts +3 -1
- package/src/lib/actions/get-current-user.js +3 -3
- package/src/lib/actions/get-current-user.js.map +1 -1
- package/src/lib/actions/get-event.d.ts +3 -1
- package/src/lib/actions/get-event.js +3 -3
- package/src/lib/actions/get-event.js.map +1 -1
- package/src/lib/actions/get-link-slots.d.ts +10 -0
- package/src/lib/actions/get-link-slots.js +70 -0
- package/src/lib/actions/get-link-slots.js.map +1 -0
- package/src/lib/actions/get-scheduling-link.d.ts +10 -0
- package/src/lib/actions/get-scheduling-link.js +63 -0
- package/src/lib/actions/get-scheduling-link.js.map +1 -0
- package/src/lib/actions/get-workflow-rules.d.ts +7 -0
- package/src/lib/actions/get-workflow-rules.js +50 -0
- package/src/lib/actions/get-workflow-rules.js.map +1 -0
- package/src/lib/actions/list-events.d.ts +10 -3
- package/src/lib/actions/list-events.js +70 -24
- package/src/lib/actions/list-events.js.map +1 -1
- package/src/lib/actions/list-scheduling-links.d.ts +7 -1
- package/src/lib/actions/list-scheduling-links.js +30 -17
- package/src/lib/actions/list-scheduling-links.js.map +1 -1
- package/src/lib/actions/list-workflows.d.ts +3 -0
- package/src/lib/actions/list-workflows.js +35 -0
- package/src/lib/actions/list-workflows.js.map +1 -0
- package/src/lib/actions/toggle-scheduling-link.d.ts +10 -0
- package/src/lib/actions/toggle-scheduling-link.js +63 -0
- package/src/lib/actions/toggle-scheduling-link.js.map +1 -0
- package/src/lib/auth.d.ts +14 -0
- package/src/lib/auth.js +59 -0
- package/src/lib/auth.js.map +1 -0
- package/src/lib/common/index.d.ts +13 -0
- package/src/lib/common/index.js +98 -29
- package/src/lib/common/index.js.map +1 -1
- package/src/lib/triggers/new-event.d.ts +36 -4
- package/src/lib/triggers/new-event.js +85 -18
- package/src/lib/triggers/new-event.js.map +1 -1
- package/src/lib/triggers/new-poll-response.d.ts +18 -0
- package/src/lib/triggers/new-poll-response.js +81 -0
- package/src/lib/triggers/new-poll-response.js.map +1 -0
- package/src/lib/triggers/workflow-action-triggered.d.ts +10 -0
- package/src/lib/triggers/workflow-action-triggered.js +65 -0
- package/src/lib/triggers/workflow-action-triggered.js.map +1 -0
- package/src/lib/common/webhook-trigger-factory.d.ts +0 -7
- package/src/lib/common/webhook-trigger-factory.js +0 -96
- package/src/lib/common/webhook-trigger-factory.js.map +0 -1
- package/src/lib/triggers/booking-canceled.d.ts +0 -1
- package/src/lib/triggers/booking-canceled.js +0 -11
- package/src/lib/triggers/booking-canceled.js.map +0 -1
- package/src/lib/triggers/booking-rescheduled.d.ts +0 -1
- package/src/lib/triggers/booking-rescheduled.js +0 -11
- package/src/lib/triggers/booking-rescheduled.js.map +0 -1
- package/src/lib/triggers/new-booking.d.ts +0 -1
- package/src/lib/triggers/new-booking.js +0 -11
- package/src/lib/triggers/new-booking.js.map +0 -1
|
@@ -5,20 +5,19 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
6
|
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
7
7
|
const common_1 = require("../common");
|
|
8
|
-
const
|
|
8
|
+
const auth_1 = require("../auth");
|
|
9
9
|
exports.listEventsAction = (0, pieces_framework_1.createAction)({
|
|
10
|
-
auth:
|
|
10
|
+
auth: auth_1.savvyCalAuth,
|
|
11
11
|
name: 'list_events',
|
|
12
12
|
displayName: 'List Events',
|
|
13
13
|
description: 'Returns a list of scheduled meetings from your SavvyCal account.',
|
|
14
14
|
props: {
|
|
15
|
-
|
|
15
|
+
states: pieces_framework_1.Property.StaticMultiSelectDropdown({
|
|
16
16
|
displayName: 'State',
|
|
17
|
-
description: 'Filter events by their current status.',
|
|
17
|
+
description: 'Filter events by their current status. Leave empty to return all statuses.',
|
|
18
18
|
required: false,
|
|
19
19
|
options: {
|
|
20
20
|
options: [
|
|
21
|
-
{ label: 'All', value: '' },
|
|
22
21
|
{ label: 'Confirmed', value: 'confirmed' },
|
|
23
22
|
{ label: 'Canceled', value: 'canceled' },
|
|
24
23
|
],
|
|
@@ -34,24 +33,36 @@ exports.listEventsAction = (0, pieces_framework_1.createAction)({
|
|
|
34
33
|
description: 'Only return events that start before this date and time.',
|
|
35
34
|
required: false,
|
|
36
35
|
}),
|
|
37
|
-
|
|
38
|
-
auth:
|
|
39
|
-
displayName: '
|
|
40
|
-
description: '
|
|
36
|
+
team_id: pieces_framework_1.Property.Dropdown({
|
|
37
|
+
auth: auth_1.savvyCalAuth,
|
|
38
|
+
displayName: 'Team',
|
|
39
|
+
description: 'Filter scheduling links by team. Leave empty to show all teams.',
|
|
41
40
|
refreshers: [],
|
|
42
41
|
required: false,
|
|
43
42
|
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
44
43
|
if (!auth)
|
|
45
44
|
return { disabled: true, options: [], placeholder: 'Please connect your account first' };
|
|
46
45
|
try {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
const options = yield (0, common_1.buildTeamOptions)((0, auth_1.getToken)(auth));
|
|
47
|
+
return { disabled: false, options };
|
|
48
|
+
}
|
|
49
|
+
catch (_b) {
|
|
50
|
+
return { disabled: true, options: [], placeholder: 'Failed to load teams.' };
|
|
51
|
+
}
|
|
52
|
+
}),
|
|
53
|
+
}),
|
|
54
|
+
link_ids: pieces_framework_1.Property.MultiSelectDropdown({
|
|
55
|
+
auth: auth_1.savvyCalAuth,
|
|
56
|
+
displayName: 'Scheduling Links',
|
|
57
|
+
description: 'Only return events booked through the selected scheduling links. Leave empty for all links.',
|
|
58
|
+
refreshers: ['team_id'],
|
|
59
|
+
required: false,
|
|
60
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth, team_id }) {
|
|
61
|
+
if (!auth)
|
|
62
|
+
return { disabled: true, options: [], placeholder: 'Please connect your account first' };
|
|
63
|
+
try {
|
|
64
|
+
const options = yield (0, common_1.buildLinkOptions)((0, auth_1.getToken)(auth), team_id);
|
|
65
|
+
return { disabled: false, options };
|
|
55
66
|
}
|
|
56
67
|
catch (_b) {
|
|
57
68
|
return { disabled: true, options: [], placeholder: 'Failed to load scheduling links.' };
|
|
@@ -66,17 +77,49 @@ exports.listEventsAction = (0, pieces_framework_1.createAction)({
|
|
|
66
77
|
},
|
|
67
78
|
run(context) {
|
|
68
79
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
69
|
-
|
|
70
|
-
const
|
|
80
|
+
var _a, _b;
|
|
81
|
+
const token = (0, auth_1.getToken)(context.auth);
|
|
82
|
+
const { states, start_after, start_before, link_ids, limit } = context.propsValue;
|
|
83
|
+
const selectedStates = states;
|
|
84
|
+
const selectedLinkIds = link_ids;
|
|
85
|
+
const hasLinkFilter = selectedLinkIds && selectedLinkIds.length > 0;
|
|
86
|
+
const needsClientFilter = (hasLinkFilter && selectedLinkIds.length > 1) || (selectedStates && selectedStates.length > 1);
|
|
71
87
|
const queryParams = {};
|
|
72
|
-
if (state)
|
|
73
|
-
queryParams['state'] = state;
|
|
74
88
|
if (start_after)
|
|
75
89
|
queryParams['start_after'] = start_after;
|
|
76
90
|
if (start_before)
|
|
77
91
|
queryParams['start_before'] = start_before;
|
|
78
|
-
if (
|
|
79
|
-
queryParams['
|
|
92
|
+
if (selectedStates && selectedStates.length === 1) {
|
|
93
|
+
queryParams['state'] = selectedStates[0];
|
|
94
|
+
}
|
|
95
|
+
if (hasLinkFilter && selectedLinkIds.length === 1) {
|
|
96
|
+
queryParams['link_id'] = selectedLinkIds[0];
|
|
97
|
+
}
|
|
98
|
+
if (limit && needsClientFilter) {
|
|
99
|
+
// Paginate page by page and stop as soon as we have enough post-filter results,
|
|
100
|
+
// so we never fetch unbounded pages when a limit is set alongside a client-side filter.
|
|
101
|
+
let after = null;
|
|
102
|
+
const collected = [];
|
|
103
|
+
do {
|
|
104
|
+
const params = Object.assign({ limit: '100' }, queryParams);
|
|
105
|
+
if (after)
|
|
106
|
+
params['after'] = after;
|
|
107
|
+
const response = yield (0, common_1.savvyCalApiCall)({
|
|
108
|
+
token,
|
|
109
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
110
|
+
path: '/events',
|
|
111
|
+
queryParams: params,
|
|
112
|
+
});
|
|
113
|
+
for (const event of response.body.entries) {
|
|
114
|
+
const matchesState = !selectedStates || selectedStates.length === 0 || selectedStates.includes(event.state);
|
|
115
|
+
const matchesLink = !hasLinkFilter || selectedLinkIds.includes((_b = (_a = event.link) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : '');
|
|
116
|
+
if (matchesState && matchesLink)
|
|
117
|
+
collected.push(event);
|
|
118
|
+
}
|
|
119
|
+
after = collected.length >= limit ? null : response.body.metadata.after;
|
|
120
|
+
} while (after);
|
|
121
|
+
return collected.slice(0, limit).map(common_1.flattenEvent);
|
|
122
|
+
}
|
|
80
123
|
if (limit) {
|
|
81
124
|
queryParams['limit'] = String(limit);
|
|
82
125
|
const response = yield (0, common_1.savvyCalApiCall)({
|
|
@@ -88,7 +131,10 @@ exports.listEventsAction = (0, pieces_framework_1.createAction)({
|
|
|
88
131
|
return response.body.entries.map(common_1.flattenEvent);
|
|
89
132
|
}
|
|
90
133
|
const events = yield (0, common_1.savvyCalPaginatedCall)({ token, path: '/events', queryParams });
|
|
91
|
-
return events
|
|
134
|
+
return events
|
|
135
|
+
.filter((e) => !selectedStates || selectedStates.length === 0 || selectedStates.includes(e.state))
|
|
136
|
+
.filter((e) => { var _a, _b; return !hasLinkFilter || selectedLinkIds.includes((_b = (_a = e.link) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : ''); })
|
|
137
|
+
.map(common_1.flattenEvent);
|
|
92
138
|
});
|
|
93
139
|
},
|
|
94
140
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-events.js","sourceRoot":"","sources":["../../../../src/lib/actions/list-events.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"list-events.js","sourceRoot":"","sources":["../../../../src/lib/actions/list-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
export declare const listSchedulingLinksAction: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").
|
|
1
|
+
export declare const listSchedulingLinksAction: import("@activepieces/pieces-framework").IAction<(import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
token: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
3
|
+
}>)[], {
|
|
4
|
+
team_id: import("@activepieces/pieces-framework").DropdownProperty<string, false, (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
5
|
+
token: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
6
|
+
}>)[]>;
|
|
7
|
+
}>;
|
|
@@ -4,32 +4,45 @@ exports.listSchedulingLinksAction = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
6
|
const common_1 = require("../common");
|
|
7
|
-
const
|
|
7
|
+
const auth_1 = require("../auth");
|
|
8
8
|
exports.listSchedulingLinksAction = (0, pieces_framework_1.createAction)({
|
|
9
|
-
auth:
|
|
9
|
+
auth: auth_1.savvyCalAuth,
|
|
10
10
|
name: 'list_scheduling_links',
|
|
11
11
|
displayName: 'List Scheduling Links',
|
|
12
12
|
description: 'Returns all scheduling links configured in your SavvyCal account.',
|
|
13
|
-
props: {
|
|
13
|
+
props: {
|
|
14
|
+
team_id: pieces_framework_1.Property.Dropdown({
|
|
15
|
+
auth: auth_1.savvyCalAuth,
|
|
16
|
+
displayName: 'Team',
|
|
17
|
+
description: 'Filter scheduling links by team. Leave empty to show all teams.',
|
|
18
|
+
refreshers: [],
|
|
19
|
+
required: false,
|
|
20
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
21
|
+
if (!auth)
|
|
22
|
+
return { disabled: true, options: [], placeholder: 'Please connect your account first' };
|
|
23
|
+
try {
|
|
24
|
+
const options = yield (0, common_1.buildTeamOptions)((0, auth_1.getToken)(auth));
|
|
25
|
+
return { disabled: false, options };
|
|
26
|
+
}
|
|
27
|
+
catch (_b) {
|
|
28
|
+
return { disabled: true, options: [], placeholder: 'Failed to load teams.' };
|
|
29
|
+
}
|
|
30
|
+
}),
|
|
31
|
+
}),
|
|
32
|
+
},
|
|
14
33
|
run(context) {
|
|
15
34
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
16
35
|
const links = yield (0, common_1.savvyCalPaginatedCall)({
|
|
17
|
-
token: context.auth
|
|
36
|
+
token: (0, auth_1.getToken)(context.auth),
|
|
18
37
|
path: '/links',
|
|
19
38
|
});
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
active: (_b = link.active) !== null && _b !== void 0 ? _b : null,
|
|
28
|
-
duration_minutes: (_c = link.duration) !== null && _c !== void 0 ? _c : null,
|
|
29
|
-
created_at: link.created_at,
|
|
30
|
-
updated_at: link.updated_at,
|
|
31
|
-
});
|
|
32
|
-
});
|
|
39
|
+
const { team_id } = context.propsValue;
|
|
40
|
+
const filtered = team_id
|
|
41
|
+
? team_id === 'personal'
|
|
42
|
+
? links.filter((l) => l.scope === null)
|
|
43
|
+
: links.filter((l) => { var _a; return ((_a = l.scope) === null || _a === void 0 ? void 0 : _a.id) === team_id; })
|
|
44
|
+
: links;
|
|
45
|
+
return filtered.map(common_1.flattenLink);
|
|
33
46
|
});
|
|
34
47
|
},
|
|
35
48
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-scheduling-links.js","sourceRoot":"","sources":["../../../../src/lib/actions/list-scheduling-links.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"list-scheduling-links.js","sourceRoot":"","sources":["../../../../src/lib/actions/list-scheduling-links.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,sCAAyG;AACzG,kCAAiD;AAEpC,QAAA,yBAAyB,GAAG,IAAA,+BAAY,EAAC;IACpD,IAAI,EAAE,mBAAY;IAClB,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,mEAAmE;IAChF,KAAK,EAAE;QACL,OAAO,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YACzB,IAAI,EAAE,mBAAY;YAClB,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,iEAAiE;YAC9E,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;gBACtB,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;gBACpG,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAgB,EAAC,IAAA,eAAQ,EAAC,IAAI,CAAC,CAAC,CAAC;oBACvD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;gBACtC,CAAC;gBAAC,WAAM,CAAC;oBACP,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;gBAC/E,CAAC;YACH,CAAC,CAAA;SACF,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,KAAK,GAAG,MAAM,IAAA,8BAAqB,EAAyB;gBAChE,KAAK,EAAE,IAAA,eAAQ,EAAC,OAAO,CAAC,IAAI,CAAC;gBAC7B,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YAEH,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YACvC,MAAM,QAAQ,GAAG,OAAO;gBACtB,CAAC,CAAC,OAAO,KAAK,UAAU;oBACtB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;oBACvC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,KAAK,0CAAE,EAAE,MAAK,OAAO,CAAA,EAAA,CAAC;gBAChD,CAAC,CAAC,KAAK,CAAC;YAEV,OAAO,QAAQ,CAAC,GAAG,CAAC,oBAAW,CAAC,CAAC;QACnC,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const listWorkflowsAction: import("@activepieces/pieces-framework").IAction<(import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
token: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
3
|
+
}>)[], {}>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listWorkflowsAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const common_1 = require("../common");
|
|
7
|
+
const auth_1 = require("../auth");
|
|
8
|
+
exports.listWorkflowsAction = (0, pieces_framework_1.createAction)({
|
|
9
|
+
auth: auth_1.savvyCalAuth,
|
|
10
|
+
name: 'list_workflows',
|
|
11
|
+
displayName: 'List Workflows',
|
|
12
|
+
description: 'Returns all workflows configured in your SavvyCal account.',
|
|
13
|
+
props: {},
|
|
14
|
+
run(context) {
|
|
15
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
const workflows = yield (0, common_1.savvyCalPaginatedCall)({
|
|
17
|
+
token: (0, auth_1.getToken)(context.auth),
|
|
18
|
+
path: '/workflows',
|
|
19
|
+
});
|
|
20
|
+
return workflows.map((workflow) => {
|
|
21
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
22
|
+
return ({
|
|
23
|
+
id: workflow.id,
|
|
24
|
+
name: workflow.name,
|
|
25
|
+
active: (_a = workflow.active) !== null && _a !== void 0 ? _a : null,
|
|
26
|
+
team_id: (_c = (_b = workflow.scope) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : null,
|
|
27
|
+
team_name: (_e = (_d = workflow.scope) === null || _d === void 0 ? void 0 : _d.name) !== null && _e !== void 0 ? _e : null,
|
|
28
|
+
created_at: (_f = workflow.created_at) !== null && _f !== void 0 ? _f : null,
|
|
29
|
+
updated_at: (_g = workflow.updated_at) !== null && _g !== void 0 ? _g : null,
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=list-workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-workflows.js","sourceRoot":"","sources":["../../../../src/lib/actions/list-workflows.ts"],"names":[],"mappings":";;;;AAAA,qEAA8D;AAC9D,sCAAkD;AAClD,kCAAiD;AAWpC,QAAA,mBAAmB,GAAG,IAAA,+BAAY,EAAC;IAC9C,IAAI,EAAE,mBAAY;IAClB,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,4DAA4D;IACzE,KAAK,EAAE,EAAE;IACH,GAAG,CAAC,OAAO;;YACf,MAAM,SAAS,GAAG,MAAM,IAAA,8BAAqB,EAAmB;gBAC9D,KAAK,EAAE,IAAA,eAAQ,EAAC,OAAO,CAAC,IAAI,CAAC;gBAC7B,IAAI,EAAE,YAAY;aACnB,CAAC,CAAC;YACH,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;;gBAAC,OAAA,CAAC;oBAClC,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,MAAM,EAAE,MAAA,QAAQ,CAAC,MAAM,mCAAI,IAAI;oBAC/B,OAAO,EAAE,MAAA,MAAA,QAAQ,CAAC,KAAK,0CAAE,EAAE,mCAAI,IAAI;oBACnC,SAAS,EAAE,MAAA,MAAA,QAAQ,CAAC,KAAK,0CAAE,IAAI,mCAAI,IAAI;oBACvC,UAAU,EAAE,MAAA,QAAQ,CAAC,UAAU,mCAAI,IAAI;oBACvC,UAAU,EAAE,MAAA,QAAQ,CAAC,UAAU,mCAAI,IAAI;iBACxC,CAAC,CAAA;aAAA,CAAC,CAAC;QACN,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const toggleSchedulingLinkAction: import("@activepieces/pieces-framework").IAction<(import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
token: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
3
|
+
}>)[], {
|
|
4
|
+
team_id: import("@activepieces/pieces-framework").DropdownProperty<string, false, (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
5
|
+
token: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
6
|
+
}>)[]>;
|
|
7
|
+
link_id: import("@activepieces/pieces-framework").DropdownProperty<string, true, (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
8
|
+
token: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
9
|
+
}>)[]>;
|
|
10
|
+
}>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toggleSchedulingLinkAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
7
|
+
const common_1 = require("../common");
|
|
8
|
+
const auth_1 = require("../auth");
|
|
9
|
+
exports.toggleSchedulingLinkAction = (0, pieces_framework_1.createAction)({
|
|
10
|
+
auth: auth_1.savvyCalAuth,
|
|
11
|
+
name: 'toggle_scheduling_link',
|
|
12
|
+
displayName: 'Toggle Scheduling Link',
|
|
13
|
+
description: 'Switches a scheduling link between active and disabled states.',
|
|
14
|
+
props: {
|
|
15
|
+
team_id: pieces_framework_1.Property.Dropdown({
|
|
16
|
+
auth: auth_1.savvyCalAuth,
|
|
17
|
+
displayName: 'Team',
|
|
18
|
+
description: 'Filter scheduling links by team. Leave empty to show all teams.',
|
|
19
|
+
refreshers: [],
|
|
20
|
+
required: false,
|
|
21
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
22
|
+
if (!auth)
|
|
23
|
+
return { disabled: true, options: [], placeholder: 'Please connect your account first' };
|
|
24
|
+
try {
|
|
25
|
+
const options = yield (0, common_1.buildTeamOptions)((0, auth_1.getToken)(auth));
|
|
26
|
+
return { disabled: false, options };
|
|
27
|
+
}
|
|
28
|
+
catch (_b) {
|
|
29
|
+
return { disabled: true, options: [], placeholder: 'Failed to load teams.' };
|
|
30
|
+
}
|
|
31
|
+
}),
|
|
32
|
+
}),
|
|
33
|
+
link_id: pieces_framework_1.Property.Dropdown({
|
|
34
|
+
auth: auth_1.savvyCalAuth,
|
|
35
|
+
displayName: 'Scheduling Link',
|
|
36
|
+
description: 'Select the scheduling link to toggle.',
|
|
37
|
+
refreshers: ['team_id'],
|
|
38
|
+
required: true,
|
|
39
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth, team_id }) {
|
|
40
|
+
if (!auth)
|
|
41
|
+
return { disabled: true, options: [], placeholder: 'Please connect your account first' };
|
|
42
|
+
try {
|
|
43
|
+
const options = yield (0, common_1.buildLinkOptions)((0, auth_1.getToken)(auth), team_id);
|
|
44
|
+
return { disabled: false, options };
|
|
45
|
+
}
|
|
46
|
+
catch (_b) {
|
|
47
|
+
return { disabled: true, options: [], placeholder: 'Failed to load scheduling links.' };
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
}),
|
|
51
|
+
},
|
|
52
|
+
run(context) {
|
|
53
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
const response = yield (0, common_1.savvyCalApiCall)({
|
|
55
|
+
token: (0, auth_1.getToken)(context.auth),
|
|
56
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
57
|
+
path: `/links/${context.propsValue.link_id}/toggle`,
|
|
58
|
+
});
|
|
59
|
+
return (0, common_1.flattenLink)(response.body);
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=toggle-scheduling-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle-scheduling-link.js","sourceRoot":"","sources":["../../../../src/lib/actions/toggle-scheduling-link.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAyD;AACzD,sCAMmB;AACnB,kCAAiD;AAEpC,QAAA,0BAA0B,GAAG,IAAA,+BAAY,EAAC;IACrD,IAAI,EAAE,mBAAY;IAClB,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,wBAAwB;IACrC,WAAW,EAAE,gEAAgE;IAC7E,KAAK,EAAE;QACL,OAAO,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YACzB,IAAI,EAAE,mBAAY;YAClB,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,iEAAiE;YAC9E,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;gBACtB,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;gBACpG,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAgB,EAAC,IAAA,eAAQ,EAAC,IAAI,CAAC,CAAC,CAAC;oBACvD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;gBACtC,CAAC;gBAAC,WAAM,CAAC;oBACP,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;gBAC/E,CAAC;YACH,CAAC,CAAA;SACF,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YACzB,IAAI,EAAE,mBAAY;YAClB,WAAW,EAAE,iBAAiB;YAC9B,WAAW,EAAE,uCAAuC;YACpD,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,KAA0B,EAAE,oDAArB,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC/B,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;gBACpG,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAgB,EAAC,IAAA,eAAQ,EAAC,IAAI,CAAC,EAAE,OAAwB,CAAC,CAAC;oBACjF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;gBACtC,CAAC;gBAAC,WAAM,CAAC;oBACP,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;gBAC1F,CAAC;YACH,CAAC,CAAA;SACF,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAe,EAAyB;gBAC7D,KAAK,EAAE,IAAA,eAAQ,EAAC,OAAO,CAAC,IAAI,CAAC;gBAC7B,MAAM,EAAE,0BAAU,CAAC,IAAI;gBACvB,IAAI,EAAE,UAAU,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS;aACpD,CAAC,CAAC;YACH,OAAO,IAAA,oBAAW,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AppConnectionType } from '@activepieces/shared';
|
|
2
|
+
export declare const savvyCalAuth: (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
3
|
+
token: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
4
|
+
}>)[];
|
|
5
|
+
export type SavvyCalAuthValue = {
|
|
6
|
+
type: AppConnectionType.OAUTH2;
|
|
7
|
+
access_token: string;
|
|
8
|
+
} | {
|
|
9
|
+
type: AppConnectionType.CUSTOM_AUTH;
|
|
10
|
+
props: {
|
|
11
|
+
token: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare function getToken(auth: SavvyCalAuthValue): string;
|
package/src/lib/auth.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.savvyCalAuth = void 0;
|
|
4
|
+
exports.getToken = getToken;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
7
|
+
const shared_1 = require("@activepieces/shared");
|
|
8
|
+
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
9
|
+
const common_1 = require("./common");
|
|
10
|
+
exports.savvyCalAuth = [
|
|
11
|
+
pieces_framework_1.PieceAuth.OAuth2({
|
|
12
|
+
description: 'Connect your SavvyCal account using OAuth2.',
|
|
13
|
+
authUrl: 'https://savvycal.com/oauth/authorize',
|
|
14
|
+
tokenUrl: 'https://savvycal.com/oauth/token',
|
|
15
|
+
required: true,
|
|
16
|
+
scope: [],
|
|
17
|
+
}),
|
|
18
|
+
pieces_framework_1.PieceAuth.CustomAuth({
|
|
19
|
+
displayName: 'Personal Access Token',
|
|
20
|
+
description: `To get your SavvyCal API token:
|
|
21
|
+
1. Log in to your SavvyCal account at https://savvycal.com
|
|
22
|
+
2. Go to **Settings > Developers**
|
|
23
|
+
3. Under **Personal Tokens**, click **Create a token**
|
|
24
|
+
4. Give it a name, then click the **...** menu next to it to view the token
|
|
25
|
+
5. Copy the **Private Key** (starts with \`pt_secret_\`) — not the Public Key
|
|
26
|
+
|
|
27
|
+
**Note:** Keep this token secret — it gives full access to your SavvyCal account.`,
|
|
28
|
+
required: true,
|
|
29
|
+
props: {
|
|
30
|
+
token: pieces_framework_1.PieceAuth.SecretText({
|
|
31
|
+
displayName: 'Personal Access Token',
|
|
32
|
+
description: 'Your SavvyCal Personal Access Token (Private Key).',
|
|
33
|
+
required: true,
|
|
34
|
+
}),
|
|
35
|
+
},
|
|
36
|
+
validate: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
37
|
+
try {
|
|
38
|
+
yield pieces_common_1.httpClient.sendRequest({
|
|
39
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
40
|
+
url: `${common_1.SAVVYCAL_BASE_URL}/me`,
|
|
41
|
+
authentication: {
|
|
42
|
+
type: pieces_common_1.AuthenticationType.BEARER_TOKEN,
|
|
43
|
+
token: auth.token,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
return { valid: true };
|
|
47
|
+
}
|
|
48
|
+
catch (_b) {
|
|
49
|
+
return { valid: false, error: 'Invalid token. Please check your Personal Access Token and try again.' };
|
|
50
|
+
}
|
|
51
|
+
}),
|
|
52
|
+
}),
|
|
53
|
+
];
|
|
54
|
+
function getToken(auth) {
|
|
55
|
+
if (auth.type === shared_1.AppConnectionType.OAUTH2)
|
|
56
|
+
return auth.access_token;
|
|
57
|
+
return auth.props.token;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/lib/auth.ts"],"names":[],"mappings":";;;AAqDA,4BAGC;;AAxDD,qEAA2D;AAC3D,iDAAyD;AACzD,+DAAyF;AACzF,qCAA6C;AAEhC,QAAA,YAAY,GAAG;IAC1B,4BAAS,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE,sCAAsC;QAC/C,QAAQ,EAAE,kCAAkC;QAC5C,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,EAAE;KACV,CAAC;IACF,4BAAS,CAAC,UAAU,CAAC;QACnB,WAAW,EAAE,uBAAuB;QACpC,WAAW,EAAE;;;;;;;kFAOiE;QAC9E,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE;YACL,KAAK,EAAE,4BAAS,CAAC,UAAU,CAAC;gBAC1B,WAAW,EAAE,uBAAuB;gBACpC,WAAW,EAAE,oDAAoD;gBACjE,QAAQ,EAAE,IAAI;aACf,CAAC;SACH;QACD,QAAQ,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;YACvB,IAAI,CAAC;gBACH,MAAM,0BAAU,CAAC,WAAW,CAAC;oBAC3B,MAAM,EAAE,0BAAU,CAAC,GAAG;oBACtB,GAAG,EAAE,GAAG,0BAAiB,KAAK;oBAC9B,cAAc,EAAE;wBACd,IAAI,EAAE,kCAAkB,CAAC,YAAY;wBACrC,KAAK,EAAE,IAAI,CAAC,KAAK;qBAClB;iBACF,CAAC,CAAC;gBACH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACzB,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,uEAAuE,EAAE,CAAC;YAC1G,CAAC;QACH,CAAC,CAAA;KACF,CAAC;CACH,CAAC;AAMF,SAAgB,QAAQ,CAAC,IAAuB;IAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,0BAAiB,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,YAAY,CAAC;IACrE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC1B,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { HttpMethod, HttpMessageBody, HttpResponse } from '@activepieces/pieces-common';
|
|
2
|
+
import { DropdownOption } from '@activepieces/pieces-framework';
|
|
2
3
|
export declare const SAVVYCAL_BASE_URL = "https://api.savvycal.com/v1";
|
|
4
|
+
export declare function verifyWebhookSignature(secret: string, signatureHeader: string, rawBody: unknown): boolean;
|
|
3
5
|
export declare function savvyCalApiCall<T extends HttpMessageBody>({ token, method, path, body, queryParams, }: {
|
|
4
6
|
token: string;
|
|
5
7
|
method: HttpMethod;
|
|
@@ -12,6 +14,10 @@ export declare function savvyCalPaginatedCall<T>({ token, path, queryParams, }:
|
|
|
12
14
|
path: string;
|
|
13
15
|
queryParams?: Record<string, string>;
|
|
14
16
|
}): Promise<T[]>;
|
|
17
|
+
export declare function buildTeamOptions(token: string): Promise<DropdownOption<string>[]>;
|
|
18
|
+
export declare function buildWorkflowOptions(token: string): Promise<DropdownOption<string>[]>;
|
|
19
|
+
export declare function buildLinkOptions(token: string, teamId?: string | null): Promise<DropdownOption<string>[]>;
|
|
20
|
+
export declare function flattenLink(link: SavvyCalSchedulingLink): Record<string, unknown>;
|
|
15
21
|
export declare function flattenEvent(event: SavvyCalEvent): Record<string, unknown>;
|
|
16
22
|
export interface SavvyCalAttendee {
|
|
17
23
|
id: string;
|
|
@@ -26,6 +32,7 @@ export interface SavvyCalAttendee {
|
|
|
26
32
|
}
|
|
27
33
|
export interface SavvyCalEvent {
|
|
28
34
|
id: string;
|
|
35
|
+
uuid: string | null;
|
|
29
36
|
summary: string | null;
|
|
30
37
|
description: string | null;
|
|
31
38
|
duration: number;
|
|
@@ -58,6 +65,11 @@ export interface SavvyCalEvent {
|
|
|
58
65
|
amount_total: number | null;
|
|
59
66
|
} | null;
|
|
60
67
|
}
|
|
68
|
+
export interface SavvyCalScope {
|
|
69
|
+
id: string;
|
|
70
|
+
name: string;
|
|
71
|
+
slug: string;
|
|
72
|
+
}
|
|
61
73
|
export interface SavvyCalSchedulingLink {
|
|
62
74
|
id: string;
|
|
63
75
|
name: string;
|
|
@@ -67,4 +79,5 @@ export interface SavvyCalSchedulingLink {
|
|
|
67
79
|
duration: number | null;
|
|
68
80
|
created_at: string;
|
|
69
81
|
updated_at: string;
|
|
82
|
+
scope: SavvyCalScope | null;
|
|
70
83
|
}
|