@activepieces/piece-coupa 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/package.json +23 -0
- package/src/index.d.ts +7 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +74 -0
- package/src/index.js.map +1 -0
- package/src/lib/actions/add-file-attachment.d.ts +23 -0
- package/src/lib/actions/add-file-attachment.d.ts.map +1 -0
- package/src/lib/actions/add-file-attachment.js +122 -0
- package/src/lib/actions/add-file-attachment.js.map +1 -0
- package/src/lib/actions/cancel-purchase-order.d.ts +14 -0
- package/src/lib/actions/cancel-purchase-order.d.ts.map +1 -0
- package/src/lib/actions/cancel-purchase-order.js +30 -0
- package/src/lib/actions/cancel-purchase-order.js.map +1 -0
- package/src/lib/actions/close-purchase-order.d.ts +14 -0
- package/src/lib/actions/close-purchase-order.d.ts.map +1 -0
- package/src/lib/actions/close-purchase-order.js +30 -0
- package/src/lib/actions/close-purchase-order.js.map +1 -0
- package/src/lib/actions/create-object.d.ts +12 -0
- package/src/lib/actions/create-object.d.ts.map +1 -0
- package/src/lib/actions/create-object.js +39 -0
- package/src/lib/actions/create-object.js.map +1 -0
- package/src/lib/actions/get-object-by-id.d.ts +17 -0
- package/src/lib/actions/get-object-by-id.d.ts.map +1 -0
- package/src/lib/actions/get-object-by-id.js +39 -0
- package/src/lib/actions/get-object-by-id.js.map +1 -0
- package/src/lib/actions/get-remit-to-addresses.d.ts +15 -0
- package/src/lib/actions/get-remit-to-addresses.d.ts.map +1 -0
- package/src/lib/actions/get-remit-to-addresses.js +75 -0
- package/src/lib/actions/get-remit-to-addresses.js.map +1 -0
- package/src/lib/actions/get-supplier-sites.d.ts +14 -0
- package/src/lib/actions/get-supplier-sites.d.ts.map +1 -0
- package/src/lib/actions/get-supplier-sites.js +35 -0
- package/src/lib/actions/get-supplier-sites.js.map +1 -0
- package/src/lib/actions/grant-approval.d.ts +14 -0
- package/src/lib/actions/grant-approval.d.ts.map +1 -0
- package/src/lib/actions/grant-approval.js +30 -0
- package/src/lib/actions/grant-approval.js.map +1 -0
- package/src/lib/actions/reject-approval.d.ts +15 -0
- package/src/lib/actions/reject-approval.d.ts.map +1 -0
- package/src/lib/actions/reject-approval.js +43 -0
- package/src/lib/actions/reject-approval.js.map +1 -0
- package/src/lib/actions/search-objects.d.ts +11 -0
- package/src/lib/actions/search-objects.d.ts.map +1 -0
- package/src/lib/actions/search-objects.js +41 -0
- package/src/lib/actions/search-objects.js.map +1 -0
- package/src/lib/actions/set-integration-run-status.d.ts +10 -0
- package/src/lib/actions/set-integration-run-status.d.ts.map +1 -0
- package/src/lib/actions/set-integration-run-status.js +44 -0
- package/src/lib/actions/set-integration-run-status.js.map +1 -0
- package/src/lib/actions/update-object.d.ts +18 -0
- package/src/lib/actions/update-object.d.ts.map +1 -0
- package/src/lib/actions/update-object.js +41 -0
- package/src/lib/actions/update-object.js.map +1 -0
- package/src/lib/auth.d.ts +7 -0
- package/src/lib/auth.d.ts.map +1 -0
- package/src/lib/auth.js +50 -0
- package/src/lib/auth.js.map +1 -0
- package/src/lib/common/client.d.ts +34 -0
- package/src/lib/common/client.d.ts.map +1 -0
- package/src/lib/common/client.js +146 -0
- package/src/lib/common/client.js.map +1 -0
- package/src/lib/common/props.d.ts +47 -0
- package/src/lib/common/props.d.ts.map +1 -0
- package/src/lib/common/props.js +366 -0
- package/src/lib/common/props.js.map +1 -0
- package/src/lib/common/utils.d.ts +22 -0
- package/src/lib/common/utils.d.ts.map +1 -0
- package/src/lib/common/utils.js +182 -0
- package/src/lib/common/utils.js.map +1 -0
- package/src/lib/triggers/new-or-updated-object.d.ts +39 -0
- package/src/lib/triggers/new-or-updated-object.d.ts.map +1 -0
- package/src/lib/triggers/new-or-updated-object.js +98 -0
- package/src/lib/triggers/new-or-updated-object.js.map +1 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COUPA_PAGE_SIZE = exports.CoupaClient = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const COUPA_PAGE_LIMIT = 50;
|
|
8
|
+
const TOKEN_REFRESH_BUFFER_MS = 5 * 60 * 1000;
|
|
9
|
+
class CoupaClient {
|
|
10
|
+
constructor(auth) {
|
|
11
|
+
this.auth = auth;
|
|
12
|
+
this.accessToken = null;
|
|
13
|
+
this.tokenExpiresAt = 0;
|
|
14
|
+
this.tokenPromise = null;
|
|
15
|
+
const host = (0, utils_1.normalizeInstanceUrl)(this.auth.instanceUrl);
|
|
16
|
+
this.baseUrl = `https://${host}/api`;
|
|
17
|
+
this.tokenUrl = `https://${host}/oauth2/token`;
|
|
18
|
+
}
|
|
19
|
+
getAccessToken() {
|
|
20
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
if (this.accessToken && Date.now() < this.tokenExpiresAt) {
|
|
22
|
+
return this.accessToken;
|
|
23
|
+
}
|
|
24
|
+
// Reuse a single in-flight token request so concurrent calls within the
|
|
25
|
+
// same run don't each hit the token endpoint (avoids a TOCTOU race).
|
|
26
|
+
if (!this.tokenPromise) {
|
|
27
|
+
this.tokenPromise = this.fetchAccessToken().finally(() => {
|
|
28
|
+
this.tokenPromise = null;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return this.tokenPromise;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
fetchAccessToken() {
|
|
35
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
37
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
38
|
+
url: this.tokenUrl,
|
|
39
|
+
headers: {
|
|
40
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
41
|
+
},
|
|
42
|
+
body: new URLSearchParams({
|
|
43
|
+
client_id: this.auth.clientId,
|
|
44
|
+
client_secret: this.auth.clientSecret,
|
|
45
|
+
grant_type: 'client_credentials',
|
|
46
|
+
scope: this.auth.scope,
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
49
|
+
this.accessToken = response.body.access_token;
|
|
50
|
+
this.tokenExpiresAt =
|
|
51
|
+
Date.now() + response.body.expires_in * 1000 - TOKEN_REFRESH_BUFFER_MS;
|
|
52
|
+
return this.accessToken;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
request(_a) {
|
|
56
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ method, resourceUri, query, body, headers, }) {
|
|
57
|
+
const token = yield this.getAccessToken();
|
|
58
|
+
const queryParams = {};
|
|
59
|
+
if (query) {
|
|
60
|
+
for (const [key, value] of Object.entries(query)) {
|
|
61
|
+
if (value !== undefined && value !== null) {
|
|
62
|
+
queryParams[key] = String(value);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const path = resourceUri.startsWith('/') ? resourceUri : `/${resourceUri}`;
|
|
67
|
+
const request = {
|
|
68
|
+
method,
|
|
69
|
+
url: `${this.baseUrl}${path}`,
|
|
70
|
+
headers: Object.assign({ Authorization: `Bearer ${token}`, Accept: 'application/json', 'Content-Type': 'application/json' }, headers),
|
|
71
|
+
queryParams,
|
|
72
|
+
body,
|
|
73
|
+
};
|
|
74
|
+
try {
|
|
75
|
+
const response = yield pieces_common_1.httpClient.sendRequest(request);
|
|
76
|
+
return response.body;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
throw new Error((0, utils_1.formatCoupaError)(error));
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
requestMultipart(_a) {
|
|
84
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ resourceUri, formData, }) {
|
|
85
|
+
const token = yield this.getAccessToken();
|
|
86
|
+
const path = resourceUri.startsWith('/') ? resourceUri : `/${resourceUri}`;
|
|
87
|
+
try {
|
|
88
|
+
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
89
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
90
|
+
url: `${this.baseUrl}${path}`,
|
|
91
|
+
headers: Object.assign({ Authorization: `Bearer ${token}`, Accept: 'application/json' }, formData.getHeaders()),
|
|
92
|
+
body: formData,
|
|
93
|
+
});
|
|
94
|
+
return response.body;
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
throw new Error((0, utils_1.formatCoupaError)(error));
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
paginateRecords(resource_1) {
|
|
102
|
+
return tslib_1.__asyncGenerator(this, arguments, function* paginateRecords_1(resource, query = {}) {
|
|
103
|
+
let offset = 0;
|
|
104
|
+
while (true) {
|
|
105
|
+
const page = yield tslib_1.__await(this.request({
|
|
106
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
107
|
+
resourceUri: `/${resource}`,
|
|
108
|
+
query: Object.assign(Object.assign({}, query), { limit: COUPA_PAGE_LIMIT, offset }),
|
|
109
|
+
}));
|
|
110
|
+
if (!Array.isArray(page) || page.length === 0) {
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
yield yield tslib_1.__await(page);
|
|
114
|
+
if (page.length < COUPA_PAGE_LIMIT) {
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
offset += COUPA_PAGE_LIMIT;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
fetchAllRecords(resource_1) {
|
|
122
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (resource, query = {}) {
|
|
123
|
+
var _a, e_1, _b, _c;
|
|
124
|
+
const records = [];
|
|
125
|
+
try {
|
|
126
|
+
for (var _d = true, _e = tslib_1.__asyncValues(this.paginateRecords(resource, query)), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) {
|
|
127
|
+
_c = _f.value;
|
|
128
|
+
_d = false;
|
|
129
|
+
const page = _c;
|
|
130
|
+
records.push(...page);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
134
|
+
finally {
|
|
135
|
+
try {
|
|
136
|
+
if (!_d && !_a && (_b = _e.return)) yield _b.call(_e);
|
|
137
|
+
}
|
|
138
|
+
finally { if (e_1) throw e_1.error; }
|
|
139
|
+
}
|
|
140
|
+
return records;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.CoupaClient = CoupaClient;
|
|
145
|
+
exports.COUPA_PAGE_SIZE = COUPA_PAGE_LIMIT;
|
|
146
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/lib/common/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { CoupaModule } from './utils';
|
|
2
|
+
export declare const COUPA_MODULE_OPTIONS: {
|
|
3
|
+
label: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}[];
|
|
6
|
+
export declare const moduleProperty: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
7
|
+
export declare const customModuleResourceProperty: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
8
|
+
export declare const objectIdProperty: import("@activepieces/pieces-framework").NumberProperty<true>;
|
|
9
|
+
export declare const requestBodyProperty: import("@activepieces/pieces-framework").JsonProperty<true>;
|
|
10
|
+
export declare const requestBodyHelp: import("@activepieces/pieces-framework/dist/src/lib/property/input/markdown-property").MarkDownProperty;
|
|
11
|
+
export declare const optionalQueryParamsProperty: import("@activepieces/pieces-framework").JsonProperty<false>;
|
|
12
|
+
export declare const purchaseOrderDropdown: import("@activepieces/pieces-framework").DropdownProperty<string, true, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
13
|
+
instanceUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
14
|
+
clientId: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
15
|
+
clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
16
|
+
scope: import("@activepieces/pieces-framework").LongTextProperty<true>;
|
|
17
|
+
}>>;
|
|
18
|
+
export declare const contractDropdown: import("@activepieces/pieces-framework").DropdownProperty<string, true, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
19
|
+
instanceUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
20
|
+
clientId: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
21
|
+
clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
22
|
+
scope: import("@activepieces/pieces-framework").LongTextProperty<true>;
|
|
23
|
+
}>>;
|
|
24
|
+
export declare const supplierDropdown: import("@activepieces/pieces-framework").DropdownProperty<string, true, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
25
|
+
instanceUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
26
|
+
clientId: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
27
|
+
clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
28
|
+
scope: import("@activepieces/pieces-framework").LongTextProperty<true>;
|
|
29
|
+
}>>;
|
|
30
|
+
export declare const pendingApprovalDropdown: import("@activepieces/pieces-framework").DropdownProperty<string, true, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
31
|
+
instanceUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
32
|
+
clientId: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
33
|
+
clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
34
|
+
scope: import("@activepieces/pieces-framework").LongTextProperty<true>;
|
|
35
|
+
}>>;
|
|
36
|
+
export declare const objectSelector: import("@activepieces/pieces-framework").DynamicProperties<true, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
37
|
+
instanceUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
38
|
+
clientId: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
39
|
+
clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
40
|
+
scope: import("@activepieces/pieces-framework").LongTextProperty<true>;
|
|
41
|
+
}>>;
|
|
42
|
+
export declare const attachmentModuleProperty: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
43
|
+
export declare const remitToParentTypeProperty: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
44
|
+
export declare function resolveModuleResource(module: string | undefined, customResource: string | undefined): string;
|
|
45
|
+
export declare function toCoupaModule(module: string): CoupaModule;
|
|
46
|
+
export declare function parseOptionalQuery(queryJson: unknown): Record<string, string | number | boolean | undefined>;
|
|
47
|
+
//# sourceMappingURL=props.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../../src/lib/common/props.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAY,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,oBAAoB;;;GAKhC,CAAC;AAEF,eAAO,MAAM,cAAc,+EASzB,CAAC;AAEH,eAAO,MAAM,4BAA4B,mEAKvC,CAAC;AAEH,eAAO,MAAM,gBAAgB,+DAI3B,CAAC;AAEH,eAAO,MAAM,mBAAmB,6DAK9B,CAAC;AAEH,eAAO,MAAM,eAAe,yGAiB1B,CAAC;AAEH,eAAO,MAAM,2BAA2B,8DAKtC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;GAmDhC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;GA+C3B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;GA4C3B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;GAqDlC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;GAkBzB,CAAC;AAEH,eAAO,MAAM,wBAAwB,+EAYnC,CAAC;AAEH,eAAO,MAAM,yBAAyB,+EAYpC,CAAC;AAEH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,MAAM,CAWR;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAOzD;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,OAAO,GACjB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CA0BvD"}
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.remitToParentTypeProperty = exports.attachmentModuleProperty = exports.objectSelector = exports.pendingApprovalDropdown = exports.supplierDropdown = exports.contractDropdown = exports.purchaseOrderDropdown = exports.optionalQueryParamsProperty = exports.requestBodyHelp = exports.requestBodyProperty = exports.objectIdProperty = exports.customModuleResourceProperty = exports.moduleProperty = exports.COUPA_MODULE_OPTIONS = void 0;
|
|
4
|
+
exports.resolveModuleResource = resolveModuleResource;
|
|
5
|
+
exports.toCoupaModule = toCoupaModule;
|
|
6
|
+
exports.parseOptionalQuery = parseOptionalQuery;
|
|
7
|
+
const tslib_1 = require("tslib");
|
|
8
|
+
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
9
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
10
|
+
const client_1 = require("./client");
|
|
11
|
+
const auth_1 = require("../auth");
|
|
12
|
+
const utils_1 = require("./utils");
|
|
13
|
+
exports.COUPA_MODULE_OPTIONS = [
|
|
14
|
+
{ label: 'Purchase Orders', value: 'purchase_orders' },
|
|
15
|
+
{ label: 'Suppliers', value: 'suppliers' },
|
|
16
|
+
{ label: 'Contracts', value: 'contracts' },
|
|
17
|
+
{ label: 'Custom resource (type below)', value: '__custom__' },
|
|
18
|
+
];
|
|
19
|
+
exports.moduleProperty = pieces_framework_1.Property.StaticDropdown({
|
|
20
|
+
displayName: 'Module',
|
|
21
|
+
description: 'Coupa module to work with: Purchase Orders, Suppliers, or Contracts. Pick "Custom resource" to target any other endpoint.',
|
|
22
|
+
required: true,
|
|
23
|
+
options: {
|
|
24
|
+
disabled: false,
|
|
25
|
+
options: exports.COUPA_MODULE_OPTIONS,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
exports.customModuleResourceProperty = pieces_framework_1.Property.ShortText({
|
|
29
|
+
displayName: 'Custom Resource Path',
|
|
30
|
+
description: 'API resource segment when Module is **Custom resource**, e.g. `invoices` or `approvals`.',
|
|
31
|
+
required: false,
|
|
32
|
+
});
|
|
33
|
+
exports.objectIdProperty = pieces_framework_1.Property.Number({
|
|
34
|
+
displayName: 'Object ID',
|
|
35
|
+
description: 'Numeric Coupa ID of the record.',
|
|
36
|
+
required: true,
|
|
37
|
+
});
|
|
38
|
+
exports.requestBodyProperty = pieces_framework_1.Property.Json({
|
|
39
|
+
displayName: 'Request Body (JSON)',
|
|
40
|
+
description: 'JSON payload sent to Coupa, using Coupa field names in kebab-case (e.g. `po-number`, `supplier-id`). See the examples above for each module.',
|
|
41
|
+
required: true,
|
|
42
|
+
});
|
|
43
|
+
exports.requestBodyHelp = pieces_framework_1.Property.MarkDown({
|
|
44
|
+
value: `**How to build the request body** — Coupa uses field names in **kebab-case**. Reference an existing record (like a supplier) by its numeric ID. Examples per module:
|
|
45
|
+
|
|
46
|
+
**Purchase Orders**
|
|
47
|
+
\`\`\`json
|
|
48
|
+
{ "po-number": "PO-1001", "supplier": { "id": 123 }, "order-lines": [{ "description": "Laptop", "quantity": 2, "price": 1500 }] }
|
|
49
|
+
\`\`\`
|
|
50
|
+
|
|
51
|
+
**Suppliers**
|
|
52
|
+
\`\`\`json
|
|
53
|
+
{ "name": "Acme Corp", "display-name": "Acme", "status": "active" }
|
|
54
|
+
\`\`\`
|
|
55
|
+
|
|
56
|
+
**Contracts**
|
|
57
|
+
\`\`\`json
|
|
58
|
+
{ "name": "Acme MSA 2025", "supplier": { "id": 123 }, "start-date": "2025-01-01", "end-date": "2025-12-31" }
|
|
59
|
+
\`\`\``,
|
|
60
|
+
});
|
|
61
|
+
exports.optionalQueryParamsProperty = pieces_framework_1.Property.Json({
|
|
62
|
+
displayName: 'Query Parameters (JSON)',
|
|
63
|
+
description: 'Optional query filters, e.g. `{ "status[in]": "issued,closed", "exported": false }`.',
|
|
64
|
+
required: false,
|
|
65
|
+
});
|
|
66
|
+
exports.purchaseOrderDropdown = pieces_framework_1.Property.Dropdown({
|
|
67
|
+
displayName: 'Purchase Order',
|
|
68
|
+
description: 'Select a purchase order from your Coupa instance (most recent 50).',
|
|
69
|
+
required: true,
|
|
70
|
+
refreshers: [],
|
|
71
|
+
auth: auth_1.coupaAuth,
|
|
72
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
73
|
+
if (!auth) {
|
|
74
|
+
return {
|
|
75
|
+
disabled: true,
|
|
76
|
+
options: [],
|
|
77
|
+
placeholder: 'Connect your Coupa account first',
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const client = new client_1.CoupaClient(auth.props);
|
|
82
|
+
const orders = yield client.request({
|
|
83
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
84
|
+
resourceUri: '/purchase_orders',
|
|
85
|
+
query: {
|
|
86
|
+
limit: 50,
|
|
87
|
+
fields: '["id","po-number","number","status","total","supplier"]',
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
const list = Array.isArray(orders) ? orders : [];
|
|
91
|
+
if (list.length === 0) {
|
|
92
|
+
return {
|
|
93
|
+
disabled: false,
|
|
94
|
+
options: [],
|
|
95
|
+
placeholder: 'No purchase orders found in your instance.',
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
disabled: false,
|
|
100
|
+
options: list.map((order) => {
|
|
101
|
+
var _a, _b, _c;
|
|
102
|
+
const poNumber = (_b = (_a = order['po-number']) !== null && _a !== void 0 ? _a : order['number']) !== null && _b !== void 0 ? _b : order['id'];
|
|
103
|
+
const status = (_c = order['status']) !== null && _c !== void 0 ? _c : 'unknown';
|
|
104
|
+
return {
|
|
105
|
+
label: `${poNumber} — ${status} (#${order['id']})`,
|
|
106
|
+
value: String(order['id']),
|
|
107
|
+
};
|
|
108
|
+
}),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
catch (_b) {
|
|
112
|
+
return {
|
|
113
|
+
disabled: true,
|
|
114
|
+
options: [],
|
|
115
|
+
placeholder: 'Failed to load purchase orders. Check your connection and scopes.',
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}),
|
|
119
|
+
});
|
|
120
|
+
exports.contractDropdown = pieces_framework_1.Property.Dropdown({
|
|
121
|
+
displayName: 'Contract',
|
|
122
|
+
description: 'Select a contract from your Coupa instance (most recent 50).',
|
|
123
|
+
required: true,
|
|
124
|
+
refreshers: [],
|
|
125
|
+
auth: auth_1.coupaAuth,
|
|
126
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
127
|
+
if (!auth) {
|
|
128
|
+
return {
|
|
129
|
+
disabled: true,
|
|
130
|
+
options: [],
|
|
131
|
+
placeholder: 'Connect your Coupa account first',
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const client = new client_1.CoupaClient(auth.props);
|
|
136
|
+
const contracts = yield client.request({
|
|
137
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
138
|
+
resourceUri: '/contracts',
|
|
139
|
+
query: {
|
|
140
|
+
limit: 50,
|
|
141
|
+
fields: '["id","name","number","status","supplier"]',
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
const list = Array.isArray(contracts) ? contracts : [];
|
|
145
|
+
if (list.length === 0) {
|
|
146
|
+
return {
|
|
147
|
+
disabled: false,
|
|
148
|
+
options: [],
|
|
149
|
+
placeholder: 'No contracts found in your instance.',
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
disabled: false,
|
|
154
|
+
options: list.map((contract) => {
|
|
155
|
+
var _a, _b;
|
|
156
|
+
return ({
|
|
157
|
+
label: `${(_b = (_a = contract['name']) !== null && _a !== void 0 ? _a : contract['number']) !== null && _b !== void 0 ? _b : 'Contract'} (#${contract['id']})`,
|
|
158
|
+
value: String(contract['id']),
|
|
159
|
+
});
|
|
160
|
+
}),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
catch (_b) {
|
|
164
|
+
return {
|
|
165
|
+
disabled: true,
|
|
166
|
+
options: [],
|
|
167
|
+
placeholder: 'Failed to load contracts. Check your connection and scopes.',
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}),
|
|
171
|
+
});
|
|
172
|
+
exports.supplierDropdown = pieces_framework_1.Property.Dropdown({
|
|
173
|
+
displayName: 'Supplier',
|
|
174
|
+
description: 'Select a supplier from your Coupa instance (most recent 50).',
|
|
175
|
+
required: true,
|
|
176
|
+
refreshers: [],
|
|
177
|
+
auth: auth_1.coupaAuth,
|
|
178
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
179
|
+
if (!auth) {
|
|
180
|
+
return {
|
|
181
|
+
disabled: true,
|
|
182
|
+
options: [],
|
|
183
|
+
placeholder: 'Connect your Coupa account first',
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
const client = new client_1.CoupaClient(auth.props);
|
|
188
|
+
const suppliers = yield client.request({
|
|
189
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
190
|
+
resourceUri: '/suppliers',
|
|
191
|
+
query: { limit: 50, fields: '["id","name","number","status"]' },
|
|
192
|
+
});
|
|
193
|
+
const list = Array.isArray(suppliers) ? suppliers : [];
|
|
194
|
+
if (list.length === 0) {
|
|
195
|
+
return {
|
|
196
|
+
disabled: false,
|
|
197
|
+
options: [],
|
|
198
|
+
placeholder: 'No suppliers found in your instance.',
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
return {
|
|
202
|
+
disabled: false,
|
|
203
|
+
options: list.map((supplier) => {
|
|
204
|
+
var _a;
|
|
205
|
+
return ({
|
|
206
|
+
label: `${(_a = supplier['name']) !== null && _a !== void 0 ? _a : 'Supplier'} (#${supplier['id']})`,
|
|
207
|
+
value: String(supplier['id']),
|
|
208
|
+
});
|
|
209
|
+
}),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
catch (_b) {
|
|
213
|
+
return {
|
|
214
|
+
disabled: true,
|
|
215
|
+
options: [],
|
|
216
|
+
placeholder: 'Failed to load suppliers. Check your connection and scopes.',
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
}),
|
|
220
|
+
});
|
|
221
|
+
exports.pendingApprovalDropdown = pieces_framework_1.Property.Dropdown({
|
|
222
|
+
displayName: 'Approval',
|
|
223
|
+
description: 'Select a pending approval awaiting a decision. Shows the most recent 50 pending approvals.',
|
|
224
|
+
required: true,
|
|
225
|
+
refreshers: [],
|
|
226
|
+
auth: auth_1.coupaAuth,
|
|
227
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
228
|
+
if (!auth) {
|
|
229
|
+
return {
|
|
230
|
+
disabled: true,
|
|
231
|
+
options: [],
|
|
232
|
+
placeholder: 'Connect your Coupa account first',
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
try {
|
|
236
|
+
const client = new client_1.CoupaClient(auth.props);
|
|
237
|
+
const approvals = yield client.request({
|
|
238
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
239
|
+
resourceUri: '/approvals',
|
|
240
|
+
query: {
|
|
241
|
+
'status[in]': 'pending_approval',
|
|
242
|
+
limit: 50,
|
|
243
|
+
fields: '["id","status","approvable-type","approvable-id","position"]',
|
|
244
|
+
},
|
|
245
|
+
});
|
|
246
|
+
const list = Array.isArray(approvals) ? approvals : [];
|
|
247
|
+
if (list.length === 0) {
|
|
248
|
+
return {
|
|
249
|
+
disabled: false,
|
|
250
|
+
options: [],
|
|
251
|
+
placeholder: 'No pending approvals found.',
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
return {
|
|
255
|
+
disabled: false,
|
|
256
|
+
options: list.map((approval) => {
|
|
257
|
+
var _a, _b;
|
|
258
|
+
const type = (_a = approval['approvable-type']) !== null && _a !== void 0 ? _a : 'Record';
|
|
259
|
+
const refId = (_b = approval['approvable-id']) !== null && _b !== void 0 ? _b : approval['id'];
|
|
260
|
+
return {
|
|
261
|
+
label: `${type} #${refId} (approval #${approval['id']})`,
|
|
262
|
+
value: String(approval['id']),
|
|
263
|
+
};
|
|
264
|
+
}),
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
catch (_b) {
|
|
268
|
+
return {
|
|
269
|
+
disabled: true,
|
|
270
|
+
options: [],
|
|
271
|
+
placeholder: 'Failed to load approvals. Check your connection and scopes.',
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
}),
|
|
275
|
+
});
|
|
276
|
+
exports.objectSelector = pieces_framework_1.Property.DynamicProperties({
|
|
277
|
+
displayName: 'Record',
|
|
278
|
+
description: 'Pick the record by name. For a custom resource, enter its numeric ID.',
|
|
279
|
+
required: true,
|
|
280
|
+
refreshers: ['module'],
|
|
281
|
+
auth: auth_1.coupaAuth,
|
|
282
|
+
props: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ module }) {
|
|
283
|
+
if (module === 'purchase_orders') {
|
|
284
|
+
return { objectId: exports.purchaseOrderDropdown };
|
|
285
|
+
}
|
|
286
|
+
if (module === 'suppliers') {
|
|
287
|
+
return { objectId: exports.supplierDropdown };
|
|
288
|
+
}
|
|
289
|
+
if (module === 'contracts') {
|
|
290
|
+
return { objectId: exports.contractDropdown };
|
|
291
|
+
}
|
|
292
|
+
return { objectId: exports.objectIdProperty };
|
|
293
|
+
}),
|
|
294
|
+
});
|
|
295
|
+
exports.attachmentModuleProperty = pieces_framework_1.Property.StaticDropdown({
|
|
296
|
+
displayName: 'Module',
|
|
297
|
+
description: 'The type of record to attach the file to.',
|
|
298
|
+
required: true,
|
|
299
|
+
options: {
|
|
300
|
+
disabled: false,
|
|
301
|
+
options: [
|
|
302
|
+
{ label: 'Purchase Order', value: 'purchase_orders' },
|
|
303
|
+
{ label: 'Supplier', value: 'suppliers' },
|
|
304
|
+
{ label: 'Contract', value: 'contracts' },
|
|
305
|
+
],
|
|
306
|
+
},
|
|
307
|
+
});
|
|
308
|
+
exports.remitToParentTypeProperty = pieces_framework_1.Property.StaticDropdown({
|
|
309
|
+
displayName: 'Parent Module',
|
|
310
|
+
description: 'Where to look up remit-to addresses from: a Supplier directly, or the supplier linked to a Purchase Order.',
|
|
311
|
+
required: true,
|
|
312
|
+
options: {
|
|
313
|
+
disabled: false,
|
|
314
|
+
options: [
|
|
315
|
+
{ label: 'Supplier', value: 'suppliers' },
|
|
316
|
+
{ label: 'Purchase Order', value: 'purchase_orders' },
|
|
317
|
+
],
|
|
318
|
+
},
|
|
319
|
+
});
|
|
320
|
+
function resolveModuleResource(module, customResource) {
|
|
321
|
+
if (module === '__custom__') {
|
|
322
|
+
if (!(customResource === null || customResource === void 0 ? void 0 : customResource.trim())) {
|
|
323
|
+
throw new Error('Custom Resource Path is required when using a custom module.');
|
|
324
|
+
}
|
|
325
|
+
return customResource.trim().replace(/^\/+/, '').replace(/\/+$/, '');
|
|
326
|
+
}
|
|
327
|
+
if (!module) {
|
|
328
|
+
throw new Error('Module is required.');
|
|
329
|
+
}
|
|
330
|
+
return module;
|
|
331
|
+
}
|
|
332
|
+
function toCoupaModule(module) {
|
|
333
|
+
if (module === 'purchase_orders' || module === 'suppliers' || module === 'contracts') {
|
|
334
|
+
return module;
|
|
335
|
+
}
|
|
336
|
+
throw new Error('Standard fields are only mapped for Purchase Orders, Suppliers, and Contracts modules.');
|
|
337
|
+
}
|
|
338
|
+
function parseOptionalQuery(queryJson) {
|
|
339
|
+
if (!queryJson) {
|
|
340
|
+
return {};
|
|
341
|
+
}
|
|
342
|
+
let parsed = queryJson;
|
|
343
|
+
if (typeof queryJson === 'string') {
|
|
344
|
+
try {
|
|
345
|
+
parsed = JSON.parse(queryJson);
|
|
346
|
+
}
|
|
347
|
+
catch (_a) {
|
|
348
|
+
throw new Error('Query Parameters must be valid JSON.');
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
if (!(0, utils_1.isRecord)(parsed)) {
|
|
352
|
+
return {};
|
|
353
|
+
}
|
|
354
|
+
const result = {};
|
|
355
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
356
|
+
if (value === undefined || value === null) {
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
result[key] =
|
|
360
|
+
typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean'
|
|
361
|
+
? value
|
|
362
|
+
: String(value);
|
|
363
|
+
}
|
|
364
|
+
return result;
|
|
365
|
+
}
|
|
366
|
+
//# sourceMappingURL=props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"props.js","sourceRoot":"","sources":["../../../../src/lib/common/props.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare function normalizeInstanceUrl(instanceUrl: string): string;
|
|
2
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
3
|
+
export declare function getString(value: unknown): string | undefined;
|
|
4
|
+
export declare function flattenRecord(value: unknown, prefix?: string, depth?: number): Record<string, unknown>;
|
|
5
|
+
export declare function flattenRecords(records: unknown[]): Record<string, unknown>[];
|
|
6
|
+
export declare function toStandardCoupaFields(record: Record<string, unknown>, module: CoupaModule): StandardCoupaFields;
|
|
7
|
+
export declare function formatCoupaOutput(record: Record<string, unknown>, module: CoupaModule): Record<string, unknown>;
|
|
8
|
+
export declare function formatCoupaOutputs(records: Record<string, unknown>[], module: CoupaModule): Record<string, unknown>[];
|
|
9
|
+
export declare function parseJsonBody(body: unknown): unknown;
|
|
10
|
+
export declare function formatCoupaError(error: unknown): string;
|
|
11
|
+
export declare function getMimeType(filename: string, extension?: string): string;
|
|
12
|
+
export type CoupaModule = 'purchase_orders' | 'suppliers' | 'contracts';
|
|
13
|
+
export type StandardCoupaFields = {
|
|
14
|
+
id: unknown;
|
|
15
|
+
supplier_id: unknown;
|
|
16
|
+
supplier_name: unknown;
|
|
17
|
+
po_number: unknown;
|
|
18
|
+
po_status: unknown;
|
|
19
|
+
total_amount: unknown;
|
|
20
|
+
contract_id: unknown;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/common/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE5D;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,MAAM,SAAK,EACX,KAAK,SAAI,GACR,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0BzB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE5E;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,WAAW,GAClB,mBAAmB,CA+CrB;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,WAAW,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAClC,MAAM,EAAE,WAAW,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE3B;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAepD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAqBvD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAKxE;AAgDD,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG,WAAW,GAAG,WAAW,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC"}
|