@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.
Files changed (83) hide show
  1. package/package.json +4 -4
  2. package/src/i18n/de.json +74 -0
  3. package/src/i18n/es.json +74 -0
  4. package/src/i18n/fr.json +101 -0
  5. package/src/i18n/ja.json +74 -0
  6. package/src/i18n/nl.json +74 -0
  7. package/src/i18n/pt.json +74 -0
  8. package/src/i18n/ru.json +74 -0
  9. package/src/i18n/translation.json +127 -0
  10. package/src/i18n/vi.json +74 -0
  11. package/src/i18n/zh.json +74 -0
  12. package/src/index.d.ts +3 -2
  13. package/src/index.js +27 -36
  14. package/src/index.js.map +1 -1
  15. package/src/lib/actions/cancel-event.d.ts +3 -1
  16. package/src/lib/actions/cancel-event.js +3 -3
  17. package/src/lib/actions/cancel-event.js.map +1 -1
  18. package/src/lib/actions/create-event.d.ts +10 -2
  19. package/src/lib/actions/create-event.js +32 -17
  20. package/src/lib/actions/create-event.js.map +1 -1
  21. package/src/lib/actions/delete-scheduling-link.d.ts +10 -0
  22. package/src/lib/actions/delete-scheduling-link.js +67 -0
  23. package/src/lib/actions/delete-scheduling-link.js.map +1 -0
  24. package/src/lib/actions/duplicate-scheduling-link.d.ts +10 -0
  25. package/src/lib/actions/duplicate-scheduling-link.js +63 -0
  26. package/src/lib/actions/duplicate-scheduling-link.js.map +1 -0
  27. package/src/lib/actions/find-events-by-email.d.ts +3 -1
  28. package/src/lib/actions/find-events-by-email.js +3 -3
  29. package/src/lib/actions/find-events-by-email.js.map +1 -1
  30. package/src/lib/actions/get-current-user.d.ts +3 -1
  31. package/src/lib/actions/get-current-user.js +3 -3
  32. package/src/lib/actions/get-current-user.js.map +1 -1
  33. package/src/lib/actions/get-event.d.ts +3 -1
  34. package/src/lib/actions/get-event.js +3 -3
  35. package/src/lib/actions/get-event.js.map +1 -1
  36. package/src/lib/actions/get-link-slots.d.ts +10 -0
  37. package/src/lib/actions/get-link-slots.js +70 -0
  38. package/src/lib/actions/get-link-slots.js.map +1 -0
  39. package/src/lib/actions/get-scheduling-link.d.ts +10 -0
  40. package/src/lib/actions/get-scheduling-link.js +63 -0
  41. package/src/lib/actions/get-scheduling-link.js.map +1 -0
  42. package/src/lib/actions/get-workflow-rules.d.ts +7 -0
  43. package/src/lib/actions/get-workflow-rules.js +50 -0
  44. package/src/lib/actions/get-workflow-rules.js.map +1 -0
  45. package/src/lib/actions/list-events.d.ts +10 -3
  46. package/src/lib/actions/list-events.js +70 -24
  47. package/src/lib/actions/list-events.js.map +1 -1
  48. package/src/lib/actions/list-scheduling-links.d.ts +7 -1
  49. package/src/lib/actions/list-scheduling-links.js +30 -17
  50. package/src/lib/actions/list-scheduling-links.js.map +1 -1
  51. package/src/lib/actions/list-workflows.d.ts +3 -0
  52. package/src/lib/actions/list-workflows.js +35 -0
  53. package/src/lib/actions/list-workflows.js.map +1 -0
  54. package/src/lib/actions/toggle-scheduling-link.d.ts +10 -0
  55. package/src/lib/actions/toggle-scheduling-link.js +63 -0
  56. package/src/lib/actions/toggle-scheduling-link.js.map +1 -0
  57. package/src/lib/auth.d.ts +14 -0
  58. package/src/lib/auth.js +59 -0
  59. package/src/lib/auth.js.map +1 -0
  60. package/src/lib/common/index.d.ts +13 -0
  61. package/src/lib/common/index.js +98 -29
  62. package/src/lib/common/index.js.map +1 -1
  63. package/src/lib/triggers/new-event.d.ts +36 -4
  64. package/src/lib/triggers/new-event.js +85 -18
  65. package/src/lib/triggers/new-event.js.map +1 -1
  66. package/src/lib/triggers/new-poll-response.d.ts +18 -0
  67. package/src/lib/triggers/new-poll-response.js +81 -0
  68. package/src/lib/triggers/new-poll-response.js.map +1 -0
  69. package/src/lib/triggers/workflow-action-triggered.d.ts +10 -0
  70. package/src/lib/triggers/workflow-action-triggered.js +65 -0
  71. package/src/lib/triggers/workflow-action-triggered.js.map +1 -0
  72. package/src/lib/common/webhook-trigger-factory.d.ts +0 -7
  73. package/src/lib/common/webhook-trigger-factory.js +0 -96
  74. package/src/lib/common/webhook-trigger-factory.js.map +0 -1
  75. package/src/lib/triggers/booking-canceled.d.ts +0 -1
  76. package/src/lib/triggers/booking-canceled.js +0 -11
  77. package/src/lib/triggers/booking-canceled.js.map +0 -1
  78. package/src/lib/triggers/booking-rescheduled.d.ts +0 -1
  79. package/src/lib/triggers/booking-rescheduled.js +0 -11
  80. package/src/lib/triggers/booking-rescheduled.js.map +0 -1
  81. package/src/lib/triggers/new-booking.d.ts +0 -1
  82. package/src/lib/triggers/new-booking.js +0 -11
  83. 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 __1 = require("../../");
