@activepieces/piece-quaderno 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
+ # pieces-quaderno
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build pieces-quaderno` to build the library.
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@activepieces/piece-quaderno",
3
+ "version": "0.0.1",
4
+ "type": "commonjs",
5
+ "main": "./src/index.js",
6
+ "types": "./src/index.d.ts",
7
+ "dependencies": {
8
+ "@sinclair/typebox": "0.34.11",
9
+ "axios": "1.13.1",
10
+ "axios-retry": "4.4.1",
11
+ "deepmerge-ts": "7.1.0",
12
+ "form-data": "4.0.4",
13
+ "mime-types": "2.1.35",
14
+ "nanoid": "3.3.8",
15
+ "semver": "7.6.0",
16
+ "socket.io-client": "4.8.1",
17
+ "tslib": "^2.3.0",
18
+ "zod": "4.1.13",
19
+ "@activepieces/pieces-common": "0.11.1",
20
+ "@activepieces/pieces-framework": "0.23.0",
21
+ "@activepieces/shared": "0.30.4"
22
+ },
23
+ "resolutions": {
24
+ "rollup": "npm:@rollup/wasm-node"
25
+ }
26
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export declare const quaderno: import("@activepieces/pieces-framework").Piece<import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ account_name: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ api_key: import("@activepieces/pieces-framework").SecretTextProperty<true>;
4
+ }>>;
package/src/index.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.quaderno = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_common_1 = require("@activepieces/pieces-common");
6
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
7
+ const shared_1 = require("@activepieces/shared");
8
+ const create_contact_1 = require("./lib/actions/create-contact");
9
+ const create_expence_1 = require("./lib/actions/create-expence");
10
+ const create_invoice_1 = require("./lib/actions/create-invoice");
11
+ const find_contact_1 = require("./lib/actions/find-contact");
12
+ const auth_1 = require("./lib/common/auth");
13
+ exports.quaderno = (0, pieces_framework_1.createPiece)({
14
+ displayName: 'Quaderno',
15
+ auth: auth_1.quadernoAuth,
16
+ minimumSupportedRelease: '0.36.1',
17
+ logoUrl: 'https://cdn.activepieces.com/pieces/quaderno.png',
18
+ categories: [shared_1.PieceCategory.COMMERCE],
19
+ description: 'Quaderno is a tax software that handles sales tax, VAT, and GST for your online business. Automatically calculates tax, sends receipts and invoices, and provides instant multi-channel tax reports for your sales around the world.',
20
+ authors: ['sanket-a11y'],
21
+ actions: [
22
+ create_contact_1.createContact,
23
+ find_contact_1.findContact,
24
+ create_expence_1.createExpense,
25
+ create_invoice_1.createInvoice,
26
+ (0, pieces_common_1.createCustomApiCallAction)({
27
+ auth: auth_1.quadernoAuth,
28
+ baseUrl: (auth) => {
29
+ return `https://${auth === null || auth === void 0 ? void 0 : auth.props.account_name}.quadernoapp.com/api`;
30
+ },
31
+ authMapping: (auth) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
32
+ const credentials = Buffer.from(`${auth.props.api_key}:x`).toString('base64');
33
+ return {
34
+ Authorization: `Basic ${credentials}`,
35
+ };
36
+ }),
37
+ }),
38
+ ],
39
+ triggers: [],
40
+ });
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/quaderno/src/index.ts"],"names":[],"mappings":";;;;AAAA,+DAAwE;AACxE,qEAA6D;AAC7D,iDAAqD;AACrD,iEAA6D;AAC7D,iEAA6D;AAC7D,iEAA6D;AAC7D,6DAAyD;AACzD,4CAAiD;AAEpC,QAAA,QAAQ,GAAG,IAAA,8BAAW,EAAC;IAClC,WAAW,EAAE,UAAU;IACvB,IAAI,EAAE,mBAAY;IAClB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,kDAAkD;IAC3D,UAAU,EAAE,CAAC,sBAAa,CAAC,QAAQ,CAAC;IACpC,WAAW,EACT,sOAAsO;IACxO,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,OAAO,EAAE;QACP,8BAAa;QACb,0BAAW;QACX,8BAAa;QACb,8BAAa;QACb,IAAA,yCAAyB,EAAC;YACxB,IAAI,EAAE,mBAAY;YAClB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChB,OAAO,WAAW,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,YAAY,sBAAsB,CAAC;YACnE,CAAC;YACD,WAAW,EAAE,CAAO,IAAI,EAAE,EAAE;gBAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CACjE,QAAQ,CACT,CAAC;gBACF,OAAO;oBACL,aAAa,EAAE,SAAS,WAAW,EAAE;iBACtC,CAAC;YACJ,CAAC,CAAA;SACF,CAAC;KACH;IACD,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ export declare const createContact: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ account_name: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ api_key: import("@activepieces/pieces-framework").SecretTextProperty<true>;
4
+ }>, {
5
+ firstName: import("@activepieces/pieces-framework").ShortTextProperty<true>;
6
+ lastName: import("@activepieces/pieces-framework").ShortTextProperty<false>;
7
+ email: import("@activepieces/pieces-framework").ShortTextProperty<false>;
8
+ fullName: import("@activepieces/pieces-framework").ShortTextProperty<false>;
9
+ kind: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
10
+ country: import("@activepieces/pieces-framework").ShortTextProperty<true>;
11
+ city: import("@activepieces/pieces-framework").ShortTextProperty<false>;
12
+ postalCode: import("@activepieces/pieces-framework").ShortTextProperty<false>;
13
+ region: import("@activepieces/pieces-framework").ShortTextProperty<false>;
14
+ streetLine1: import("@activepieces/pieces-framework").ShortTextProperty<false>;
15
+ streetLine2: import("@activepieces/pieces-framework").ShortTextProperty<false>;
16
+ taxId: import("@activepieces/pieces-framework").ShortTextProperty<false>;
17
+ taxStatus: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
18
+ language: import("@activepieces/pieces-framework").ShortTextProperty<false>;
19
+ phone: import("@activepieces/pieces-framework").ShortTextProperty<false>;
20
+ website: import("@activepieces/pieces-framework").ShortTextProperty<false>;
21
+ discount: import("@activepieces/pieces-framework").NumberProperty<false>;
22
+ notes: import("@activepieces/pieces-framework").LongTextProperty<false>;
23
+ processorId: import("@activepieces/pieces-framework").ShortTextProperty<false>;
24
+ processor: import("@activepieces/pieces-framework").ShortTextProperty<false>;
25
+ }>;
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createContact = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const client_1 = require("../common/client");
7
+ const auth_1 = require("../common/auth");
8
+ const pieces_common_1 = require("@activepieces/pieces-common");
9
+ exports.createContact = (0, pieces_framework_1.createAction)({
10
+ auth: auth_1.quadernoAuth,
11
+ name: 'createContact',
12
+ displayName: 'Create Contact',
13
+ description: 'Create a new contact in Quaderno (customer or vendor)',
14
+ props: {
15
+ firstName: pieces_framework_1.Property.ShortText({
16
+ displayName: 'First Name',
17
+ description: "The contact's first name (required for person contacts)",
18
+ required: true,
19
+ }),
20
+ lastName: pieces_framework_1.Property.ShortText({
21
+ displayName: 'Last Name',
22
+ description: "The contact's last name (optional)",
23
+ required: false,
24
+ }),
25
+ email: pieces_framework_1.Property.ShortText({
26
+ displayName: 'Email',
27
+ description: "The contact's email address",
28
+ required: false,
29
+ }),
30
+ fullName: pieces_framework_1.Property.ShortText({
31
+ displayName: 'Full Name',
32
+ description: "The contact's full name",
33
+ required: false,
34
+ }),
35
+ kind: pieces_framework_1.Property.StaticDropdown({
36
+ displayName: 'Kind',
37
+ description: 'The type of contact',
38
+ options: {
39
+ options: [
40
+ { label: 'Person', value: 'person' },
41
+ { label: 'Company', value: 'company' },
42
+ ],
43
+ },
44
+ required: false,
45
+ }),
46
+ country: pieces_framework_1.Property.ShortText({
47
+ displayName: 'Country',
48
+ description: '2-letter ISO country code (e.g., US, GB)',
49
+ required: true,
50
+ }),
51
+ city: pieces_framework_1.Property.ShortText({
52
+ displayName: 'City',
53
+ description: 'City/District/Suburb/Town/Village',
54
+ required: false,
55
+ }),
56
+ postalCode: pieces_framework_1.Property.ShortText({
57
+ displayName: 'Postal Code',
58
+ description: 'ZIP or postal code',
59
+ required: false,
60
+ }),
61
+ region: pieces_framework_1.Property.ShortText({
62
+ displayName: 'Region/State',
63
+ description: 'State/Province/Region',
64
+ required: false,
65
+ }),
66
+ streetLine1: pieces_framework_1.Property.ShortText({
67
+ displayName: 'Street Address Line 1',
68
+ description: 'Street address or PO Box',
69
+ required: false,
70
+ }),
71
+ streetLine2: pieces_framework_1.Property.ShortText({
72
+ displayName: 'Street Address Line 2',
73
+ description: 'Apartment/Suite/Unit/Building',
74
+ required: false,
75
+ }),
76
+ taxId: pieces_framework_1.Property.ShortText({
77
+ displayName: 'Tax ID',
78
+ description: 'Tax identification number (VAT, ABN, etc.)',
79
+ required: false,
80
+ }),
81
+ taxStatus: pieces_framework_1.Property.StaticDropdown({
82
+ displayName: 'Tax Status',
83
+ description: 'Tax status of the contact',
84
+ options: {
85
+ options: [
86
+ { label: 'Taxable', value: 'taxable' },
87
+ { label: 'Exempt', value: 'exempt' },
88
+ { label: 'Reverse', value: 'reverse' },
89
+ ],
90
+ },
91
+ required: false,
92
+ }),
93
+ language: pieces_framework_1.Property.ShortText({
94
+ displayName: 'Language',
95
+ description: '2-letter ISO language code (e.g., EN, FR, ES)',
96
+ required: false,
97
+ }),
98
+ phone: pieces_framework_1.Property.ShortText({
99
+ displayName: 'Phone',
100
+ description: "The contact's phone number",
101
+ required: false,
102
+ }),
103
+ website: pieces_framework_1.Property.ShortText({
104
+ displayName: 'Website',
105
+ description: "The contact's website URL",
106
+ required: false,
107
+ }),
108
+ discount: pieces_framework_1.Property.Number({
109
+ displayName: 'Discount',
110
+ description: 'Default discount for this contact (as a percentage)',
111
+ required: false,
112
+ }),
113
+ notes: pieces_framework_1.Property.LongText({
114
+ displayName: 'Notes',
115
+ description: 'Internal notes about the contact',
116
+ required: false,
117
+ }),
118
+ processorId: pieces_framework_1.Property.ShortText({
119
+ displayName: 'Processor ID',
120
+ description: 'The ID assigned by an external payment processor (e.g., Stripe customer ID)',
121
+ required: false,
122
+ }),
123
+ processor: pieces_framework_1.Property.ShortText({
124
+ displayName: 'Processor',
125
+ description: 'The external platform where the contact was imported from (e.g., stripe)',
126
+ required: false,
127
+ }),
128
+ },
129
+ run(context) {
130
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
131
+ // Build contact data object
132
+ const contactData = {
133
+ first_name: context.propsValue.firstName,
134
+ kind: context.propsValue.kind || 'person',
135
+ country: context.propsValue.country,
136
+ };
137
+ // Add optional fields if provided
138
+ if (context.propsValue.lastName) {
139
+ contactData.last_name = context.propsValue.lastName;
140
+ }
141
+ if (context.propsValue.email) {
142
+ contactData.email = context.propsValue.email;
143
+ }
144
+ if (context.propsValue.fullName) {
145
+ contactData.full_name = context.propsValue.fullName;
146
+ }
147
+ if (context.propsValue.city) {
148
+ contactData.city = context.propsValue.city;
149
+ }
150
+ if (context.propsValue.postalCode) {
151
+ contactData.postal_code = context.propsValue.postalCode;
152
+ }
153
+ if (context.propsValue.region) {
154
+ contactData.region = context.propsValue.region;
155
+ }
156
+ if (context.propsValue.streetLine1) {
157
+ contactData.street_line_1 = context.propsValue.streetLine1;
158
+ }
159
+ if (context.propsValue.streetLine2) {
160
+ contactData.street_line_2 = context.propsValue.streetLine2;
161
+ }
162
+ if (context.propsValue.taxId) {
163
+ contactData.tax_id = context.propsValue.taxId;
164
+ }
165
+ if (context.propsValue.taxStatus) {
166
+ contactData.tax_status = context.propsValue.taxStatus;
167
+ }
168
+ if (context.propsValue.language) {
169
+ contactData.language = context.propsValue.language;
170
+ }
171
+ if (context.propsValue.phone) {
172
+ contactData.phone_1 = context.propsValue.phone;
173
+ }
174
+ if (context.propsValue.website) {
175
+ contactData.web = context.propsValue.website;
176
+ }
177
+ if (context.propsValue.discount !== undefined &&
178
+ context.propsValue.discount !== null) {
179
+ contactData.discount = context.propsValue.discount;
180
+ }
181
+ if (context.propsValue.notes) {
182
+ contactData.notes = context.propsValue.notes;
183
+ }
184
+ if (context.propsValue.processorId) {
185
+ contactData.processor_id = context.propsValue.processorId;
186
+ }
187
+ if (context.propsValue.processor) {
188
+ contactData.processor = context.propsValue.processor;
189
+ }
190
+ return yield (0, client_1.makeRequest)(context.auth.props.account_name, context.auth.props.api_key, pieces_common_1.HttpMethod.POST, '/contacts', contactData);
191
+ });
192
+ },
193
+ });
194
+ //# sourceMappingURL=create-contact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-contact.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/quaderno/src/lib/actions/create-contact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const createExpense: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ account_name: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ api_key: import("@activepieces/pieces-framework").SecretTextProperty<true>;
4
+ }>, {
5
+ issueDate: import("@activepieces/pieces-framework").ShortTextProperty<true>;
6
+ currency: import("@activepieces/pieces-framework").ShortTextProperty<true>;
7
+ contactFirstName: import("@activepieces/pieces-framework").ShortTextProperty<true>;
8
+ contactLastName: import("@activepieces/pieces-framework").ShortTextProperty<false>;
9
+ contactEmail: import("@activepieces/pieces-framework").ShortTextProperty<false>;
10
+ contactCountry: import("@activepieces/pieces-framework").ShortTextProperty<true>;
11
+ itemDescription: import("@activepieces/pieces-framework").ShortTextProperty<true>;
12
+ itemQuantity: import("@activepieces/pieces-framework").NumberProperty<true>;
13
+ itemUnitCost: import("@activepieces/pieces-framework").ShortTextProperty<true>;
14
+ paymentMethod: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
15
+ country: import("@activepieces/pieces-framework").ShortTextProperty<true>;
16
+ poNumber: import("@activepieces/pieces-framework").ShortTextProperty<false>;
17
+ tagList: import("@activepieces/pieces-framework").ShortTextProperty<false>;
18
+ notes: import("@activepieces/pieces-framework").LongTextProperty<false>;
19
+ }>;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createExpense = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const client_1 = require("../common/client");
7
+ const auth_1 = require("../common/auth");
8
+ const pieces_common_1 = require("@activepieces/pieces-common");
9
+ exports.createExpense = (0, pieces_framework_1.createAction)({
10
+ auth: auth_1.quadernoAuth,
11
+ name: 'createExpense',
12
+ displayName: 'Create Expense',
13
+ description: 'Create a new expense in Quaderno',
14
+ props: {
15
+ issueDate: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Issue Date',
17
+ description: 'Date when the expense was issued (YYYY-MM-DD)',
18
+ required: true,
19
+ }),
20
+ currency: pieces_framework_1.Property.ShortText({
21
+ displayName: 'Currency',
22
+ description: '3-letter ISO currency code (USD, EUR, GBP, etc.)',
23
+ required: true,
24
+ }),
25
+ contactFirstName: pieces_framework_1.Property.ShortText({
26
+ displayName: 'Vendor First Name',
27
+ description: "The vendor's first name",
28
+ required: true,
29
+ }),
30
+ contactLastName: pieces_framework_1.Property.ShortText({
31
+ displayName: 'Vendor Last Name',
32
+ description: "The vendor's last name (optional for person contacts)",
33
+ required: false,
34
+ }),
35
+ contactEmail: pieces_framework_1.Property.ShortText({
36
+ displayName: 'Vendor Email',
37
+ description: "The vendor's email address",
38
+ required: false,
39
+ }),
40
+ contactCountry: pieces_framework_1.Property.ShortText({
41
+ displayName: 'Vendor Country',
42
+ description: '2-letter ISO country code (e.g., US, GB)',
43
+ required: true,
44
+ }),
45
+ itemDescription: pieces_framework_1.Property.ShortText({
46
+ displayName: 'Item Description',
47
+ description: 'Description of the expense item',
48
+ required: true,
49
+ }),
50
+ itemQuantity: pieces_framework_1.Property.Number({
51
+ displayName: 'Item Quantity',
52
+ description: 'Quantity of the expense item',
53
+ required: true,
54
+ }),
55
+ itemUnitCost: pieces_framework_1.Property.ShortText({
56
+ displayName: 'Item Unit Cost',
57
+ description: 'Unit cost of the expense item',
58
+ required: true,
59
+ }),
60
+ paymentMethod: pieces_framework_1.Property.StaticDropdown({
61
+ displayName: 'Payment Method',
62
+ description: 'How the expense was paid',
63
+ options: {
64
+ options: [
65
+ { label: 'Credit Card', value: 'credit_card' },
66
+ { label: 'Cash', value: 'cash' },
67
+ { label: 'Wire Transfer', value: 'wire_transfer' },
68
+ { label: 'Direct Debit', value: 'direct_debit' },
69
+ { label: 'Check', value: 'check' },
70
+ { label: 'IOU', value: 'iou' },
71
+ { label: 'PayPal', value: 'paypal' },
72
+ { label: 'Other', value: 'other' },
73
+ ],
74
+ },
75
+ required: true,
76
+ }),
77
+ country: pieces_framework_1.Property.ShortText({
78
+ displayName: 'Expense Country',
79
+ description: '2-letter ISO country code for the expense location',
80
+ required: true,
81
+ }),
82
+ poNumber: pieces_framework_1.Property.ShortText({
83
+ displayName: 'Purchase Order Number',
84
+ description: 'Purchase order number (optional)',
85
+ required: false,
86
+ }),
87
+ tagList: pieces_framework_1.Property.ShortText({
88
+ displayName: 'Tags',
89
+ description: 'Tags for the expense, separated by commas',
90
+ required: false,
91
+ }),
92
+ notes: pieces_framework_1.Property.LongText({
93
+ displayName: 'Notes',
94
+ description: 'Additional notes about the expense',
95
+ required: false,
96
+ }),
97
+ },
98
+ run(context) {
99
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
100
+ const contactData = {
101
+ first_name: context.propsValue.contactFirstName,
102
+ country: context.propsValue.contactCountry,
103
+ kind: 'person',
104
+ };
105
+ if (context.propsValue.contactLastName) {
106
+ contactData.last_name = context.propsValue.contactLastName;
107
+ }
108
+ if (context.propsValue.contactEmail) {
109
+ contactData.email = context.propsValue.contactEmail;
110
+ }
111
+ // Build item data object
112
+ const itemsData = [
113
+ {
114
+ description: context.propsValue.itemDescription,
115
+ quantity: context.propsValue.itemQuantity,
116
+ unit_cost: context.propsValue.itemUnitCost,
117
+ },
118
+ ];
119
+ // Build expense data object
120
+ const expenseData = {
121
+ issue_date: context.propsValue.issueDate,
122
+ currency: context.propsValue.currency,
123
+ contact: contactData,
124
+ items: itemsData,
125
+ payment_method: context.propsValue.paymentMethod,
126
+ country: context.propsValue.country,
127
+ };
128
+ if (context.propsValue.poNumber) {
129
+ expenseData.po_number = context.propsValue.poNumber;
130
+ }
131
+ if (context.propsValue.tagList) {
132
+ expenseData.tag_list = context.propsValue.tagList.split(',').map((tag) => tag.trim());
133
+ }
134
+ if (context.propsValue.notes) {
135
+ expenseData.notes = context.propsValue.notes;
136
+ }
137
+ return yield (0, client_1.makeRequest)(context.auth.props.account_name, context.auth.props.api_key, pieces_common_1.HttpMethod.POST, '/expenses', expenseData);
138
+ });
139
+ },
140
+ });
141
+ //# sourceMappingURL=create-expence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-expence.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/quaderno/src/lib/actions/create-expence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const createInvoice: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ account_name: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ api_key: import("@activepieces/pieces-framework").SecretTextProperty<true>;
4
+ }>, {
5
+ issueDate: import("@activepieces/pieces-framework").ShortTextProperty<true>;
6
+ currency: import("@activepieces/pieces-framework").ShortTextProperty<true>;
7
+ invoiceNumber: import("@activepieces/pieces-framework").ShortTextProperty<false>;
8
+ dueDate: import("@activepieces/pieces-framework").ShortTextProperty<false>;
9
+ customerFirstName: import("@activepieces/pieces-framework").ShortTextProperty<true>;
10
+ customerLastName: import("@activepieces/pieces-framework").ShortTextProperty<false>;
11
+ customerEmail: import("@activepieces/pieces-framework").ShortTextProperty<false>;
12
+ customerCountry: import("@activepieces/pieces-framework").ShortTextProperty<false>;
13
+ itemDescription: import("@activepieces/pieces-framework").ShortTextProperty<true>;
14
+ itemQuantity: import("@activepieces/pieces-framework").NumberProperty<true>;
15
+ itemUnitCost: import("@activepieces/pieces-framework").ShortTextProperty<true>;
16
+ poNumber: import("@activepieces/pieces-framework").ShortTextProperty<false>;
17
+ tagList: import("@activepieces/pieces-framework").ShortTextProperty<false>;
18
+ notes: import("@activepieces/pieces-framework").ShortTextProperty<false>;
19
+ }>;
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createInvoice = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const client_1 = require("../common/client");
7
+ const auth_1 = require("../common/auth");
8
+ const pieces_common_1 = require("@activepieces/pieces-common");
9
+ exports.createInvoice = (0, pieces_framework_1.createAction)({
10
+ auth: auth_1.quadernoAuth,
11
+ name: 'createInvoice',
12
+ displayName: 'Create Invoice',
13
+ description: 'Create a new invoice in Quaderno',
14
+ props: {
15
+ issueDate: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Issue Date',
17
+ description: 'Date when the invoice was issued (YYYY-MM-DD)',
18
+ required: true,
19
+ }),
20
+ currency: pieces_framework_1.Property.ShortText({
21
+ displayName: 'Currency',
22
+ description: '3-letter ISO currency code (USD, EUR, GBP, etc.)',
23
+ required: true,
24
+ }),
25
+ invoiceNumber: pieces_framework_1.Property.ShortText({
26
+ displayName: 'Invoice Number',
27
+ description: 'A unique, sequential code that identifies the invoice',
28
+ required: false,
29
+ }),
30
+ dueDate: pieces_framework_1.Property.ShortText({
31
+ displayName: 'Due Date',
32
+ description: 'Date on which payment for this invoice is due (YYYY-MM-DD)',
33
+ required: false,
34
+ }),
35
+ customerFirstName: pieces_framework_1.Property.ShortText({
36
+ displayName: 'Customer First Name',
37
+ description: "The customer's first name",
38
+ required: true,
39
+ }),
40
+ customerLastName: pieces_framework_1.Property.ShortText({
41
+ displayName: 'Customer Last Name',
42
+ description: "The customer's last name",
43
+ required: false,
44
+ }),
45
+ customerEmail: pieces_framework_1.Property.ShortText({
46
+ displayName: 'Customer Email',
47
+ description: "The customer's email address",
48
+ required: false,
49
+ }),
50
+ customerCountry: pieces_framework_1.Property.ShortText({
51
+ displayName: 'Customer Country',
52
+ description: '2-letter ISO country code (e.g., US, GB)',
53
+ required: false,
54
+ }),
55
+ itemDescription: pieces_framework_1.Property.ShortText({
56
+ displayName: 'Item Description',
57
+ description: 'Description of the invoice line item',
58
+ required: true,
59
+ }),
60
+ itemQuantity: pieces_framework_1.Property.Number({
61
+ displayName: 'Item Quantity',
62
+ description: 'Quantity of the invoice item',
63
+ required: true,
64
+ }),
65
+ itemUnitCost: pieces_framework_1.Property.ShortText({
66
+ displayName: 'Item Unit Cost',
67
+ description: 'Unit cost of the invoice item',
68
+ required: true,
69
+ }),
70
+ poNumber: pieces_framework_1.Property.ShortText({
71
+ displayName: 'PO Number',
72
+ description: 'Purchase order number',
73
+ required: false,
74
+ }),
75
+ tagList: pieces_framework_1.Property.ShortText({
76
+ displayName: 'Tags',
77
+ description: 'Tags attached to the invoice (comma-separated)',
78
+ required: false,
79
+ }),
80
+ notes: pieces_framework_1.Property.ShortText({
81
+ displayName: 'Notes',
82
+ description: 'Extra notes about the invoice',
83
+ required: false,
84
+ }),
85
+ },
86
+ run(context) {
87
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
88
+ const customerData = {
89
+ first_name: context.propsValue.customerFirstName,
90
+ kind: 'person',
91
+ };
92
+ if (context.propsValue.customerLastName) {
93
+ customerData.last_name = context.propsValue.customerLastName;
94
+ }
95
+ if (context.propsValue.customerEmail) {
96
+ customerData.email = context.propsValue.customerEmail;
97
+ }
98
+ if (context.propsValue.customerCountry) {
99
+ customerData.country = context.propsValue.customerCountry;
100
+ }
101
+ const itemsData = [
102
+ {
103
+ description: context.propsValue.itemDescription,
104
+ quantity: context.propsValue.itemQuantity,
105
+ unit_cost: context.propsValue.itemUnitCost,
106
+ },
107
+ ];
108
+ const invoiceData = {
109
+ issue_date: context.propsValue.issueDate,
110
+ currency: context.propsValue.currency,
111
+ contact: customerData,
112
+ items: itemsData,
113
+ };
114
+ if (context.propsValue.invoiceNumber) {
115
+ invoiceData.number = context.propsValue.invoiceNumber;
116
+ }
117
+ if (context.propsValue.dueDate) {
118
+ invoiceData.due_date = context.propsValue.dueDate;
119
+ }
120
+ if (context.propsValue.poNumber) {
121
+ invoiceData.po_number = context.propsValue.poNumber;
122
+ }
123
+ if (context.propsValue.tagList) {
124
+ invoiceData.tag_list = context.propsValue.tagList
125
+ .split(',')
126
+ .map((tag) => tag.trim());
127
+ }
128
+ if (context.propsValue.notes) {
129
+ invoiceData.notes = context.propsValue.notes;
130
+ }
131
+ return yield (0, client_1.makeRequest)(context.auth.props.account_name, context.auth.props.api_key, pieces_common_1.HttpMethod.POST, '/invoices', invoiceData);
132
+ });
133
+ },
134
+ });
135
+ //# sourceMappingURL=create-invoice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-invoice.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/quaderno/src/lib/actions/create-invoice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const findContact: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ account_name: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ api_key: import("@activepieces/pieces-framework").SecretTextProperty<true>;
4
+ }>, {
5
+ searchQuery: import("@activepieces/pieces-framework").ShortTextProperty<false>;
6
+ processorId: import("@activepieces/pieces-framework").ShortTextProperty<false>;
7
+ limit: import("@activepieces/pieces-framework").NumberProperty<false>;
8
+ }>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findContact = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const client_1 = require("../common/client");
7
+ const auth_1 = require("../common/auth");
8
+ const pieces_common_1 = require("@activepieces/pieces-common");
9
+ exports.findContact = (0, pieces_framework_1.createAction)({
10
+ auth: auth_1.quadernoAuth,
11
+ name: 'findContact',
12
+ displayName: 'Find Contact',
13
+ description: 'Search and list contacts from Quaderno',
14
+ props: {
15
+ searchQuery: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Search Query',
17
+ description: 'Search for contacts by name, email, or tax ID (optional)',
18
+ required: false,
19
+ }),
20
+ processorId: pieces_framework_1.Property.ShortText({
21
+ displayName: 'Processor ID',
22
+ description: 'Filter by processor ID (optional)',
23
+ required: false,
24
+ }),
25
+ limit: pieces_framework_1.Property.Number({
26
+ displayName: 'Results Limit',
27
+ description: 'Maximum number of results to return (default: 25, max: 100)',
28
+ required: false,
29
+ defaultValue: 25,
30
+ }),
31
+ },
32
+ run(context) {
33
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
34
+ const params = new URLSearchParams();
35
+ if (context.propsValue.searchQuery) {
36
+ params.append('q', context.propsValue.searchQuery);
37
+ }
38
+ if (context.propsValue.processorId) {
39
+ params.append('processor_id', context.propsValue.processorId);
40
+ }
41
+ if (context.propsValue.limit) {
42
+ params.append('limit', context.propsValue.limit.toString());
43
+ }
44
+ const queryString = params.toString();
45
+ const endpoint = queryString ? `/contacts?${queryString}` : '/contacts';
46
+ return yield (0, client_1.makeRequest)(context.auth.props.account_name, context.auth.props.api_key, pieces_common_1.HttpMethod.GET, endpoint);
47
+ });
48
+ },
49
+ });
50
+ //# sourceMappingURL=find-contact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-contact.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/quaderno/src/lib/actions/find-contact.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,6CAA+C;AAC/C,yCAA8C;AAC9C,+DAAyD;AAE5C,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACtC,IAAI,EAAE,mBAAY;IAClB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,wCAAwC;IACrD,KAAK,EAAE;QACL,WAAW,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,0DAA0D;YACvE,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,WAAW,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,KAAK,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACrB,WAAW,EAAE,eAAe;YAC5B,WAAW,EACT,6DAA6D;YAC/D,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,EAAE;SACjB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YAErC,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAChE,CAAC;YAED,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,aAAa,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAExE,OAAO,MAAM,IAAA,oBAAW,EACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAC1B,0BAAU,CAAC,GAAG,EACd,QAAQ,CACT,CAAC;QACJ,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const quadernoAuth: import("@activepieces/pieces-framework").CustomAuthProperty<{
2
+ account_name: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ api_key: import("@activepieces/pieces-framework").SecretTextProperty<true>;
4
+ }>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.quadernoAuth = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const client_1 = require("./client");
7
+ const pieces_common_1 = require("@activepieces/pieces-common");
8
+ exports.quadernoAuth = pieces_framework_1.PieceAuth.CustomAuth({
9
+ displayName: 'API Key',
10
+ description: 'Quaderno API Key',
11
+ required: true,
12
+ props: {
13
+ account_name: pieces_framework_1.Property.ShortText({
14
+ displayName: 'Account Name',
15
+ description: 'Your Quaderno account name https://<your_account_name>.quadernoapp.com/ (the subdomain part of your Quaderno URL) https://<your_account_name>.sandbox-quadernoapp.com/',
16
+ required: true,
17
+ }),
18
+ api_key: pieces_framework_1.PieceAuth.SecretText({
19
+ displayName: 'API Key',
20
+ description: 'Your Quaderno Private API Key',
21
+ required: true,
22
+ }),
23
+ },
24
+ validate: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
25
+ try {
26
+ yield (0, client_1.makeRequest)(auth.account_name, auth.api_key, pieces_common_1.HttpMethod.GET, '/tax_rates/calculate?to_country=US&to_postal_code=10128');
27
+ return {
28
+ valid: true,
29
+ };
30
+ }
31
+ catch (e) {
32
+ return {
33
+ valid: false,
34
+ error: 'Invalid Api Key',
35
+ };
36
+ }
37
+ }),
38
+ });
39
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/quaderno/src/lib/common/auth.ts"],"names":[],"mappings":";;;;AAAA,qEAAqE;AACrE,qCAAuC;AACvC,+DAAyD;AAE5C,QAAA,YAAY,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC/C,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,kBAAkB;IAC/B,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE;QACL,YAAY,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC/B,WAAW,EAAE,cAAc;YAC3B,WAAW,EACT,wKAAwK;YAC1K,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,OAAO,EAAE,4BAAS,CAAC,UAAU,CAAC;YAC5B,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,QAAQ,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,IAAA,oBAAW,EACf,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,EACZ,0BAAU,CAAC,GAAG,EACd,yDAAyD,CAC1D,CAAC;YACF,OAAO;gBACL,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,iBAAiB;aACzB,CAAC;QACJ,CAAC;IACH,CAAC,CAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { HttpMethod } from '@activepieces/pieces-common';
2
+ export declare function makeRequest(account_name: string, api_key: string, method: HttpMethod, path: string, body?: unknown): Promise<any>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeRequest = makeRequest;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_common_1 = require("@activepieces/pieces-common");
6
+ function makeRequest(account_name, api_key, method, path, body) {
7
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
8
+ try {
9
+ // const baseUrl = isSandbox
10
+ // ? `https://${account_name}.sandbox-quadernoapp.com/api`
11
+ // : `https://${account_name}.quadernoapp.com/api`;
12
+ const credentials = Buffer.from(`${api_key}:x`).toString('base64');
13
+ console.log(`https://${account_name}.quadernoapp.com/api${path}`);
14
+ const response = yield pieces_common_1.httpClient.sendRequest({
15
+ method,
16
+ url: `https://${account_name}.quadernoapp.com/api${path}`,
17
+ headers: {
18
+ Authorization: `Basic ${credentials}`,
19
+ 'Content-Type': 'application/json',
20
+ api_version: '20241028',
21
+ },
22
+ body,
23
+ });
24
+ return response.body;
25
+ }
26
+ catch (error) {
27
+ throw new Error(`Unexpected error: ${error.message || String(error)}`);
28
+ }
29
+ });
30
+ }
31
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/quaderno/src/lib/common/client.ts"],"names":[],"mappings":";;AAEA,kCA6BC;;AA/BD,+DAAqE;AAErE,SAAsB,WAAW,CAC/B,YAAoB,EACpB,OAAe,EACf,MAAkB,EAClB,IAAY,EACZ,IAAc;;QAGd,IAAI,CAAC;YACH,4BAA4B;YAC5B,4DAA4D;YAC5D,qDAAqD;YAErD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,WAAW,YAAY,uBAAuB,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,MAAM;gBACN,GAAG,EAAE,WAAW,YAAY,uBAAuB,IAAI,EAAE;gBACzD,OAAO,EAAE;oBACP,aAAa,EAAE,SAAS,WAAW,EAAE;oBACrC,cAAc,EAAE,kBAAkB;oBAClC,WAAW,EAAE,UAAU;iBACxB;gBACD,IAAI;aACL,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CAAA"}