@coasy/piece-coasy 0.1.5 → 0.1.7
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 +36 -2
- package/src/index.d.ts +8 -0
- package/src/index.js +82 -0
- package/src/index.js.map +1 -0
- package/src/lib/actions/create-event-participant.d.ts +7 -0
- package/src/lib/actions/create-event-participant.js +27 -0
- package/src/lib/actions/create-event-participant.js.map +1 -0
- package/src/lib/actions/create-funnel-participant.d.ts +9 -0
- package/src/lib/actions/create-funnel-participant.js +37 -0
- package/src/lib/actions/create-funnel-participant.js.map +1 -0
- package/src/lib/actions/create-voucher.d.ts +8 -0
- package/src/lib/actions/create-voucher.js +48 -0
- package/src/lib/actions/create-voucher.js.map +1 -0
- package/src/lib/actions/enroll-user-course.d.ts +8 -0
- package/src/lib/actions/enroll-user-course.js +32 -0
- package/src/lib/actions/enroll-user-course.js.map +1 -0
- package/src/lib/actions/find-event.d.ts +6 -0
- package/src/lib/actions/find-event.js +22 -0
- package/src/lib/actions/find-event.js.map +1 -0
- package/src/lib/common/actions.d.ts +3 -0
- package/src/lib/common/actions.js +16 -0
- package/src/lib/common/actions.js.map +1 -0
- package/src/lib/common/coasyClient.d.ts +10 -0
- package/src/lib/common/coasyClient.js +59 -0
- package/src/lib/common/coasyClient.js.map +1 -0
- package/src/lib/common/triggers.d.ts +29 -0
- package/src/lib/common/triggers.js +34 -0
- package/src/lib/common/triggers.js.map +1 -0
- package/src/lib/triggers/cancelled-membership.d.ts +17 -0
- package/src/lib/triggers/cancelled-membership.js +45 -0
- package/src/lib/triggers/cancelled-membership.js.map +1 -0
- package/src/lib/triggers/cancelled-order-item.d.ts +23 -0
- package/src/lib/triggers/cancelled-order-item.js +55 -0
- package/src/lib/triggers/cancelled-order-item.js.map +1 -0
- package/src/lib/triggers/cancelled-order.d.ts +23 -0
- package/src/lib/triggers/cancelled-order.js +55 -0
- package/src/lib/triggers/cancelled-order.js.map +1 -0
- package/src/lib/triggers/cancelled-orderprocess.d.ts +17 -0
- package/src/lib/triggers/cancelled-orderprocess.js +45 -0
- package/src/lib/triggers/cancelled-orderprocess.js.map +1 -0
- package/src/lib/triggers/cancelled-subscription.d.ts +17 -0
- package/src/lib/triggers/cancelled-subscription.js +45 -0
- package/src/lib/triggers/cancelled-subscription.js.map +1 -0
- package/src/lib/triggers/get-events.d.ts +11 -0
- package/src/lib/triggers/get-events.js +39 -0
- package/src/lib/triggers/get-events.js.map +1 -0
- package/src/lib/triggers/new-app-user-sign-up.d.ts +11 -0
- package/src/lib/triggers/new-app-user-sign-up.js +39 -0
- package/src/lib/triggers/new-app-user-sign-up.js.map +1 -0
- package/src/lib/triggers/new-auth-event.d.ts +20 -0
- package/src/lib/triggers/new-auth-event.js +98 -0
- package/src/lib/triggers/new-auth-event.js.map +1 -0
- package/src/lib/triggers/new-customer.d.ts +11 -0
- package/src/lib/triggers/new-customer.js +39 -0
- package/src/lib/triggers/new-customer.js.map +1 -0
- package/src/lib/triggers/new-event-participant.d.ts +20 -0
- package/src/lib/triggers/new-event-participant.js +50 -0
- package/src/lib/triggers/new-event-participant.js.map +1 -0
- package/src/lib/triggers/new-funnel-participant.d.ts +17 -0
- package/src/lib/triggers/new-funnel-participant.js +45 -0
- package/src/lib/triggers/new-funnel-participant.js.map +1 -0
- package/src/lib/triggers/new-lead.d.ts +17 -0
- package/src/lib/triggers/new-lead.js +45 -0
- package/src/lib/triggers/new-lead.js.map +1 -0
- package/src/lib/triggers/new-membership.d.ts +17 -0
- package/src/lib/triggers/new-membership.js +45 -0
- package/src/lib/triggers/new-membership.js.map +1 -0
- package/src/lib/triggers/new-order-item.d.ts +23 -0
- package/src/lib/triggers/new-order-item.js +55 -0
- package/src/lib/triggers/new-order-item.js.map +1 -0
- package/src/lib/triggers/new-order.d.ts +23 -0
- package/src/lib/triggers/new-order.js +55 -0
- package/src/lib/triggers/new-order.js.map +1 -0
- package/src/lib/triggers/new-subscription.d.ts +17 -0
- package/src/lib/triggers/new-subscription.js +45 -0
- package/src/lib/triggers/new-subscription.js.map +1 -0
- package/src/lib/triggers/new-webinar-participant.d.ts +20 -0
- package/src/lib/triggers/new-webinar-participant.js +66 -0
- package/src/lib/triggers/new-webinar-participant.js.map +1 -0
- package/src/lib/triggers/webinar-participant-attend.d.ts +20 -0
- package/src/lib/triggers/webinar-participant-attend.js +66 -0
- package/src/lib/triggers/webinar-participant-attend.js.map +1 -0
- package/src/lib/triggers/webinar-participant-reminder.d.ts +20 -0
- package/src/lib/triggers/webinar-participant-reminder.js +66 -0
- package/src/lib/triggers/webinar-participant-reminder.js.map +1 -0
- package/.eslintrc.json +0 -33
- package/dist/packages/pieces/community/coasy/packages/pieces/community/coasy/README.md +0 -146
- package/dist/packages/pieces/community/framework/packages/pieces/community/framework/README.md +0 -11
- package/dist/packages/shared/packages/shared/README.md +0 -7
- package/project.json +0 -38
- package/src/index.ts +0 -35
- package/src/lib/actions/create-funnel-participant.ts +0 -42
- package/src/lib/common/coasyClient.ts +0 -56
- package/src/lib/common/triggers.ts +0 -58
- package/src/lib/triggers/new-auth-event.ts +0 -81
- package/src/lib/triggers/new-funnel-participant.ts +0 -40
- package/src/lib/triggers/new-webinar-participant.ts +0 -54
- package/tsconfig.json +0 -19
- package/tsconfig.lib.json +0 -11
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.webinarParticipantAttend = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const __1 = require("../..");
|
|
7
|
+
const triggers_1 = require("../common/triggers");
|
|
8
|
+
const triggerName = 'WEBINAR_PARTICIPANT_ATTEND';
|
|
9
|
+
exports.webinarParticipantAttend = (0, pieces_framework_1.createTrigger)({
|
|
10
|
+
auth: __1.coasyAuth,
|
|
11
|
+
name: 'webinarParticipantAttend',
|
|
12
|
+
displayName: 'Webinar Participant Attend',
|
|
13
|
+
description: 'Triggers when a webinar participant has attended or not attended',
|
|
14
|
+
props: {
|
|
15
|
+
selectedStartType: pieces_framework_1.Property.StaticDropdown({
|
|
16
|
+
displayName: 'Selected start type',
|
|
17
|
+
description: 'filter only those participants',
|
|
18
|
+
required: false,
|
|
19
|
+
options: {
|
|
20
|
+
options: [
|
|
21
|
+
{
|
|
22
|
+
label: 'Upcoming',
|
|
23
|
+
value: 'UPCOMING',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: 'Attended',
|
|
27
|
+
value: 'ATTENDED',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
label: 'Not Attended',
|
|
31
|
+
value: 'NOT_ATTENDED',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
}),
|
|
36
|
+
webinarIds: pieces_framework_1.Property.Array({
|
|
37
|
+
displayName: 'Webinar IDs',
|
|
38
|
+
description: 'IDs of webinar to react to',
|
|
39
|
+
required: false,
|
|
40
|
+
}),
|
|
41
|
+
},
|
|
42
|
+
sampleData: {},
|
|
43
|
+
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
44
|
+
onEnable: (context) => (0, triggers_1.createCoasyTrigger)({
|
|
45
|
+
triggerName,
|
|
46
|
+
webhookUrl: context.webhookUrl,
|
|
47
|
+
auth: context.auth,
|
|
48
|
+
filter: context.propsValue,
|
|
49
|
+
store: context.store,
|
|
50
|
+
}),
|
|
51
|
+
onDisable: (context) => (0, triggers_1.destroyCoasyTrigger)({
|
|
52
|
+
triggerName,
|
|
53
|
+
auth: context.auth,
|
|
54
|
+
store: context.store,
|
|
55
|
+
}),
|
|
56
|
+
test: (context) => (0, triggers_1.testCoasyTrigger)({
|
|
57
|
+
triggerName,
|
|
58
|
+
auth: context.auth,
|
|
59
|
+
}),
|
|
60
|
+
run(context) {
|
|
61
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
return [context.payload.body];
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=webinar-participant-attend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webinar-participant-attend.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/coasy/src/lib/triggers/webinar-participant-attend.ts"],"names":[],"mappings":";;;;AAAA,qEAIwC;AACxC,6BAAkC;AAClC,iDAI4B;AAE5B,MAAM,WAAW,GAAG,4BAA4B,CAAC;AAEpC,QAAA,wBAAwB,GAAG,IAAA,gCAAa,EAAC;IACpD,IAAI,EAAE,aAAS;IACf,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE,4BAA4B;IACzC,WAAW,EACT,kEAAkE;IACpE,KAAK,EAAE;QACL,iBAAiB,EAAE,2BAAQ,CAAC,cAAc,CAAC;YACzC,WAAW,EAAE,qBAAqB;YAClC,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP;wBACE,KAAK,EAAE,UAAU;wBACjB,KAAK,EAAE,UAAU;qBAClB;oBACD;wBACE,KAAK,EAAE,UAAU;wBACjB,KAAK,EAAE,UAAU;qBAClB;oBACD;wBACE,KAAK,EAAE,cAAc;wBACrB,KAAK,EAAE,cAAc;qBACtB;iBACF;aACF;SACF,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,KAAK,CAAC;YACzB,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACD,UAAU,EAAE,EAAE;IACd,IAAI,EAAE,kCAAe,CAAC,OAAO;IAC7B,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CACpB,IAAA,6BAAkB,EAAC;QACjB,WAAW;QACX,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,UAAU;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;IACJ,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACrB,IAAA,8BAAmB,EAAC;QAClB,WAAW;QACX,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;IACJ,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAChB,IAAA,2BAAgB,EAAC;QACf,WAAW;QACX,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC;IACE,GAAG,CAAC,OAAO;;YACf,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TriggerStrategy } from '@activepieces/pieces-framework';
|
|
2
|
+
export declare const webinarParticipantReminder: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
3
|
+
baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
4
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
5
|
+
}>, {
|
|
6
|
+
selectedStartType: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
|
|
7
|
+
webinarIds: import("@activepieces/pieces-framework").ArrayProperty<false>;
|
|
8
|
+
}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
9
|
+
baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
10
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
11
|
+
}>, {
|
|
12
|
+
selectedStartType: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
|
|
13
|
+
webinarIds: import("@activepieces/pieces-framework").ArrayProperty<false>;
|
|
14
|
+
}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
15
|
+
baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
16
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
17
|
+
}>, {
|
|
18
|
+
selectedStartType: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
|
|
19
|
+
webinarIds: import("@activepieces/pieces-framework").ArrayProperty<false>;
|
|
20
|
+
}>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.webinarParticipantReminder = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const __1 = require("../..");
|
|
7
|
+
const triggers_1 = require("../common/triggers");
|
|
8
|
+
const triggerName = 'WEBINAR_PARTICIPANT_REMINDER';
|
|
9
|
+
exports.webinarParticipantReminder = (0, pieces_framework_1.createTrigger)({
|
|
10
|
+
auth: __1.coasyAuth,
|
|
11
|
+
name: 'webinarParticipantReminder',
|
|
12
|
+
displayName: 'Webinar Participant Reminder',
|
|
13
|
+
description: 'Triggers when a webinar participant is reminded',
|
|
14
|
+
props: {
|
|
15
|
+
selectedStartType: pieces_framework_1.Property.StaticDropdown({
|
|
16
|
+
displayName: 'Selected start type',
|
|
17
|
+
description: 'filter only those participants',
|
|
18
|
+
required: false,
|
|
19
|
+
options: {
|
|
20
|
+
options: [
|
|
21
|
+
{
|
|
22
|
+
label: 'Upcoming',
|
|
23
|
+
value: 'UPCOMING',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: 'Attended',
|
|
27
|
+
value: 'ATTENDED',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
label: 'Not Attended',
|
|
31
|
+
value: 'NOT_ATTENDED',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
}),
|
|
36
|
+
webinarIds: pieces_framework_1.Property.Array({
|
|
37
|
+
displayName: 'Webinar IDs',
|
|
38
|
+
description: 'IDs of webinar to react to',
|
|
39
|
+
required: false,
|
|
40
|
+
}),
|
|
41
|
+
},
|
|
42
|
+
sampleData: {},
|
|
43
|
+
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
44
|
+
onEnable: (context) => (0, triggers_1.createCoasyTrigger)({
|
|
45
|
+
triggerName,
|
|
46
|
+
webhookUrl: context.webhookUrl,
|
|
47
|
+
auth: context.auth,
|
|
48
|
+
filter: context.propsValue,
|
|
49
|
+
store: context.store,
|
|
50
|
+
}),
|
|
51
|
+
onDisable: (context) => (0, triggers_1.destroyCoasyTrigger)({
|
|
52
|
+
triggerName,
|
|
53
|
+
auth: context.auth,
|
|
54
|
+
store: context.store,
|
|
55
|
+
}),
|
|
56
|
+
test: (context) => (0, triggers_1.testCoasyTrigger)({
|
|
57
|
+
triggerName,
|
|
58
|
+
auth: context.auth,
|
|
59
|
+
}),
|
|
60
|
+
run(context) {
|
|
61
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
return [context.payload.body];
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=webinar-participant-reminder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webinar-participant-reminder.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/coasy/src/lib/triggers/webinar-participant-reminder.ts"],"names":[],"mappings":";;;;AAAA,qEAIwC;AACxC,6BAAkC;AAClC,iDAI4B;AAE5B,MAAM,WAAW,GAAG,8BAA8B,CAAC;AAEtC,QAAA,0BAA0B,GAAG,IAAA,gCAAa,EAAC;IACtD,IAAI,EAAE,aAAS;IACf,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE,iDAAiD;IAC9D,KAAK,EAAE;QACL,iBAAiB,EAAE,2BAAQ,CAAC,cAAc,CAAC;YACzC,WAAW,EAAE,qBAAqB;YAClC,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP;wBACE,KAAK,EAAE,UAAU;wBACjB,KAAK,EAAE,UAAU;qBAClB;oBACD;wBACE,KAAK,EAAE,UAAU;wBACjB,KAAK,EAAE,UAAU;qBAClB;oBACD;wBACE,KAAK,EAAE,cAAc;wBACrB,KAAK,EAAE,cAAc;qBACtB;iBACF;aACF;SACF,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,KAAK,CAAC;YACzB,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACD,UAAU,EAAE,EAAE;IACd,IAAI,EAAE,kCAAe,CAAC,OAAO;IAC7B,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CACpB,IAAA,6BAAkB,EAAC;QACjB,WAAW;QACX,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,UAAU;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;IACJ,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACrB,IAAA,8BAAmB,EAAC;QAClB,WAAW;QACX,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;IACJ,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAChB,IAAA,2BAAgB,EAAC;QACf,WAAW;QACX,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC;IACE,GAAG,CAAC,OAAO;;YACf,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;KAAA;CACF,CAAC,CAAC"}
|
package/.eslintrc.json
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": [
|
|
3
|
-
"../../../../.eslintrc.base.json"
|
|
4
|
-
],
|
|
5
|
-
"ignorePatterns": [
|
|
6
|
-
"!**/*"
|
|
7
|
-
],
|
|
8
|
-
"overrides": [
|
|
9
|
-
{
|
|
10
|
-
"files": [
|
|
11
|
-
"*.ts",
|
|
12
|
-
"*.tsx",
|
|
13
|
-
"*.js",
|
|
14
|
-
"*.jsx"
|
|
15
|
-
],
|
|
16
|
-
"rules": {}
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"files": [
|
|
20
|
-
"*.ts",
|
|
21
|
-
"*.tsx"
|
|
22
|
-
],
|
|
23
|
-
"rules": {}
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"files": [
|
|
27
|
-
"*.js",
|
|
28
|
-
"*.jsx"
|
|
29
|
-
],
|
|
30
|
-
"rules": {}
|
|
31
|
-
}
|
|
32
|
-
]
|
|
33
|
-
}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
# Coasy Piece for Activepieces
|
|
2
|
-
|
|
3
|
-
This is the Coasy integration piece for Activepieces, providing actions and triggers to interact with the Coasy platform for funnel and webinar management.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
The Coasy piece includes:
|
|
8
|
-
- **Actions**: Create funnel participants
|
|
9
|
-
- **Triggers**: New funnel participants, new webinar participants, new auth events
|
|
10
|
-
- **Authentication**: Custom auth with base URL and API key
|
|
11
|
-
|
|
12
|
-
## Development Setup
|
|
13
|
-
|
|
14
|
-
### Prerequisites
|
|
15
|
-
1. Clone the activepieces repository
|
|
16
|
-
2. Install dependencies: `npm install`
|
|
17
|
-
3. Ensure you're in the root directory of the activepieces monorepo
|
|
18
|
-
|
|
19
|
-
### Development Commands
|
|
20
|
-
|
|
21
|
-
#### Building the Piece
|
|
22
|
-
```bash
|
|
23
|
-
# Build the coasy piece specifically
|
|
24
|
-
nx build pieces-coasy
|
|
25
|
-
|
|
26
|
-
# Build with watch mode for development
|
|
27
|
-
nx build pieces-coasy --watch
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
#### Testing
|
|
31
|
-
```bash
|
|
32
|
-
# Run tests for the coasy piece
|
|
33
|
-
nx test pieces-coasy
|
|
34
|
-
|
|
35
|
-
# Run tests with watch mode
|
|
36
|
-
nx test pieces-coasy --watch
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
#### Linting
|
|
40
|
-
```bash
|
|
41
|
-
# Lint the coasy piece
|
|
42
|
-
nx lint pieces-coasy
|
|
43
|
-
|
|
44
|
-
# Auto-fix lint issues
|
|
45
|
-
nx lint pieces-coasy --fix
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Development Workflow
|
|
49
|
-
|
|
50
|
-
#### 1. Start Development Environment
|
|
51
|
-
```bash
|
|
52
|
-
# Start the full development environment (frontend + backend + engine + pieces)
|
|
53
|
-
npm run dev
|
|
54
|
-
|
|
55
|
-
# Or start just backend services if only testing the piece
|
|
56
|
-
npm run dev:backend
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
#### 2. Testing Your Changes
|
|
60
|
-
- Navigate to `http://localhost:4200` (frontend)
|
|
61
|
-
- Create a new flow and add Coasy actions/triggers
|
|
62
|
-
- Test authentication with your Coasy credentials
|
|
63
|
-
- Verify actions and triggers work as expected
|
|
64
|
-
|
|
65
|
-
#### 3. Adding New Features
|
|
66
|
-
|
|
67
|
-
**Adding a New Action:**
|
|
68
|
-
1. Create a new file in `src/lib/actions/`
|
|
69
|
-
2. Export the action from `src/index.ts`
|
|
70
|
-
3. Follow the existing patterns in `create-funnel-participant.ts`
|
|
71
|
-
|
|
72
|
-
**Adding a New Trigger:**
|
|
73
|
-
1. Create a new file in `src/lib/triggers/`
|
|
74
|
-
2. Export the trigger from `src/index.ts`
|
|
75
|
-
3. Follow the existing patterns in `new-funnel-participant.ts`
|
|
76
|
-
|
|
77
|
-
#### 4. File Structure
|
|
78
|
-
```
|
|
79
|
-
packages/pieces/community/coasy/
|
|
80
|
-
├── README.md # This file
|
|
81
|
-
├── package.json # Package configuration
|
|
82
|
-
├── project.json # Nx project configuration
|
|
83
|
-
├── tsconfig.json # TypeScript config
|
|
84
|
-
└── src/
|
|
85
|
-
├── index.ts # Main piece definition and exports
|
|
86
|
-
└── lib/
|
|
87
|
-
├── actions/ # Action implementations
|
|
88
|
-
├── triggers/ # Trigger implementations
|
|
89
|
-
└── common/ # Shared utilities
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Code Standards
|
|
93
|
-
|
|
94
|
-
### Authentication
|
|
95
|
-
The piece uses custom authentication with:
|
|
96
|
-
- `baseUrl`: Coasy instance base URL
|
|
97
|
-
- `apiKey`: API key for authentication
|
|
98
|
-
|
|
99
|
-
### Error Handling
|
|
100
|
-
- Use proper error messages for user-facing errors
|
|
101
|
-
- Handle API errors gracefully
|
|
102
|
-
- Validate inputs before making API calls
|
|
103
|
-
|
|
104
|
-
### Properties
|
|
105
|
-
- Use descriptive `displayName` and `description` for all properties
|
|
106
|
-
- Mark required fields appropriately
|
|
107
|
-
- Use proper property types from `@activepieces/pieces-framework`
|
|
108
|
-
|
|
109
|
-
## Testing in Activepieces
|
|
110
|
-
|
|
111
|
-
1. **Authentication Testing**:
|
|
112
|
-
- Verify connection works with valid credentials
|
|
113
|
-
- Test error handling with invalid credentials
|
|
114
|
-
|
|
115
|
-
2. **Action Testing**:
|
|
116
|
-
- Test with valid inputs
|
|
117
|
-
- Test error scenarios
|
|
118
|
-
- Verify data transformation
|
|
119
|
-
|
|
120
|
-
3. **Trigger Testing**:
|
|
121
|
-
- Set up webhooks/polling as needed
|
|
122
|
-
- Test trigger conditions
|
|
123
|
-
- Verify payload structure
|
|
124
|
-
|
|
125
|
-
## Publishing
|
|
126
|
-
|
|
127
|
-
The piece is published as `@coasy/piece-coasy` to npm. Version is currently `0.0.12`.
|
|
128
|
-
|
|
129
|
-
To publish a new version:
|
|
130
|
-
1. Navigate to the coasy piece directory:
|
|
131
|
-
```bash
|
|
132
|
-
cd packages/pieces/community/coasy
|
|
133
|
-
```
|
|
134
|
-
2. Update the `version` in `package.json` (e.g., from `0.0.11` to `0.0.12`)
|
|
135
|
-
3. Publish directly to npm:
|
|
136
|
-
```bash
|
|
137
|
-
npm publish
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
**Note**: The monorepo's `npm run publish-piece` script currently has dependency resolution issues. Use the direct `npm publish` method above instead.
|
|
141
|
-
|
|
142
|
-
## Resources
|
|
143
|
-
|
|
144
|
-
- [Activepieces Documentation](https://www.activepieces.com/docs)
|
|
145
|
-
- [Pieces Framework Reference](https://www.activepieces.com/docs/developers/piece-reference/properties)
|
|
146
|
-
- [Piece Development Guide](https://www.activepieces.com/docs/developers/building-pieces/create-action)
|
package/dist/packages/pieces/community/framework/packages/pieces/community/framework/README.md
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# pieces-framework
|
|
2
|
-
|
|
3
|
-
This library was generated with [Nx](https://nx.dev).
|
|
4
|
-
|
|
5
|
-
## Building
|
|
6
|
-
|
|
7
|
-
Run `nx build pieces-framework` to build the library.
|
|
8
|
-
|
|
9
|
-
## Running unit tests
|
|
10
|
-
|
|
11
|
-
Run `nx test pieces-framework` to execute the unit tests via [Jest](https://jestjs.io).
|
package/project.json
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "pieces-coasy",
|
|
3
|
-
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
|
|
4
|
-
"sourceRoot": "packages/pieces/community/coasy/src",
|
|
5
|
-
"projectType": "library",
|
|
6
|
-
"targets": {
|
|
7
|
-
"build": {
|
|
8
|
-
"executor": "@nx/js:tsc",
|
|
9
|
-
"outputs": [
|
|
10
|
-
"{options.outputPath}"
|
|
11
|
-
],
|
|
12
|
-
"options": {
|
|
13
|
-
"outputPath": "dist/packages/pieces/community/coasy",
|
|
14
|
-
"tsConfig": "packages/pieces/community/coasy/tsconfig.lib.json",
|
|
15
|
-
"packageJson": "packages/pieces/community/coasy/package.json",
|
|
16
|
-
"main": "packages/pieces/community/coasy/src/index.ts",
|
|
17
|
-
"assets": [
|
|
18
|
-
"packages/pieces/community/coasy/*.md"
|
|
19
|
-
],
|
|
20
|
-
"buildableProjectDepsInPackageJsonType": "dependencies",
|
|
21
|
-
"updateBuildableProjectDepsInPackageJson": true
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
"publish": {
|
|
25
|
-
"command": "node tools/scripts/publish.mjs pieces-coasy {args.ver} {args.tag}",
|
|
26
|
-
"dependsOn": [
|
|
27
|
-
"build"
|
|
28
|
-
]
|
|
29
|
-
},
|
|
30
|
-
"lint": {
|
|
31
|
-
"executor": "@nx/eslint:lint",
|
|
32
|
-
"outputs": [
|
|
33
|
-
"{options.outputFile}"
|
|
34
|
-
]
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
"tags": []
|
|
38
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { createPiece, PieceAuth, Property } from '@activepieces/pieces-framework';
|
|
2
|
-
import { createFunnelParticipant } from './lib/actions/create-funnel-participant';
|
|
3
|
-
import { newFunnelParticipant } from './lib/triggers/new-funnel-participant';
|
|
4
|
-
import { newWebinarParticipant } from './lib/triggers/new-webinar-participant';
|
|
5
|
-
import { newAuthEvent } from './lib/triggers/new-auth-event';
|
|
6
|
-
|
|
7
|
-
export const coasyAuth = PieceAuth.CustomAuth({
|
|
8
|
-
required: true,
|
|
9
|
-
description: 'Enter coasy authentication details',
|
|
10
|
-
props: {
|
|
11
|
-
baseUrl: Property.ShortText({
|
|
12
|
-
displayName: 'Base URL',
|
|
13
|
-
description: 'Enter the base URL',
|
|
14
|
-
required: false,
|
|
15
|
-
defaultValue: 'https://backend.api.prod.coasy.io',
|
|
16
|
-
}),
|
|
17
|
-
apiKey: PieceAuth.SecretText({
|
|
18
|
-
displayName: 'API Key',
|
|
19
|
-
description: 'Enter the api key',
|
|
20
|
-
required: true
|
|
21
|
-
})
|
|
22
|
-
},
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
export const coasy = createPiece({
|
|
26
|
-
displayName: 'Coasy',
|
|
27
|
-
auth: coasyAuth,
|
|
28
|
-
description: 'Communicate with Coasy',
|
|
29
|
-
minimumSupportedRelease: '0.20.0',
|
|
30
|
-
logoUrl: 'https://console.coasy.io/favicon/apple-icon.png',
|
|
31
|
-
authors: ["christian-schab"],
|
|
32
|
-
actions: [createFunnelParticipant],
|
|
33
|
-
triggers: [newFunnelParticipant, newWebinarParticipant, newAuthEvent]
|
|
34
|
-
});
|
|
35
|
-
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { createAction, Property } from '@activepieces/pieces-framework';
|
|
2
|
-
import { coasyAuth } from '../../index';
|
|
3
|
-
import { CoasyClient } from '../common/coasyClient';
|
|
4
|
-
|
|
5
|
-
export const createFunnelParticipant = createAction({
|
|
6
|
-
auth: coasyAuth,
|
|
7
|
-
name: 'createFunnelParticipant',
|
|
8
|
-
displayName: 'Create Funnel Participant',
|
|
9
|
-
description: 'Create a new funnel participant',
|
|
10
|
-
props: {
|
|
11
|
-
funnelId: Property.ShortText({
|
|
12
|
-
displayName: 'Funnel ID',
|
|
13
|
-
description: 'ID of funnel',
|
|
14
|
-
required: true
|
|
15
|
-
}),
|
|
16
|
-
firstName: Property.ShortText({
|
|
17
|
-
displayName: 'First name',
|
|
18
|
-
description: 'first name of participant',
|
|
19
|
-
required: true
|
|
20
|
-
}),
|
|
21
|
-
lastName: Property.ShortText({
|
|
22
|
-
displayName: 'Last name',
|
|
23
|
-
description: 'last name of participant',
|
|
24
|
-
required: false
|
|
25
|
-
}),
|
|
26
|
-
email: Property.ShortText({
|
|
27
|
-
displayName: 'Email',
|
|
28
|
-
description: 'email address of partipant',
|
|
29
|
-
required: true
|
|
30
|
-
})
|
|
31
|
-
},
|
|
32
|
-
async run(configValue) {
|
|
33
|
-
const { propsValue, auth } = configValue;
|
|
34
|
-
const client = new CoasyClient(auth.baseUrl ?? 'https://backend.api.prod.coasy.io', auth.apiKey);
|
|
35
|
-
const request = {
|
|
36
|
-
email: propsValue.email,
|
|
37
|
-
firstName: propsValue.firstName,
|
|
38
|
-
funnelId: propsValue.funnelId
|
|
39
|
-
};
|
|
40
|
-
return client.action('createFunnelParticipant', request);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { AuthenticationType, httpClient, HttpMethod, HttpRequest } from '@activepieces/pieces-common';
|
|
2
|
-
|
|
3
|
-
export class CoasyClient {
|
|
4
|
-
private baseUrl: string;
|
|
5
|
-
private apiKey: string;
|
|
6
|
-
|
|
7
|
-
constructor(baseUrl: string, apiKey: string) {
|
|
8
|
-
this.baseUrl = baseUrl;
|
|
9
|
-
this.apiKey = apiKey;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
async action(actionName: string, request: any) {
|
|
14
|
-
return this.request(`/apps/actions/${actionName}`, request);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
async createTrigger(trigger: string, hookUrl: string, filter: any) {
|
|
18
|
-
return this.request(`/apps/triggers/create`, {
|
|
19
|
-
hookUrl,
|
|
20
|
-
trigger,
|
|
21
|
-
filter
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async destroyTrigger(webhookId: string) {
|
|
26
|
-
return this.request(`/apps/triggers/destroy`, { webhookId})
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
async listTriggerEvents(trigger: string) {
|
|
30
|
-
return this.request(`/apps/list`, {
|
|
31
|
-
trigger
|
|
32
|
-
})
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
async request(path: string, requestBody: any) {
|
|
37
|
-
const request: HttpRequest<string> = {
|
|
38
|
-
method: HttpMethod.POST,
|
|
39
|
-
url: `${this.baseUrl}${path}`,
|
|
40
|
-
body: JSON.stringify(requestBody),
|
|
41
|
-
authentication: {
|
|
42
|
-
type: AuthenticationType.BEARER_TOKEN,
|
|
43
|
-
token: this.apiKey
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
const response = await httpClient.sendRequest(request);
|
|
48
|
-
|
|
49
|
-
if (response.status !== 200) {
|
|
50
|
-
throw new Error(`Failed to communicate with Mailjet`);
|
|
51
|
-
} else {
|
|
52
|
-
return response.body;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { CoasyClient } from './coasyClient';
|
|
3
|
-
|
|
4
|
-
import { SecretTextProperty, ShortTextProperty, StaticPropsValue, Store } from '@activepieces/pieces-framework';
|
|
5
|
-
|
|
6
|
-
export interface CreateTriggerRequest {
|
|
7
|
-
triggerName: string;
|
|
8
|
-
webhookUrl: string;
|
|
9
|
-
auth: StaticPropsValue<{
|
|
10
|
-
baseUrl: ShortTextProperty<false>,
|
|
11
|
-
apiKey: SecretTextProperty<true>
|
|
12
|
-
}>
|
|
13
|
-
filter: any;
|
|
14
|
-
store: Store;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export interface DestroyTriggerRequest {
|
|
18
|
-
triggerName: string;
|
|
19
|
-
auth: StaticPropsValue<{
|
|
20
|
-
baseUrl: ShortTextProperty<false>,
|
|
21
|
-
apiKey: SecretTextProperty<true>
|
|
22
|
-
}>
|
|
23
|
-
store: Store;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export interface TestTriggerRequest {
|
|
27
|
-
triggerName: string;
|
|
28
|
-
auth: StaticPropsValue<{
|
|
29
|
-
baseUrl: ShortTextProperty<false>,
|
|
30
|
-
apiKey: SecretTextProperty<true>
|
|
31
|
-
}>
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export const createCoasyTrigger = async (request: CreateTriggerRequest) => {
|
|
35
|
-
const { triggerName, webhookUrl, filter, auth, store} = request;
|
|
36
|
-
const client = new CoasyClient(auth.baseUrl ?? 'https://backend.api.prod.coasy.io', auth.apiKey);
|
|
37
|
-
const response = await client.createTrigger(triggerName, webhookUrl, filter);
|
|
38
|
-
if (!response.id) throw new Error(`Failed to create Trigger!`);
|
|
39
|
-
await store.put<string>(`${triggerName}__WEBHOOK_ID`, response.id);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export const destroyCoasyTrigger = async (request: DestroyTriggerRequest) => {
|
|
43
|
-
const { triggerName, auth, store} = request;
|
|
44
|
-
const webhookId = await store.get<string>(`${triggerName}__WEBHOOK_ID`);
|
|
45
|
-
if (!webhookId) throw new Error(`Webhook Id not found!`);
|
|
46
|
-
|
|
47
|
-
const client = new CoasyClient(auth.baseUrl ?? 'https://backend.api.prod.coasy.io', auth.apiKey);
|
|
48
|
-
await client.destroyTrigger(webhookId);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export const testCoasyTrigger = async (request: TestTriggerRequest): Promise<any[]> => {
|
|
52
|
-
const { triggerName, auth} = request;
|
|
53
|
-
|
|
54
|
-
const client = new CoasyClient(auth.baseUrl ?? 'https://backend.api.prod.coasy.io', auth.apiKey);
|
|
55
|
-
const response = await client.listTriggerEvents(triggerName);
|
|
56
|
-
|
|
57
|
-
return [{ test: true}];
|
|
58
|
-
}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { createTrigger, Property, TriggerStrategy } from '@activepieces/pieces-framework';
|
|
2
|
-
import { coasyAuth } from '../..';
|
|
3
|
-
import { createCoasyTrigger, destroyCoasyTrigger, testCoasyTrigger } from '../common/triggers';
|
|
4
|
-
|
|
5
|
-
const triggerName = "NEW_AUTH_EVENT";
|
|
6
|
-
|
|
7
|
-
export const newAuthEvent = createTrigger({
|
|
8
|
-
auth: coasyAuth,
|
|
9
|
-
name: 'newAuthEvent',
|
|
10
|
-
displayName: 'New Auth event',
|
|
11
|
-
description: 'Triggers when an authentication (signUp, password forgotten etc.) event happens',
|
|
12
|
-
props: {
|
|
13
|
-
triggerCategories: Property.StaticMultiSelectDropdown({
|
|
14
|
-
displayName: 'Trigger Categories',
|
|
15
|
-
description: 'categories of trigger',
|
|
16
|
-
required: true,
|
|
17
|
-
options: {
|
|
18
|
-
options: [{
|
|
19
|
-
value: "CustomEmailSender",
|
|
20
|
-
label: "Custom Email Sender"
|
|
21
|
-
}, {
|
|
22
|
-
value: "UserMigration",
|
|
23
|
-
label: "User Migration"
|
|
24
|
-
}, {
|
|
25
|
-
value: "DefineAuthChallenge",
|
|
26
|
-
label: "Define Auth Challenge"
|
|
27
|
-
}, {
|
|
28
|
-
value: "CreateAuthChallenge",
|
|
29
|
-
label: "Create Auth Challenge"
|
|
30
|
-
}, {
|
|
31
|
-
value: "VerifyAuthChallengeResponse",
|
|
32
|
-
label: "Verify Auth Challenge Response"
|
|
33
|
-
}]
|
|
34
|
-
}
|
|
35
|
-
}),
|
|
36
|
-
triggerNames: Property.StaticMultiSelectDropdown({
|
|
37
|
-
displayName: 'Triggers',
|
|
38
|
-
description: 'Select triggers to react on',
|
|
39
|
-
required: true,
|
|
40
|
-
options: {
|
|
41
|
-
options: [{
|
|
42
|
-
value: "SignUp",
|
|
43
|
-
label: "Sign Up"
|
|
44
|
-
}, {
|
|
45
|
-
value: "ResendCode",
|
|
46
|
-
label: "Resend Code"
|
|
47
|
-
}, {
|
|
48
|
-
value: "ForgotPassword",
|
|
49
|
-
label: "Forgot Password"
|
|
50
|
-
}, {
|
|
51
|
-
value: "Authentication",
|
|
52
|
-
label: "Authentication"
|
|
53
|
-
}, {
|
|
54
|
-
value: "ELSE",
|
|
55
|
-
label: "Else"
|
|
56
|
-
}]
|
|
57
|
-
}
|
|
58
|
-
})
|
|
59
|
-
},
|
|
60
|
-
sampleData: {},
|
|
61
|
-
type: TriggerStrategy.WEBHOOK,
|
|
62
|
-
onEnable : (context) => createCoasyTrigger({
|
|
63
|
-
triggerName,
|
|
64
|
-
webhookUrl: context.webhookUrl,
|
|
65
|
-
auth: context.auth,
|
|
66
|
-
filter: context.propsValue,
|
|
67
|
-
store: context.store
|
|
68
|
-
}),
|
|
69
|
-
onDisable : (context) => destroyCoasyTrigger({
|
|
70
|
-
triggerName,
|
|
71
|
-
auth: context.auth,
|
|
72
|
-
store: context.store
|
|
73
|
-
}),
|
|
74
|
-
test: (context) => testCoasyTrigger({
|
|
75
|
-
triggerName,
|
|
76
|
-
auth: context.auth
|
|
77
|
-
}),
|
|
78
|
-
async run(context) {
|
|
79
|
-
return [context.payload.body];
|
|
80
|
-
}
|
|
81
|
-
});
|