@activepieces/piece-netsuite 0.0.9 → 0.0.11
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 +2 -2
- package/src/i18n/de.json +18 -1
- package/src/i18n/es.json +18 -1
- package/src/i18n/fr.json +18 -1
- package/src/i18n/ja.json +18 -1
- package/src/i18n/nl.json +18 -1
- package/src/i18n/pt.json +18 -1
- package/src/i18n/translation.json +18 -1
- package/src/i18n/zh.json +18 -1
- package/src/index.js +1 -4
- package/src/index.js.map +1 -1
- package/src/lib/actions/get-customer.js +5 -5
- package/src/lib/actions/get-customer.js.map +1 -1
- package/src/lib/actions/get-vendor.js +5 -5
- package/src/lib/actions/get-vendor.js.map +1 -1
- package/src/lib/oauth.d.ts +1 -3
- package/src/lib/oauth.js +24 -8
- package/src/lib/oauth.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@activepieces/piece-netsuite",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"@sinclair/typebox": "0.34.11",
|
|
6
6
|
"axios": "1.8.3",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"zod": "3.25.76",
|
|
13
13
|
"@activepieces/pieces-common": "0.7.0",
|
|
14
14
|
"@activepieces/pieces-framework": "0.20.1",
|
|
15
|
-
"@activepieces/shared": "0.
|
|
15
|
+
"@activepieces/shared": "0.23.0",
|
|
16
16
|
"tslib": "2.8.1"
|
|
17
17
|
},
|
|
18
18
|
"overrides": {
|
package/src/i18n/de.json
CHANGED
|
@@ -11,10 +11,27 @@
|
|
|
11
11
|
"Your NetSuite token secret": "Ihr NetSuite Token Geheimnis",
|
|
12
12
|
"Get Vendor": "Get Vendor",
|
|
13
13
|
"Get Customer": "Kunde erhalten",
|
|
14
|
+
"Custom API Call": "Eigener API-Aufruf",
|
|
14
15
|
"Gets vendor details from NetSuite.": "Ruft Händlerdetails von NetSuite ab.",
|
|
15
16
|
"Gets customer details from NetSuite.": "Ruft Kundendaten von NetSuite ab.",
|
|
17
|
+
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
|
|
16
18
|
"Vendor ID": "Lieferant ID",
|
|
17
19
|
"Customer ID": "Kunden-ID",
|
|
20
|
+
"Method": "Methode",
|
|
21
|
+
"Headers": "Kopfzeilen",
|
|
22
|
+
"Query Parameters": "Abfrageparameter",
|
|
23
|
+
"Body": "Körper",
|
|
24
|
+
"Response is Binary ?": "Antwort ist binär?",
|
|
25
|
+
"No Error on Failure": "Kein Fehler bei Fehler",
|
|
26
|
+
"Timeout (in seconds)": "Timeout (in Sekunden)",
|
|
18
27
|
"The ID of the vendor to retrieve.": "Die ID des zu holenden Verkäufers.",
|
|
19
|
-
"The ID of the customer to retrieve.": "Die ID des Kunden zu ermitteln."
|
|
28
|
+
"The ID of the customer to retrieve.": "Die ID des Kunden zu ermitteln.",
|
|
29
|
+
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
|
|
30
|
+
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
|
|
31
|
+
"GET": "ERHALTEN",
|
|
32
|
+
"POST": "POST",
|
|
33
|
+
"PATCH": "PATCH",
|
|
34
|
+
"PUT": "PUT",
|
|
35
|
+
"DELETE": "LÖSCHEN",
|
|
36
|
+
"HEAD": "HEAD"
|
|
20
37
|
}
|
package/src/i18n/es.json
CHANGED
|
@@ -11,10 +11,27 @@
|
|
|
11
11
|
"Your NetSuite token secret": "Tu secreto de NetSuite",
|
|
12
12
|
"Get Vendor": "Get Vendor",
|
|
13
13
|
"Get Customer": "Obtener cliente",
|
|
14
|
+
"Custom API Call": "Llamada API personalizada",
|
|
14
15
|
"Gets vendor details from NetSuite.": "Obtiene detalles del proveedor de NetSuite.",
|
|
15
16
|
"Gets customer details from NetSuite.": "Obtiene los detalles del cliente de NetSuite.",
|
|
17
|
+
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
|
|
16
18
|
"Vendor ID": "ID del proveedor",
|
|
17
19
|
"Customer ID": "ID del cliente",
|
|
20
|
+
"Method": "Método",
|
|
21
|
+
"Headers": "Encabezados",
|
|
22
|
+
"Query Parameters": "Parámetros de consulta",
|
|
23
|
+
"Body": "Cuerpo",
|
|
24
|
+
"Response is Binary ?": "¿Respuesta es binaria?",
|
|
25
|
+
"No Error on Failure": "No hay ningún error en fallo",
|
|
26
|
+
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
|
|
18
27
|
"The ID of the vendor to retrieve.": "El ID del proveedor a recuperar.",
|
|
19
|
-
"The ID of the customer to retrieve.": "El ID del cliente a recuperar."
|
|
28
|
+
"The ID of the customer to retrieve.": "El ID del cliente a recuperar.",
|
|
29
|
+
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
|
|
30
|
+
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
|
|
31
|
+
"GET": "RECOGER",
|
|
32
|
+
"POST": "POST",
|
|
33
|
+
"PATCH": "PATCH",
|
|
34
|
+
"PUT": "PUT",
|
|
35
|
+
"DELETE": "BORRAR",
|
|
36
|
+
"HEAD": "LIMPIO"
|
|
20
37
|
}
|
package/src/i18n/fr.json
CHANGED
|
@@ -11,10 +11,27 @@
|
|
|
11
11
|
"Your NetSuite token secret": "Votre jeton NetSuite secret",
|
|
12
12
|
"Get Vendor": "Get Vendor",
|
|
13
13
|
"Get Customer": "Obtenir le client",
|
|
14
|
+
"Custom API Call": "Appel d'API personnalisé",
|
|
14
15
|
"Gets vendor details from NetSuite.": "Obtient les détails du vendeur depuis NetSuite.",
|
|
15
16
|
"Gets customer details from NetSuite.": "Obtient les détails du client depuis NetSuite.",
|
|
17
|
+
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
|
|
16
18
|
"Vendor ID": "ID Fournisseur",
|
|
17
19
|
"Customer ID": "ID du client",
|
|
20
|
+
"Method": "Méthode",
|
|
21
|
+
"Headers": "Headers",
|
|
22
|
+
"Query Parameters": "Paramètres de requête",
|
|
23
|
+
"Body": "Body",
|
|
24
|
+
"Response is Binary ?": "La réponse est Binaire ?",
|
|
25
|
+
"No Error on Failure": "Aucune erreur en cas d'échec",
|
|
26
|
+
"Timeout (in seconds)": "Délai d'expiration (en secondes)",
|
|
18
27
|
"The ID of the vendor to retrieve.": "L'ID du vendeur à récupérer.",
|
|
19
|
-
"The ID of the customer to retrieve.": "L'ID du client à récupérer."
|
|
28
|
+
"The ID of the customer to retrieve.": "L'ID du client à récupérer.",
|
|
29
|
+
"Authorization headers are injected automatically from your connection.": "Les Headers d'autorisation sont injectés automatiquement à partir de votre connexion.",
|
|
30
|
+
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
|
|
31
|
+
"GET": "GET",
|
|
32
|
+
"POST": "POST",
|
|
33
|
+
"PATCH": "PATCH",
|
|
34
|
+
"PUT": "PUT",
|
|
35
|
+
"DELETE": "DELETE",
|
|
36
|
+
"HEAD": "HEAD"
|
|
20
37
|
}
|
package/src/i18n/ja.json
CHANGED
|
@@ -11,10 +11,27 @@
|
|
|
11
11
|
"Your NetSuite token secret": "NetSuiteトークンシークレット",
|
|
12
12
|
"Get Vendor": "Get Vendor",
|
|
13
13
|
"Get Customer": "顧客を取得",
|
|
14
|
+
"Custom API Call": "カスタムAPI通話",
|
|
14
15
|
"Gets vendor details from NetSuite.": "NetSuite からベンダーの詳細を取得します。",
|
|
15
16
|
"Gets customer details from NetSuite.": "NetSuiteから顧客の詳細を取得します。",
|
|
17
|
+
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
|
|
16
18
|
"Vendor ID": "仕入先ID",
|
|
17
19
|
"Customer ID": "顧客 ID",
|
|
20
|
+
"Method": "方法",
|
|
21
|
+
"Headers": "ヘッダー",
|
|
22
|
+
"Query Parameters": "クエリパラメータ",
|
|
23
|
+
"Body": "本文",
|
|
24
|
+
"Response is Binary ?": "応答はバイナリですか?",
|
|
25
|
+
"No Error on Failure": "失敗時にエラーはありません",
|
|
26
|
+
"Timeout (in seconds)": "タイムアウト(秒)",
|
|
18
27
|
"The ID of the vendor to retrieve.": "取得するベンダID。",
|
|
19
|
-
"The ID of the customer to retrieve.": "取得する顧客ID。"
|
|
28
|
+
"The ID of the customer to retrieve.": "取得する顧客ID。",
|
|
29
|
+
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
|
|
30
|
+
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
|
|
31
|
+
"GET": "取得",
|
|
32
|
+
"POST": "POST",
|
|
33
|
+
"PATCH": "PATCH",
|
|
34
|
+
"PUT": "PUT",
|
|
35
|
+
"DELETE": "削除",
|
|
36
|
+
"HEAD": "頭"
|
|
20
37
|
}
|
package/src/i18n/nl.json
CHANGED
|
@@ -11,10 +11,27 @@
|
|
|
11
11
|
"Your NetSuite token secret": "Uw NetSuite token geheim",
|
|
12
12
|
"Get Vendor": "Get Vendor",
|
|
13
13
|
"Get Customer": "Klant ophalen",
|
|
14
|
+
"Custom API Call": "Custom API Call",
|
|
14
15
|
"Gets vendor details from NetSuite.": "Verkoper gegevens ophalen uit NetSuite.",
|
|
15
16
|
"Gets customer details from NetSuite.": "Haal klantgegevens op uit NetSuite.",
|
|
17
|
+
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
|
|
16
18
|
"Vendor ID": "Verkoper ID",
|
|
17
19
|
"Customer ID": "Klant ID",
|
|
20
|
+
"Method": "Methode",
|
|
21
|
+
"Headers": "Kopteksten",
|
|
22
|
+
"Query Parameters": "Query parameters",
|
|
23
|
+
"Body": "Lichaam",
|
|
24
|
+
"Response is Binary ?": "Antwoord is binair?",
|
|
25
|
+
"No Error on Failure": "Geen fout bij fout",
|
|
26
|
+
"Timeout (in seconds)": "Time-out (in seconden)",
|
|
18
27
|
"The ID of the vendor to retrieve.": "De ID van de verkoper die opgehaald moet worden.",
|
|
19
|
-
"The ID of the customer to retrieve.": "Het ID van de op te halen klant."
|
|
28
|
+
"The ID of the customer to retrieve.": "Het ID van de op te halen klant.",
|
|
29
|
+
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
|
|
30
|
+
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
|
|
31
|
+
"GET": "KRIJG",
|
|
32
|
+
"POST": "POSTE",
|
|
33
|
+
"PATCH": "BEKIJK",
|
|
34
|
+
"PUT": "PUT",
|
|
35
|
+
"DELETE": "VERWIJDEREN",
|
|
36
|
+
"HEAD": "HOOFD"
|
|
20
37
|
}
|
package/src/i18n/pt.json
CHANGED
|
@@ -11,10 +11,27 @@
|
|
|
11
11
|
"Your NetSuite token secret": "Seu token NetSuite",
|
|
12
12
|
"Get Vendor": "Get Vendor",
|
|
13
13
|
"Get Customer": "Obter Cliente",
|
|
14
|
+
"Custom API Call": "Chamada de API personalizada",
|
|
14
15
|
"Gets vendor details from NetSuite.": "Obtém detalhes do fornecedor da NetSuite.",
|
|
15
16
|
"Gets customer details from NetSuite.": "Obtém os detalhes do cliente no NetSuite.",
|
|
17
|
+
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
|
|
16
18
|
"Vendor ID": "ID do fornecedor",
|
|
17
19
|
"Customer ID": "ID do cliente",
|
|
20
|
+
"Method": "Método",
|
|
21
|
+
"Headers": "Cabeçalhos",
|
|
22
|
+
"Query Parameters": "Parâmetros da consulta",
|
|
23
|
+
"Body": "Conteúdo",
|
|
24
|
+
"Response is Binary ?": "A resposta é binária ?",
|
|
25
|
+
"No Error on Failure": "Nenhum erro no Failure",
|
|
26
|
+
"Timeout (in seconds)": "Tempo limite (em segundos)",
|
|
18
27
|
"The ID of the vendor to retrieve.": "O ID do fornecedor a recuperar.",
|
|
19
|
-
"The ID of the customer to retrieve.": "O ID do cliente a recuperar."
|
|
28
|
+
"The ID of the customer to retrieve.": "O ID do cliente a recuperar.",
|
|
29
|
+
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
|
|
30
|
+
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
|
|
31
|
+
"GET": "OBTER",
|
|
32
|
+
"POST": "POSTAR",
|
|
33
|
+
"PATCH": "COMPRAR",
|
|
34
|
+
"PUT": "COLOCAR",
|
|
35
|
+
"DELETE": "EXCLUIR",
|
|
36
|
+
"HEAD": "CABEÇA"
|
|
20
37
|
}
|
|
@@ -11,10 +11,27 @@
|
|
|
11
11
|
"Your NetSuite token secret": "Your NetSuite token secret",
|
|
12
12
|
"Get Vendor": "Get Vendor",
|
|
13
13
|
"Get Customer": "Get Customer",
|
|
14
|
+
"Custom API Call": "Custom API Call",
|
|
14
15
|
"Gets vendor details from NetSuite.": "Gets vendor details from NetSuite.",
|
|
15
16
|
"Gets customer details from NetSuite.": "Gets customer details from NetSuite.",
|
|
17
|
+
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
|
16
18
|
"Vendor ID": "Vendor ID",
|
|
17
19
|
"Customer ID": "Customer ID",
|
|
20
|
+
"Method": "Method",
|
|
21
|
+
"Headers": "Headers",
|
|
22
|
+
"Query Parameters": "Query Parameters",
|
|
23
|
+
"Body": "Body",
|
|
24
|
+
"Response is Binary ?": "Response is Binary ?",
|
|
25
|
+
"No Error on Failure": "No Error on Failure",
|
|
26
|
+
"Timeout (in seconds)": "Timeout (in seconds)",
|
|
18
27
|
"The ID of the vendor to retrieve.": "The ID of the vendor to retrieve.",
|
|
19
|
-
"The ID of the customer to retrieve.": "The ID of the customer to retrieve."
|
|
28
|
+
"The ID of the customer to retrieve.": "The ID of the customer to retrieve.",
|
|
29
|
+
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
|
30
|
+
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
|
31
|
+
"GET": "GET",
|
|
32
|
+
"POST": "POST",
|
|
33
|
+
"PATCH": "PATCH",
|
|
34
|
+
"PUT": "PUT",
|
|
35
|
+
"DELETE": "DELETE",
|
|
36
|
+
"HEAD": "HEAD"
|
|
20
37
|
}
|
package/src/i18n/zh.json
CHANGED
|
@@ -11,10 +11,27 @@
|
|
|
11
11
|
"Your NetSuite token secret": "Your NetSuite token secret",
|
|
12
12
|
"Get Vendor": "Get Vendor",
|
|
13
13
|
"Get Customer": "Get Customer",
|
|
14
|
+
"Custom API Call": "自定义 API 呼叫",
|
|
14
15
|
"Gets vendor details from NetSuite.": "Gets vendor details from NetSuite.",
|
|
15
16
|
"Gets customer details from NetSuite.": "Gets customer details from NetSuite.",
|
|
17
|
+
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
|
|
16
18
|
"Vendor ID": "Vendor ID",
|
|
17
19
|
"Customer ID": "Customer ID",
|
|
20
|
+
"Method": "方法",
|
|
21
|
+
"Headers": "信头",
|
|
22
|
+
"Query Parameters": "查询参数",
|
|
23
|
+
"Body": "正文内容",
|
|
24
|
+
"Response is Binary ?": "Response is Binary ?",
|
|
25
|
+
"No Error on Failure": "失败时没有错误",
|
|
26
|
+
"Timeout (in seconds)": "超时(秒)",
|
|
18
27
|
"The ID of the vendor to retrieve.": "The ID of the vendor to retrieve.",
|
|
19
|
-
"The ID of the customer to retrieve.": "The ID of the customer to retrieve."
|
|
28
|
+
"The ID of the customer to retrieve.": "The ID of the customer to retrieve.",
|
|
29
|
+
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
|
|
30
|
+
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
|
31
|
+
"GET": "获取",
|
|
32
|
+
"POST": "帖子",
|
|
33
|
+
"PATCH": "PATCH",
|
|
34
|
+
"PUT": "弹出",
|
|
35
|
+
"DELETE": "删除",
|
|
36
|
+
"HEAD": "黑色"
|
|
20
37
|
}
|
package/src/index.js
CHANGED
|
@@ -55,10 +55,7 @@ exports.netsuite = (0, pieces_framework_1.createPiece)({
|
|
|
55
55
|
auth: exports.netsuiteAuth,
|
|
56
56
|
authMapping: (auth, propsValue) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
57
57
|
const authValue = auth;
|
|
58
|
-
const
|
|
59
|
-
// sanitize cases where params etc are entered directly in the url field
|
|
60
|
-
const baseUrl = `${parsedUrl.origin}${parsedUrl.pathname}`;
|
|
61
|
-
const authHeader = (0, oauth_1.createOAuthHeader)(authValue.accountId, authValue.consumerKey, authValue.consumerSecret, authValue.tokenId, authValue.tokenSecret, baseUrl, propsValue['method']);
|
|
58
|
+
const authHeader = (0, oauth_1.createOAuthHeader)(authValue.accountId, authValue.consumerKey, authValue.consumerSecret, authValue.tokenId, authValue.tokenSecret, propsValue['url']['url'], propsValue['method'], propsValue['queryParams']);
|
|
62
59
|
return {
|
|
63
60
|
Authorization: authHeader,
|
|
64
61
|
prefer: 'transient',
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/netsuite/src/index.ts"],"names":[],"mappings":";;;;AAAA,qEAKwC;AACxC,yDAAqD;AACrD,6DAAyD;AACzD,iDAAqD;AACrD,+DAAwE;AACxE,uCAAgD;AAEnC,QAAA,YAAY,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC/C,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE;QACL,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,0BAA0B;SACxC,CAAC;QACF,WAAW,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,4BAA4B;SAC1C,CAAC;QACF,cAAc,EAAE,4BAAS,CAAC,UAAU,CAAC;YACnC,WAAW,EAAE,iBAAiB;YAC9B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,+BAA+B;SAC7C,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,wBAAwB;SACtC,CAAC;QACF,WAAW,EAAE,4BAAS,CAAC,UAAU,CAAC;YAChC,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,4BAA4B;SAC1C,CAAC;KACH;CACF,CAAC,CAAC;AAEU,QAAA,QAAQ,GAAG,IAAA,8BAAW,EAAC;IAClC,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,kDAAkD;IAC3D,UAAU,EAAE,CAAC,sBAAa,CAAC,aAAa,CAAC;IACzC,IAAI,EAAE,oBAAY;IAClB,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,OAAO,EAAE;QACP,sBAAS;QACT,0BAAW;QACX,IAAA,yCAAyB,EAAC;YACxB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChB,MAAM,SAAS,GAAG,IAAiD,CAAC;gBACpE,OAAO,WAAW,SAAS,CAAC,SAAS,6BAA6B,CAAC;YACrE,CAAC;YACD,IAAI,EAAE,oBAAY;YAClB,WAAW,EAAE,CAAO,IAAI,EAAE,UAAU,EAAE,EAAE;gBACtC,MAAM,SAAS,GAAG,IAAiD,CAAC;gBAEpE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/netsuite/src/index.ts"],"names":[],"mappings":";;;;AAAA,qEAKwC;AACxC,yDAAqD;AACrD,6DAAyD;AACzD,iDAAqD;AACrD,+DAAwE;AACxE,uCAAgD;AAEnC,QAAA,YAAY,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC/C,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE;QACL,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,0BAA0B;SACxC,CAAC;QACF,WAAW,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,4BAA4B;SAC1C,CAAC;QACF,cAAc,EAAE,4BAAS,CAAC,UAAU,CAAC;YACnC,WAAW,EAAE,iBAAiB;YAC9B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,+BAA+B;SAC7C,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,wBAAwB;SACtC,CAAC;QACF,WAAW,EAAE,4BAAS,CAAC,UAAU,CAAC;YAChC,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,4BAA4B;SAC1C,CAAC;KACH;CACF,CAAC,CAAC;AAEU,QAAA,QAAQ,GAAG,IAAA,8BAAW,EAAC;IAClC,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,kDAAkD;IAC3D,UAAU,EAAE,CAAC,sBAAa,CAAC,aAAa,CAAC;IACzC,IAAI,EAAE,oBAAY;IAClB,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,OAAO,EAAE;QACP,sBAAS;QACT,0BAAW;QACX,IAAA,yCAAyB,EAAC;YACxB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChB,MAAM,SAAS,GAAG,IAAiD,CAAC;gBACpE,OAAO,WAAW,SAAS,CAAC,SAAS,6BAA6B,CAAC;YACrE,CAAC;YACD,IAAI,EAAE,oBAAY;YAClB,WAAW,EAAE,CAAO,IAAI,EAAE,UAAU,EAAE,EAAE;gBACtC,MAAM,SAAS,GAAG,IAAiD,CAAC;gBAEpE,MAAM,UAAU,GAAG,IAAA,yBAAiB,EAClC,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,WAAW,EACrB,SAAS,CAAC,cAAc,EACxB,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,WAAW,EACrB,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EACxB,UAAU,CAAC,QAAQ,CAAC,EACpB,UAAU,CAAC,aAAa,CAAC,CAC1B,CAAC;gBAEF,OAAO;oBACL,aAAa,EAAE,UAAU;oBACzB,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,4BAA4B;iBACrC,CAAC;YACJ,CAAC,CAAA;SACF,CAAC;KACH;IACD,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
|
|
@@ -22,16 +22,16 @@ exports.getCustomer = (0, pieces_framework_1.createAction)({
|
|
|
22
22
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
23
23
|
const { accountId, consumerKey, consumerSecret, tokenId, tokenSecret } = context.auth;
|
|
24
24
|
const { customerId } = context.propsValue;
|
|
25
|
-
const
|
|
25
|
+
const requestUrl = `https://${accountId}.suitetalk.api.netsuite.com/services/rest/record/v1/customer/${customerId}`;
|
|
26
26
|
const httpMethod = pieces_common_1.HttpMethod.GET;
|
|
27
|
-
const authHeader = (0, oauth_1.createOAuthHeader)(accountId, consumerKey, consumerSecret, tokenId, tokenSecret,
|
|
27
|
+
const authHeader = (0, oauth_1.createOAuthHeader)(accountId, consumerKey, consumerSecret, tokenId, tokenSecret, requestUrl, httpMethod);
|
|
28
28
|
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
29
29
|
method: httpMethod,
|
|
30
|
-
url:
|
|
30
|
+
url: requestUrl,
|
|
31
31
|
headers: {
|
|
32
32
|
Authorization: authHeader,
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
prefer: 'transient',
|
|
34
|
+
Cookie: 'NS_ROUTING_VERSION=LAGGING',
|
|
35
35
|
},
|
|
36
36
|
});
|
|
37
37
|
return response.body;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-customer.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/netsuite/src/lib/actions/get-customer.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,6BAAqC;AACrC,oCAA6C;AAEhC,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACtC,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,gBAAY;IAClB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,sCAAsC;IACnD,KAAK,EAAE;QACL,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,aAAa;YAC1B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,qCAAqC;SACnD,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"get-customer.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/netsuite/src/lib/actions/get-customer.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,6BAAqC;AACrC,oCAA6C;AAEhC,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACtC,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,gBAAY;IAClB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,sCAAsC;IACnD,KAAK,EAAE;QACL,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,aAAa;YAC1B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,qCAAqC;SACnD,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,GACpE,OAAO,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAE1C,MAAM,UAAU,GAAG,WAAW,SAAS,gEAAgE,UAAU,EAAE,CAAC;YACpH,MAAM,UAAU,GAAG,0BAAU,CAAC,GAAG,CAAC;YAElC,MAAM,UAAU,GAAG,IAAA,yBAAiB,EAClC,SAAS,EACT,WAAW,EACX,cAAc,EACd,OAAO,EACP,WAAW,EACX,UAAU,EACV,UAAU,CACX,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,MAAM,EAAE,UAAU;gBAClB,GAAG,EAAE,UAAU;gBACf,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU;oBACzB,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,4BAA4B;iBACrC;aACF,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -22,16 +22,16 @@ exports.getVendor = (0, pieces_framework_1.createAction)({
|
|
|
22
22
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
23
23
|
const { accountId, consumerKey, consumerSecret, tokenId, tokenSecret } = context.auth;
|
|
24
24
|
const { vendorId } = context.propsValue;
|
|
25
|
-
const
|
|
25
|
+
const requestUrl = `https://${accountId}.suitetalk.api.netsuite.com/services/rest/record/v1/vendor/${vendorId}`;
|
|
26
26
|
const httpMethod = pieces_common_1.HttpMethod.GET;
|
|
27
|
-
const authHeader = (0, oauth_1.createOAuthHeader)(accountId, consumerKey, consumerSecret, tokenId, tokenSecret,
|
|
27
|
+
const authHeader = (0, oauth_1.createOAuthHeader)(accountId, consumerKey, consumerSecret, tokenId, tokenSecret, requestUrl, httpMethod);
|
|
28
28
|
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
29
29
|
method: httpMethod,
|
|
30
|
-
url:
|
|
30
|
+
url: requestUrl,
|
|
31
31
|
headers: {
|
|
32
32
|
Authorization: authHeader,
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
prefer: 'transient',
|
|
34
|
+
Cookie: 'NS_ROUTING_VERSION=LAGGING',
|
|
35
35
|
},
|
|
36
36
|
});
|
|
37
37
|
return response.body;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-vendor.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/netsuite/src/lib/actions/get-vendor.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,6BAAqC;AACrC,oCAA6C;AAEhC,QAAA,SAAS,GAAG,IAAA,+BAAY,EAAC;IACpC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,gBAAY;IAClB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,oCAAoC;IACjD,KAAK,EAAE;QACL,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,mCAAmC;SACjD,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"get-vendor.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/netsuite/src/lib/actions/get-vendor.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,6BAAqC;AACrC,oCAA6C;AAEhC,QAAA,SAAS,GAAG,IAAA,+BAAY,EAAC;IACpC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,gBAAY;IAClB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,oCAAoC;IACjD,KAAK,EAAE;QACL,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,mCAAmC;SACjD,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,GACpE,OAAO,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAExC,MAAM,UAAU,GAAG,WAAW,SAAS,8DAA8D,QAAQ,EAAE,CAAC;YAChH,MAAM,UAAU,GAAG,0BAAU,CAAC,GAAG,CAAC;YAElC,MAAM,UAAU,GAAG,IAAA,yBAAiB,EAClC,SAAS,EACT,WAAW,EACX,cAAc,EACd,OAAO,EACP,WAAW,EACX,UAAU,EACV,UAAU,CACX,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,MAAM,EAAE,UAAU;gBAClB,GAAG,EAAE,UAAU;gBACf,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU;oBACzB,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,4BAA4B;iBACrC;aACF,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;KAAA;CACF,CAAC,CAAC"}
|
package/src/lib/oauth.d.ts
CHANGED
|
@@ -1,3 +1 @@
|
|
|
1
|
-
export declare function
|
|
2
|
-
export declare function generateSignature(baseUrl: string, httpMethod: string, oauthNonce: string, timestamp: number, consumerKey: string, consumerSecret: string, tokenId: string, tokenSecret: string): string;
|
|
3
|
-
export declare function createOAuthHeader(accountId: string, consumerKey: string, consumerSecret: string, tokenId: string, tokenSecret: string, baseUrl: string, httpMethod: string): string;
|
|
1
|
+
export declare function createOAuthHeader(accountId: string, consumerKey: string, consumerSecret: string, tokenId: string, tokenSecret: string, requestUrl: string, httpMethod: string, queryParams?: Record<string, string | number | boolean>): string;
|
package/src/lib/oauth.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateNonce = generateNonce;
|
|
4
|
-
exports.generateSignature = generateSignature;
|
|
5
3
|
exports.createOAuthHeader = createOAuthHeader;
|
|
6
4
|
const crypto_1 = require("crypto");
|
|
7
5
|
const SIGN_METHOD = 'HMAC-SHA256';
|
|
@@ -11,19 +9,37 @@ function generateNonce() {
|
|
|
11
9
|
const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
12
10
|
return Array.from({ length }, () => possible[Math.floor(Math.random() * possible.length)]).join('');
|
|
13
11
|
}
|
|
14
|
-
function generateSignature(
|
|
15
|
-
|
|
12
|
+
function generateSignature(requestUrl, httpMethod, oauthNonce, timestamp, consumerKey, consumerSecret, tokenId, tokenSecret, queryParams) {
|
|
13
|
+
// Parse URL to get base URL and existing query params
|
|
14
|
+
const parsedUrl = new URL(requestUrl);
|
|
15
|
+
const baseUrl = `${parsedUrl.origin}${parsedUrl.pathname}`;
|
|
16
|
+
// Collect OAuth parameters
|
|
17
|
+
const allParams = {
|
|
16
18
|
oauth_consumer_key: consumerKey,
|
|
17
19
|
oauth_nonce: oauthNonce,
|
|
18
20
|
oauth_signature_method: SIGN_METHOD,
|
|
19
21
|
oauth_timestamp: timestamp.toString(),
|
|
20
22
|
oauth_token: tokenId,
|
|
21
23
|
oauth_version: OAUTH_VERSION,
|
|
24
|
+
};
|
|
25
|
+
// Include query parameters from URL
|
|
26
|
+
parsedUrl.searchParams.forEach((value, key) => {
|
|
27
|
+
allParams[key] = value;
|
|
22
28
|
});
|
|
29
|
+
// Include additional query parameters (will override URL params if same key)
|
|
30
|
+
if (queryParams) {
|
|
31
|
+
Object.entries(queryParams).forEach(([key, value]) => {
|
|
32
|
+
allParams[key] = String(value);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
// Sort parameters by key, then by value (OAuth 1.0 spec)
|
|
36
|
+
const sortedKeys = Object.keys(allParams).sort();
|
|
37
|
+
const paramPairs = sortedKeys.map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(allParams[key])}`);
|
|
38
|
+
const paramString = paramPairs.join('&');
|
|
23
39
|
const signatureBaseString = [
|
|
24
|
-
httpMethod,
|
|
40
|
+
httpMethod.toUpperCase(),
|
|
25
41
|
encodeURIComponent(baseUrl),
|
|
26
|
-
encodeURIComponent(
|
|
42
|
+
encodeURIComponent(paramString),
|
|
27
43
|
].join('&');
|
|
28
44
|
const signingKey = [
|
|
29
45
|
encodeURIComponent(consumerSecret),
|
|
@@ -34,10 +50,10 @@ function generateSignature(baseUrl, httpMethod, oauthNonce, timestamp, consumerK
|
|
|
34
50
|
const signature = hmac.digest('base64');
|
|
35
51
|
return encodeURIComponent(signature);
|
|
36
52
|
}
|
|
37
|
-
function createOAuthHeader(accountId, consumerKey, consumerSecret, tokenId, tokenSecret,
|
|
53
|
+
function createOAuthHeader(accountId, consumerKey, consumerSecret, tokenId, tokenSecret, requestUrl, httpMethod, queryParams) {
|
|
38
54
|
const oauthNonce = generateNonce();
|
|
39
55
|
const timestamp = Math.floor(Date.now() / 1000);
|
|
40
|
-
const signature = generateSignature(
|
|
56
|
+
const signature = generateSignature(requestUrl, httpMethod, oauthNonce, timestamp, consumerKey, consumerSecret, tokenId, tokenSecret, queryParams);
|
|
41
57
|
const headerParams = [
|
|
42
58
|
`realm="${accountId}"`,
|
|
43
59
|
`oauth_token="${tokenId}"`,
|
package/src/lib/oauth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../../../../../packages/pieces/community/netsuite/src/lib/oauth.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../../../../../packages/pieces/community/netsuite/src/lib/oauth.ts"],"names":[],"mappings":"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"}
|