@taskmagic/apps-omnisend 0.0.1

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/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # apps-omnisend
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build apps-omnisend` to build the library.
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@taskmagic/apps-omnisend",
3
+ "version": "0.0.1",
4
+ "dependencies": {
5
+ "@anthropic-ai/sdk": "0.33.1",
6
+ "@sinclair/typebox": "0.34.11",
7
+ "axios": "1.17.0",
8
+ "axios-retry": "4.4.1",
9
+ "deepmerge-ts": "7.1.0",
10
+ "mime-types": "2.1.35",
11
+ "nanoid": "3.3.8",
12
+ "openai": "4.67.1",
13
+ "replicate": "0.34.1",
14
+ "semver": "7.6.0",
15
+ "zod": "3.25.76",
16
+ "@taskmagic/pieces-common": "0.4.4",
17
+ "@taskmagic/pieces-framework": "0.7.46",
18
+ "@taskmagic/shared": "0.10.171",
19
+ "tslib": "1.14.1"
20
+ },
21
+ "overrides": {
22
+ "cross-spawn": "7.0.6",
23
+ "elliptic": "^6.6.1",
24
+ "fast-xml-parser": "^4.4.1",
25
+ "protobufjs": "^7.5.5",
26
+ "tmp": "^0.2.4",
27
+ "koa": "^2.16.4",
28
+ "picomatch": "^4.0.4",
29
+ "langsmith": "^0.6.0",
30
+ "serialize-javascript": "^6.0.2",
31
+ "elevenlabs": {
32
+ "form-data": "^4.0.4"
33
+ },
34
+ "@tryfabric/martian": {
35
+ "@notionhq/client": "$@notionhq/client"
36
+ },
37
+ "vite": {
38
+ "rollup": "npm:@rollup/wasm-node@^4.61.1"
39
+ }
40
+ },
41
+ "resolutions": {
42
+ "rollup": "npm:@rollup/wasm-node@^4.61.1"
43
+ },
44
+ "types": "./src/index.d.ts",
45
+ "main": "./src/index.js",
46
+ "type": "commonjs"
47
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const omnisend: import("@taskmagic/pieces-framework").Piece<import("@taskmagic/pieces-framework").SecretTextProperty<true>>;
package/src/index.js ADDED
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.omnisend = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const shared_1 = require("@taskmagic/shared");
7
+ const pieces_common_1 = require("@taskmagic/pieces-common");
8
+ const auth_1 = require("./lib/auth");
9
+ const client_1 = require("./lib/common/client");
10
+ const create_or_update_contact_1 = require("./lib/actions/create-or-update-contact");
11
+ const get_contact_1 = require("./lib/actions/get-contact");
12
+ const list_contacts_1 = require("./lib/actions/list-contacts");
13
+ const send_customer_event_1 = require("./lib/actions/send-customer-event");
14
+ const list_campaigns_1 = require("./lib/actions/list-campaigns");
15
+ exports.omnisend = (0, pieces_framework_1.createPiece)({
16
+ displayName: 'Omnisend',
17
+ description: 'All-in-one ecommerce marketing platform for email, SMS, and push notification campaigns with powerful automation and segmentation.',
18
+ auth: auth_1.omnisendAuth,
19
+ minimumSupportedRelease: '0.30.0',
20
+ logoUrl: 'https://cdn.activepieces.com/pieces/omnisend.png',
21
+ categories: [shared_1.PieceCategory.MARKETING, shared_1.PieceCategory.SALES_AND_CRM],
22
+ authors: ['Harmatta'],
23
+ actions: [
24
+ create_or_update_contact_1.createOrUpdateContactAction,
25
+ get_contact_1.getContactAction,
26
+ list_contacts_1.listContactsAction,
27
+ send_customer_event_1.sendCustomerEventAction,
28
+ list_campaigns_1.listCampaignsAction,
29
+ (0, pieces_common_1.createCustomApiCallAction)({
30
+ auth: auth_1.omnisendAuth,
31
+ baseUrl: () => client_1.OMNISEND_API_BASE,
32
+ authMapping: (auth) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
33
+ return ({
34
+ 'Authorization': `Omnisend-API-Key ${auth}`,
35
+ 'Omnisend-Version': '2026-03-15',
36
+ });
37
+ }),
38
+ }),
39
+ ],
40
+ triggers: [],
41
+ });
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/omnisend/src/index.ts"],"names":[],"mappings":";;;;AAAA,kEAA0D;AAC1D,8CAAkD;AAClD,4DAAqE;AAErE,qCAA0C;AAC1C,gDAAwD;AACxD,qFAAqF;AACrF,2DAA6D;AAC7D,+DAAiE;AACjE,2EAA4E;AAC5E,iEAAmE;AAEtD,QAAA,QAAQ,GAAG,IAAA,8BAAW,EAAC;IAClC,WAAW,EAAE,UAAU;IACvB,WAAW,EACT,oIAAoI;IACtI,IAAI,EAAE,mBAAY;IAClB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,kDAAkD;IAC3D,UAAU,EAAE,CAAC,sBAAa,CAAC,SAAS,EAAE,sBAAa,CAAC,aAAa,CAAC;IAClE,OAAO,EAAE,CAAC,UAAU,CAAC;IACrB,OAAO,EAAE;QACP,sDAA2B;QAC3B,8BAAgB;QAChB,kCAAkB;QAClB,6CAAuB;QACvB,oCAAmB;QACnB,IAAA,yCAAyB,EAAC;YACxB,IAAI,EAAE,mBAAY;YAClB,OAAO,EAAE,GAAG,EAAE,CAAC,0BAAiB;YAChC,WAAW,EAAE,CAAO,IAAI,EAAE,EAAE;gBAAC,OAAA,CAAC;oBAC5B,eAAe,EAAE,oBAAoB,IAAc,EAAE;oBACrD,kBAAkB,EAAE,YAAY;iBACjC,CAAC,CAAA;cAAA;SACH,CAAC;KACH;IACD,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const createOrUpdateContactAction: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
2
+ email: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
3
+ emailStatus: import("@taskmagic/pieces-framework").StaticDropdownProperty<string, true>;
4
+ firstName: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
5
+ lastName: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
6
+ country: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
7
+ countryCode: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
8
+ city: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
9
+ tags: import("@taskmagic/pieces-framework").ArrayProperty<false>;
10
+ sendWelcomeMessage: import("@taskmagic/pieces-framework").CheckboxProperty<false>;
11
+ }>;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOrUpdateContactAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../auth");
8
+ const client_1 = require("../common/client");
9
+ exports.createOrUpdateContactAction = (0, pieces_framework_1.createAction)({
10
+ auth: auth_1.omnisendAuth,
11
+ name: 'create_or_update_contact',
12
+ displayName: 'Create or Update Contact',
13
+ description: 'Create a new contact or update an existing contact in Omnisend. If a contact with the same email already exists, it will be updated.',
14
+ props: {
15
+ email: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Email',
17
+ description: 'Contact email address (used as identifier).',
18
+ required: true,
19
+ }),
20
+ emailStatus: pieces_framework_1.Property.StaticDropdown({
21
+ displayName: 'Email Subscription Status',
22
+ description: 'The subscription status for the email channel.',
23
+ required: true,
24
+ options: {
25
+ options: [
26
+ { label: 'Subscribed', value: 'subscribed' },
27
+ { label: 'Unsubscribed', value: 'unsubscribed' },
28
+ { label: 'Non-subscribed', value: 'nonSubscribed' },
29
+ ],
30
+ },
31
+ }),
32
+ firstName: pieces_framework_1.Property.ShortText({
33
+ displayName: 'First Name',
34
+ description: 'Contact first name.',
35
+ required: false,
36
+ }),
37
+ lastName: pieces_framework_1.Property.ShortText({
38
+ displayName: 'Last Name',
39
+ description: 'Contact last name.',
40
+ required: false,
41
+ }),
42
+ country: pieces_framework_1.Property.ShortText({
43
+ displayName: 'Country',
44
+ description: 'Contact country name.',
45
+ required: false,
46
+ }),
47
+ countryCode: pieces_framework_1.Property.ShortText({
48
+ displayName: 'Country Code',
49
+ description: 'Two-letter country code (ISO 3166-1 alpha-2).',
50
+ required: false,
51
+ }),
52
+ city: pieces_framework_1.Property.ShortText({
53
+ displayName: 'City',
54
+ description: 'Contact city.',
55
+ required: false,
56
+ }),
57
+ tags: pieces_framework_1.Property.Array({
58
+ displayName: 'Tags',
59
+ description: 'Tags to assign to the contact.',
60
+ required: false,
61
+ }),
62
+ sendWelcomeMessage: pieces_framework_1.Property.Checkbox({
63
+ displayName: 'Send Welcome Message',
64
+ description: 'Send a welcome email to the contact upon creation.',
65
+ required: false,
66
+ defaultValue: false,
67
+ }),
68
+ },
69
+ run(context) {
70
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
71
+ const { email, emailStatus, firstName, lastName, country, countryCode, city, tags, sendWelcomeMessage, } = context.propsValue;
72
+ const body = {
73
+ identifiers: [
74
+ {
75
+ type: 'email',
76
+ id: email,
77
+ channels: {
78
+ email: {
79
+ status: emailStatus,
80
+ },
81
+ },
82
+ },
83
+ ],
84
+ sendWelcomeMessage: sendWelcomeMessage !== null && sendWelcomeMessage !== void 0 ? sendWelcomeMessage : false,
85
+ };
86
+ if (firstName)
87
+ body['firstName'] = firstName;
88
+ if (lastName)
89
+ body['lastName'] = lastName;
90
+ if (country)
91
+ body['country'] = country;
92
+ if (countryCode)
93
+ body['countryCode'] = countryCode;
94
+ if (city)
95
+ body['city'] = city;
96
+ if (tags && tags.length > 0)
97
+ body['tags'] = tags;
98
+ return (0, client_1.omnisendRequest)(pieces_common_1.HttpMethod.POST, '/contacts', context.auth, body);
99
+ });
100
+ },
101
+ });
102
+ //# sourceMappingURL=create-or-update-contact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-or-update-contact.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/omnisend/src/lib/actions/create-or-update-contact.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAAsD;AACtD,kCAAuC;AACvC,6CAAmD;AAEtC,QAAA,2BAA2B,GAAG,IAAA,+BAAY,EAAC;IACtD,IAAI,EAAE,mBAAY;IAClB,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE,0BAA0B;IACvC,WAAW,EACT,sIAAsI;IACxI,KAAK,EAAE;QACL,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACxB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,6CAA6C;YAC1D,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,WAAW,EAAE,2BAAQ,CAAC,cAAc,CAAC;YACnC,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,gDAAgD;YAC7D,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC5C,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;oBAChD,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE;iBACpD;aACF;SACF,CAAC;QACF,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,qBAAqB;YAClC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,uBAAuB;YACpC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,WAAW,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,IAAI,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACvB,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,eAAe;YAC5B,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,IAAI,EAAE,2BAAQ,CAAC,KAAK,CAAC;YACnB,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,kBAAkB,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YACpC,WAAW,EAAE,sBAAsB;YACnC,WAAW,EAAE,oDAAoD;YACjE,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;SACpB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EACJ,KAAK,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,OAAO,EACP,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,kBAAkB,GACnB,GAAG,OAAO,CAAC,UAAU,CAAC;YAEvB,MAAM,IAAI,GAA4B;gBACpC,WAAW,EAAE;oBACX;wBACE,IAAI,EAAE,OAAO;wBACb,EAAE,EAAE,KAAK;wBACT,QAAQ,EAAE;4BACR,KAAK,EAAE;gCACL,MAAM,EAAE,WAAW;6BACpB;yBACF;qBACF;iBACF;gBACD,kBAAkB,EAAE,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,KAAK;aAChD,CAAC;YAEF,IAAI,SAAS;gBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;YAC7C,IAAI,QAAQ;gBAAE,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;YAC1C,IAAI,OAAO;gBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;YACvC,IAAI,WAAW;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC;YACnD,IAAI,IAAI;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YAC9B,IAAI,IAAI,IAAK,IAAiB,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YAE/D,OAAO,IAAA,wBAAe,EACpB,0BAAU,CAAC,IAAI,EACf,WAAW,EACX,OAAO,CAAC,IAAc,EACtB,IAAI,CACL,CAAC;QACJ,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const getContactAction: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
2
+ contactId: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
3
+ }>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getContactAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../auth");
8
+ const client_1 = require("../common/client");
9
+ exports.getContactAction = (0, pieces_framework_1.createAction)({
10
+ auth: auth_1.omnisendAuth,
11
+ name: 'get_contact',
12
+ displayName: 'Get Contact',
13
+ description: 'Retrieve a contact by their contact ID.',
14
+ props: {
15
+ contactId: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Contact ID',
17
+ required: true,
18
+ }),
19
+ },
20
+ run(context) {
21
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
22
+ const { contactId } = context.propsValue;
23
+ return (0, client_1.omnisendRequest)(pieces_common_1.HttpMethod.GET, `/contacts/${contactId}`, context.auth);
24
+ });
25
+ },
26
+ });
27
+ //# sourceMappingURL=get-contact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-contact.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/omnisend/src/lib/actions/get-contact.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAAsD;AACtD,kCAAuC;AACvC,6CAAmD;AAEtC,QAAA,gBAAgB,GAAG,IAAA,+BAAY,EAAC;IAC3C,IAAI,EAAE,mBAAY;IAClB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,yCAAyC;IACtD,KAAK,EAAE;QACL,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YACzC,OAAO,IAAA,wBAAe,EACpB,0BAAU,CAAC,GAAG,EACd,aAAa,SAAS,EAAE,EACxB,OAAO,CAAC,IAAc,CACvB,CAAC;QACJ,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const listCampaignsAction: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
2
+ limit: import("@taskmagic/pieces-framework").NumberProperty<false>;
3
+ offset: import("@taskmagic/pieces-framework").NumberProperty<false>;
4
+ status: import("@taskmagic/pieces-framework").StaticDropdownProperty<string, false>;
5
+ }>;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listCampaignsAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../auth");
8
+ const client_1 = require("../common/client");
9
+ exports.listCampaignsAction = (0, pieces_framework_1.createAction)({
10
+ auth: auth_1.omnisendAuth,
11
+ name: 'list_campaigns',
12
+ displayName: 'List Campaigns',
13
+ description: 'Retrieve a list of email campaigns.',
14
+ props: {
15
+ limit: pieces_framework_1.Property.Number({
16
+ displayName: 'Limit',
17
+ description: 'Number of campaigns to return.',
18
+ required: false,
19
+ defaultValue: 25,
20
+ }),
21
+ offset: pieces_framework_1.Property.Number({
22
+ displayName: 'Offset',
23
+ description: 'Number of campaigns to skip for pagination.',
24
+ required: false,
25
+ defaultValue: 0,
26
+ }),
27
+ status: pieces_framework_1.Property.StaticDropdown({
28
+ displayName: 'Status',
29
+ description: 'Filter campaigns by status.',
30
+ required: false,
31
+ options: {
32
+ options: [
33
+ { label: 'Draft', value: 'draft' },
34
+ { label: 'Scheduled', value: 'scheduled' },
35
+ { label: 'Sending', value: 'sending' },
36
+ { label: 'Sent', value: 'sent' },
37
+ ],
38
+ },
39
+ }),
40
+ },
41
+ run(context) {
42
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
43
+ const { limit, offset, status } = context.propsValue;
44
+ const queryParams = {};
45
+ if (limit !== undefined && limit !== null)
46
+ queryParams['limit'] = String(limit);
47
+ if (offset !== undefined && offset !== null)
48
+ queryParams['offset'] = String(offset);
49
+ if (status)
50
+ queryParams['status'] = status;
51
+ return (0, client_1.omnisendRequest)(pieces_common_1.HttpMethod.GET, '/campaigns', context.auth, undefined, queryParams);
52
+ });
53
+ },
54
+ });
55
+ //# sourceMappingURL=list-campaigns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-campaigns.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/omnisend/src/lib/actions/list-campaigns.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAAsD;AACtD,kCAAuC;AACvC,6CAAmD;AAEtC,QAAA,mBAAmB,GAAG,IAAA,+BAAY,EAAC;IAC9C,IAAI,EAAE,mBAAY;IAClB,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,qCAAqC;IAClD,KAAK,EAAE;QACL,KAAK,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACrB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,EAAE;SACjB,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,6CAA6C;YAC1D,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,CAAC;SAChB,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,cAAc,CAAC;YAC9B,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;oBAClC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;oBAC1C,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;oBACtC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;iBACjC;aACF;SACF,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAErD,MAAM,WAAW,GAA2B,EAAE,CAAC;YAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBAAE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAChF,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;gBAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACpF,IAAI,MAAM;gBAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;YAE3C,OAAO,IAAA,wBAAe,EACpB,0BAAU,CAAC,GAAG,EACd,YAAY,EACZ,OAAO,CAAC,IAAc,EACtB,SAAS,EACT,WAAW,CACZ,CAAC;QACJ,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const listContactsAction: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
2
+ limit: import("@taskmagic/pieces-framework").NumberProperty<false>;
3
+ offset: import("@taskmagic/pieces-framework").NumberProperty<false>;
4
+ email: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
5
+ }>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listContactsAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../auth");
8
+ const client_1 = require("../common/client");
9
+ exports.listContactsAction = (0, pieces_framework_1.createAction)({
10
+ auth: auth_1.omnisendAuth,
11
+ name: 'list_contacts',
12
+ displayName: 'List Contacts',
13
+ description: 'Retrieve a paginated list of contacts from Omnisend.',
14
+ props: {
15
+ limit: pieces_framework_1.Property.Number({
16
+ displayName: 'Limit',
17
+ description: 'Number of contacts to return (max 250).',
18
+ required: false,
19
+ defaultValue: 50,
20
+ }),
21
+ offset: pieces_framework_1.Property.Number({
22
+ displayName: 'Offset',
23
+ description: 'Number of contacts to skip for pagination.',
24
+ required: false,
25
+ defaultValue: 0,
26
+ }),
27
+ email: pieces_framework_1.Property.ShortText({
28
+ displayName: 'Filter by Email',
29
+ description: 'Filter contacts by email address.',
30
+ required: false,
31
+ }),
32
+ },
33
+ run(context) {
34
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
35
+ const { limit, offset, email } = context.propsValue;
36
+ const queryParams = {};
37
+ if (limit !== undefined && limit !== null)
38
+ queryParams['limit'] = String(limit);
39
+ if (offset !== undefined && offset !== null)
40
+ queryParams['offset'] = String(offset);
41
+ if (email)
42
+ queryParams['email'] = email;
43
+ return (0, client_1.omnisendRequest)(pieces_common_1.HttpMethod.GET, '/contacts', context.auth, undefined, queryParams);
44
+ });
45
+ },
46
+ });
47
+ //# sourceMappingURL=list-contacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-contacts.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/omnisend/src/lib/actions/list-contacts.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAAsD;AACtD,kCAAuC;AACvC,6CAAmD;AAEtC,QAAA,kBAAkB,GAAG,IAAA,+BAAY,EAAC;IAC7C,IAAI,EAAE,mBAAY;IAClB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,sDAAsD;IACnE,KAAK,EAAE;QACL,KAAK,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACrB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,yCAAyC;YACtD,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,EAAE;SACjB,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,CAAC;SAChB,CAAC;QACF,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACxB,WAAW,EAAE,iBAAiB;YAC9B,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAEpD,MAAM,WAAW,GAA2B,EAAE,CAAC;YAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBAAE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAChF,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;gBAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACpF,IAAI,KAAK;gBAAE,WAAW,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YAExC,OAAO,IAAA,wBAAe,EACpB,0BAAU,CAAC,GAAG,EACd,WAAW,EACX,OAAO,CAAC,IAAc,EACtB,SAAS,EACT,WAAW,CACZ,CAAC;QACJ,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const sendCustomerEventAction: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
2
+ email: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
3
+ eventName: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
4
+ properties: import("@taskmagic/pieces-framework").ObjectProperty<false>;
5
+ }>;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendCustomerEventAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../auth");
8
+ const client_1 = require("../common/client");
9
+ exports.sendCustomerEventAction = (0, pieces_framework_1.createAction)({
10
+ auth: auth_1.omnisendAuth,
11
+ name: 'send_customer_event',
12
+ displayName: 'Send Customer Event',
13
+ description: 'Send a customer event to Omnisend. Events track customer behavior and trigger automations (e.g. welcome emails, abandoned cart reminders). Use predefined events or create custom ones.',
14
+ props: {
15
+ email: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Contact Email',
17
+ description: 'Email address of the contact to send the event for.',
18
+ required: true,
19
+ }),
20
+ eventName: pieces_framework_1.Property.ShortText({
21
+ displayName: 'Event Name',
22
+ description: 'The name of the event. Use predefined names (e.g. "added product to cart", "placed order") or a custom event name.',
23
+ required: true,
24
+ }),
25
+ properties: pieces_framework_1.Property.Object({
26
+ displayName: 'Event Properties',
27
+ description: 'Custom key-value properties to include with the event (e.g. {"orderId": "12345", "totalPrice": 99.99}).',
28
+ required: false,
29
+ }),
30
+ },
31
+ run(context) {
32
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
33
+ const { email, eventName, properties } = context.propsValue;
34
+ const body = {
35
+ contact: {
36
+ email,
37
+ },
38
+ eventName,
39
+ origin: 'api',
40
+ };
41
+ if (properties &&
42
+ Object.keys(properties).length > 0) {
43
+ body['properties'] = properties;
44
+ }
45
+ return (0, client_1.omnisendRequest)(pieces_common_1.HttpMethod.POST, '/events', context.auth, body);
46
+ });
47
+ },
48
+ });
49
+ //# sourceMappingURL=send-customer-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-customer-event.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/omnisend/src/lib/actions/send-customer-event.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAAsD;AACtD,kCAAuC;AACvC,6CAAmD;AAEtC,QAAA,uBAAuB,GAAG,IAAA,+BAAY,EAAC;IAClD,IAAI,EAAE,mBAAY;IAClB,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,qBAAqB;IAClC,WAAW,EACT,yLAAyL;IAC3L,KAAK,EAAE;QACL,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACxB,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,qDAAqD;YAClE,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,YAAY;YACzB,WAAW,EACT,oHAAoH;YACtH,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,MAAM,CAAC;YAC1B,WAAW,EAAE,kBAAkB;YAC/B,WAAW,EACT,yGAAyG;YAC3G,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAE5D,MAAM,IAAI,GAA4B;gBACpC,OAAO,EAAE;oBACP,KAAK;iBACN;gBACD,SAAS;gBACT,MAAM,EAAE,KAAK;aACd,CAAC;YAEF,IACE,UAAU;gBACV,MAAM,CAAC,IAAI,CAAC,UAAqC,CAAC,CAAC,MAAM,GAAG,CAAC,EAC7D,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;YAClC,CAAC;YAED,OAAO,IAAA,wBAAe,EACpB,0BAAU,CAAC,IAAI,EACf,SAAS,EACT,OAAO,CAAC,IAAc,EACtB,IAAI,CACL,CAAC;QACJ,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const omnisendAuth: import("@taskmagic/pieces-framework").SecretTextProperty<true>;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.omnisendAuth = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const client_1 = require("./common/client");
8
+ const authDescription = `
9
+ To obtain your Omnisend API key:
10
+ 1. Log in to your [Omnisend account](https://app.omnisend.com).
11
+ 2. Go to **Store settings → Integrations & API → API Keys**.
12
+ 3. Click **Create API Key**, give it a name.
13
+ 4. Copy the generated key and paste it here.
14
+ `;
15
+ exports.omnisendAuth = pieces_framework_1.PieceAuth.SecretText({
16
+ displayName: 'API Key',
17
+ description: authDescription,
18
+ required: true,
19
+ validate: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
20
+ var _b, _c;
21
+ try {
22
+ yield (0, client_1.omnisendRequest)(pieces_common_1.HttpMethod.GET, '/contacts', auth);
23
+ return { valid: true };
24
+ }
25
+ catch (e) {
26
+ const err = e;
27
+ if (((_b = err === null || err === void 0 ? void 0 : err.response) === null || _b === void 0 ? void 0 : _b.status) === 401 || ((_c = err === null || err === void 0 ? void 0 : err.response) === null || _c === void 0 ? void 0 : _c.status) === 403) {
28
+ return {
29
+ valid: false,
30
+ error: 'Invalid API key. Please check your Omnisend API credentials.',
31
+ };
32
+ }
33
+ return {
34
+ valid: false,
35
+ error: 'Unable to validate API key. Please try again.',
36
+ };
37
+ }
38
+ }),
39
+ });
40
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../../../packages/pieces/community/omnisend/src/lib/auth.ts"],"names":[],"mappings":";;;;AAAA,kEAAwD;AACxD,4DAAsD;AACtD,4CAAkD;AAElD,MAAM,eAAe,GAAG;;;;;;CAMvB,CAAC;AAEW,QAAA,YAAY,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC/C,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,eAAe;IAC5B,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;;QACvB,IAAI,CAAC;YACH,MAAM,IAAA,wBAAe,EAAC,0BAAU,CAAC,GAAG,EAAE,WAAW,EAAE,IAAc,CAAC,CAAC;YACnE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,CAAuC,CAAC;YACpD,IAAI,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,MAAM,MAAK,GAAG,IAAI,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;gBACnE,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,8DAA8D;iBACtE,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,+CAA+C;aACvD,CAAC;QACJ,CAAC;IACH,CAAC,CAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { HttpMethod, HttpMessageBody } from '@taskmagic/pieces-common';
2
+ export declare const OMNISEND_API_BASE = "https://api.omnisend.com/api";
3
+ export declare function omnisendRequest<T extends HttpMessageBody>(method: HttpMethod, path: string, apiKey: string, body?: Record<string, unknown>, queryParams?: Record<string, string>): Promise<T>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OMNISEND_API_BASE = void 0;
4
+ exports.omnisendRequest = omnisendRequest;
5
+ const tslib_1 = require("tslib");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ exports.OMNISEND_API_BASE = 'https://api.omnisend.com/api';
8
+ function omnisendRequest(method, path, apiKey, body, queryParams) {
9
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
10
+ const response = yield pieces_common_1.httpClient.sendRequest({
11
+ method,
12
+ url: `${exports.OMNISEND_API_BASE}${path}`,
13
+ headers: {
14
+ 'Authorization': `Omnisend-API-Key ${apiKey}`,
15
+ 'Omnisend-Version': '2026-03-15',
16
+ },
17
+ body,
18
+ queryParams,
19
+ });
20
+ return response.body;
21
+ });
22
+ }
23
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/omnisend/src/lib/common/client.ts"],"names":[],"mappings":";;;AAIA,0CAkBC;;AAtBD,4DAAmF;AAEtE,QAAA,iBAAiB,GAAG,8BAA8B,CAAC;AAEhE,SAAsB,eAAe,CACnC,MAAkB,EAClB,IAAY,EACZ,MAAc,EACd,IAA8B,EAC9B,WAAoC;;QAEpC,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAI;YAC/C,MAAM;YACN,GAAG,EAAE,GAAG,yBAAiB,GAAG,IAAI,EAAE;YAClC,OAAO,EAAE;gBACP,eAAe,EAAE,oBAAoB,MAAM,EAAE;gBAC7C,kBAAkB,EAAE,YAAY;aACjC;YACD,IAAI;YACJ,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CAAA"}