8
+ const auth_1 = require("../auth");
9
9
  exports.listEventsAction = (0, pieces_framework_1.createAction)({
10
- auth: __1.savvyCalAuth,
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
- state: pieces_framework_1.Property.StaticDropdown({
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
- link_id: pieces_framework_1.Property.Dropdown({
38
- auth: __1.savvyCalAuth,
39
- displayName: 'Scheduling Link',
40
- description: 'Only return events booked through a specific scheduling link. Leave empty for all links.',
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 links = yield (0, common_1.savvyCalPaginatedCall)({
48
- token: auth,
49
- path: '/links',
50
- });
51
- return {
52
- disabled: false,
53
- options: links.map((l) => ({ label: `${l.name} (${l.slug})`, value: l.id })),
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
- const token = context.auth.secret_text;
70
- const { state, start_after, start_before, link_id, limit } = context.propsValue;
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 (link_id)
79
- queryParams['link_id'] = link_id;
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.map(common_1.flattenEvent);
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":"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"}
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").SecretTextProperty<true>, {}>;
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 __1 = require("../../");
7
+ const auth_1 = require("../auth");
8
8
  exports.listSchedulingLinksAction = (0, pieces_framework_1.createAction)({
9
- auth: __1.savvyCalAuth,
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.secret_text,
36
+ token: (0, auth_1.getToken)(context.auth),
18
37
  path: '/links',
19
38
  });
20
- return links.map((link) => {
21
- var _a, _b, _c;
22
- return ({
23
- id: link.id,
24
- name: link.name,
25
- slug: link.slug,
26
- url: (_a = link.url) !== null && _a !== void 0 ? _a : null,
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,qEAA8D;AAC9D,sCAA0E;AAC1E,8BAAsC;AAEzB,QAAA,yBAAyB,GAAG,IAAA,+BAAY,EAAC;IACpD,IAAI,EAAE,gBAAY;IAClB,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,mEAAmE;IAChF,KAAK,EAAE,EAAE;IACH,GAAG,CAAC,OAAO;;YACf,MAAM,KAAK,GAAG,MAAM,IAAA,8BAAqB,EAAyB;gBAChE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW;gBAC/B,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;;gBAAC,OAAA,CAAC;oBAC1B,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,mCAAI,IAAI;oBACrB,MAAM,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,IAAI;oBAC3B,gBAAgB,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,IAAI;oBACvC,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC,CAAA;aAAA,CAAC,CAAC;QACN,CAAC;KAAA;CACF,CAAC,CAAC"}
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;
@@ -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
  }