{"_id":"@digitalnodecom/node-red-contrib-netsuiteauth","_rev":"7-f827f6113b0adb943ba299091a7d057f","name":"@digitalnodecom/node-red-contrib-netsuiteauth","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.1":{"name":"@digitalnodecom/node-red-contrib-netsuiteauth","version":"1.0.1","keywords":["node-red","netsuite","oauth","suiteql"],"_id":"@digitalnodecom/node-red-contrib-netsuiteauth@1.0.1","maintainers":[{"name":"trajcheee","email":"trajche@kralev.eu"},{"name":"riste","email":"riste@digitalnode.com"},{"name":"bojanataseva","email":"bojana@digitalnode.com"}],"dist":{"shasum":"364a450f1b787dc34356637a37b2932839571550","tarball":"https://registry.npmjs.org/@digitalnodecom/node-red-contrib-netsuiteauth/-/node-red-contrib-netsuiteauth-1.0.1.tgz","fileCount":14,"integrity":"sha512-Uvc4aVwaZ7aUDnw8WabSQlqHOMw0Vn4K6SvayKGNYpuOk+O08nkkTP3htEXd8fy+57ViVtpFoWLH54HykSYnJw==","signatures":[{"sig":"MEQCIBqh4URXrLpj5xq6WOSf8LcAqWmx/mzRz4P0p+gysz9eAiBuWKt1zUiYRrufTh2kcHfW2O7DhPRbeLtk2/57MjFfOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64936},"_npmUser":{"name":"bojanataseva","email":"bojana@digitalnode.com"},"node-red":{"nodes":{"netsuite-oauth-config":"netsuite-oauth-config.js","netsuite-REST-API-Request":"netsuite-REST-API-request.js","netsuite-SuiteQl-API-Request":"netsuite-SuiteQl-API-request.js"}},"repository":{"url":"https://github.com/digitalnodecom/node-red-contrib-netsuite","type":"git"},"description":"A custom Node-RED node for NetSuite OAuth 1.0","directories":{},"dependencies":{"axios":"^1.7.9","oauth-1.0a":"^2.2.6","node-red-contrib-netsuite":"^0.1.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-netsuiteauth_1.0.1_1741632921130_0.23804837422828595","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@digitalnodecom/node-red-contrib-netsuiteauth","version":"1.0.2","keywords":["node-red","netsuite","oauth","suiteql"],"_id":"@digitalnodecom/node-red-contrib-netsuiteauth@1.0.2","maintainers":[{"name":"trajcheee","email":"trajche@kralev.eu"},{"name":"riste","email":"riste@digitalnode.com"},{"name":"bojanataseva","email":"bojana@digitalnode.com"}],"dist":{"shasum":"7eecf7266dc8d80eb22d2af5729016b8c457dae3","tarball":"https://registry.npmjs.org/@digitalnodecom/node-red-contrib-netsuiteauth/-/node-red-contrib-netsuiteauth-1.0.2.tgz","fileCount":14,"integrity":"sha512-q/gv5u/fv/hTMv6aGMiuFAh0ZTxQomf/gs3/lqcUA2qmfuKqb4SPlep0Sy+QG2TryDSjGiQO0tdXhkw6URE8nw==","signatures":[{"sig":"MEUCIQCTJuxRS8uIhhv+45ffu/CE49D9Iyej65pz1UZhRTqtpQIgX4S+dTf4lGOqeQ21pVyXwd0Z95uT83i4Rc2/097yOdY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64959},"_npmUser":{"name":"bojanataseva","email":"bojana@digitalnode.com"},"node-red":{"nodes":{"netsuite-oauth-config":"netsuite-oauth-config.js","netsuite-REST-API-Request":"netsuite-rest-api-request.js","netsuite-SuiteQl-API-Request":"netsuite-suiteql-api-request.js"}},"repository":{"url":"https://github.com/digitalnodecom/node-red-contrib-netsuite","type":"git"},"description":"A custom Node-RED node for NetSuite OAuth 1.0","directories":{},"dependencies":{"axios":"^1.7.9","oauth-1.0a":"^2.2.6","node-red-contrib-netsuite":"^0.1.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-netsuiteauth_1.0.2_1744228833265_0.9965215511839525","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@digitalnodecom/node-red-contrib-netsuiteauth","version":"1.0.3","keywords":["node-red","netsuite","oauth","suiteql"],"_id":"@digitalnodecom/node-red-contrib-netsuiteauth@1.0.3","maintainers":[{"name":"trajcheee","email":"trajche@kralev.eu"},{"name":"riste","email":"riste@digitalnode.com"},{"name":"bojanataseva","email":"bojana@digitalnode.com"}],"dist":{"shasum":"464a8167cd1d56ebe005f271aa20662def0d0dbe","tarball":"https://registry.npmjs.org/@digitalnodecom/node-red-contrib-netsuiteauth/-/node-red-contrib-netsuiteauth-1.0.3.tgz","fileCount":14,"integrity":"sha512-awiDTBQn/lThLvrjdJwfc4qSPvTJMZ25n41AF1F/ftA2AiXhraAcy4ADnLL+qJoxYWSkosBxKYDAWiF5xMEOIw==","signatures":[{"sig":"MEQCIC4v8BALBQAlkvKqJcgKF7IWsEBaSOeWe85snJaLWDbnAiA6ke/NAN/WIaRdRmLL2W4pk0EncAABUYo94xM8VENe+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64902},"_npmUser":{"name":"bojanataseva","email":"bojana@digitalnode.com"},"node-red":{"nodes":{"netsuite-oauth-config":"netsuite-oauth-config.js","netsuite-REST-API-Request":"netsuite-rest-api-request.js","netsuite-SuiteQl-API-Request":"netsuite-suiteql-api-request.js"}},"repository":{"url":"https://github.com/digitalnodecom/node-red-contrib-netsuite","type":"git"},"description":"A custom Node-RED node for NetSuite OAuth 1.0","directories":{},"dependencies":{"axios":"^1.7.9","oauth-1.0a":"^2.2.6","node-red-contrib-netsuite":"^0.1.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-netsuiteauth_1.0.3_1745956809395_0.515302601736898","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@digitalnodecom/node-red-contrib-netsuiteauth","version":"1.0.4","keywords":["node-red","netsuite","oauth","suiteql"],"_id":"@digitalnodecom/node-red-contrib-netsuiteauth@1.0.4","maintainers":[{"name":"trajcheee","email":"trajche@kralev.eu"},{"name":"riste","email":"riste@digitalnode.com"},{"name":"bojanataseva","email":"bojana@digitalnode.com"}],"dist":{"shasum":"d117464f802c2495b9495affcade30ea67e13adb","tarball":"https://registry.npmjs.org/@digitalnodecom/node-red-contrib-netsuiteauth/-/node-red-contrib-netsuiteauth-1.0.4.tgz","fileCount":14,"integrity":"sha512-sHxTGsl5wyvMaEePrqPg6CZVgCW3ae3VOoA4KLAtVmuo+l5y9YJdHaAzaPkMt9X52qGGXTsYLErTQsSSAKA/Bg==","signatures":[{"sig":"MEUCIQDyI8WNLdL+wv6fRa+SVsFx5sYE15uwwpJLd79FE1mLtwIgJcjXvUfCBCzxHKf2cyUSyuNteCpZtaE/XWy4r5XpfTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66491},"_npmUser":{"name":"bojanataseva","email":"bojana@digitalnode.com"},"node-red":{"nodes":{"netsuite-oauth-config":"netsuite-oauth-config.js","netsuite-REST-API-Request":"netsuite-rest-api-request.js","netsuite-SuiteQl-API-Request":"netsuite-suiteql-api-request.js"}},"repository":{"url":"https://github.com/digitalnodecom/node-red-contrib-netsuite","type":"git"},"description":"A custom Node-RED node for NetSuite OAuth 1.0","directories":{},"dependencies":{"axios":"^1.7.9","oauth-1.0a":"^2.2.6","node-red-contrib-netsuite":"^0.1.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/node-red-contrib-netsuiteauth_1.0.4_1745958722093_0.1817218666687792","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-03-10T18:55:21.020Z","modified":"2026-01-13T22:17:41.759Z","1.0.1":"2025-03-10T18:55:21.367Z","1.0.2":"2025-04-09T20:00:33.543Z","1.0.3":"2025-04-29T20:00:09.568Z","1.0.4":"2025-04-29T20:32:02.271Z"},"keywords":["node-red","netsuite","oauth","suiteql"],"repository":{"url":"https://github.com/digitalnodecom/node-red-contrib-netsuite","type":"git"},"description":"A custom Node-RED node for NetSuite OAuth 1.0","maintainers":[{"email":"trajche@kralev.eu","name":"trajcheee"},{"email":"simon@digitalnode.com","name":"simonanastasov"}],"readme":"# Node-RED NetSuite Integration\n\nA collection of Node-RED nodes to interact with NetSuite using OAuth 1.0 authentication and the REST API.\n\n## Features\n\n- OAuth 1.0 authentication configuration for NetSuite\n- REST API requests to NetSuite records\n- SuiteQL API requests for advanced querying\n\n## Prerequisites\n\n- Node-RED installed and running\n- NetSuite account with REST Web Services enabled\n- NetSuite Integration Record with OAuth 1.0 credentials\n\n## Nodes\n\n### NetSuite OAuth Config\n\nThis configuration node stores NetSuite OAuth 1.0 credentials required for authenticating with the NetSuite REST API.\n\n#### Configuration\n\n| Parameter | Description |\n|-----------|-------------|\n| Name | A name for this configuration |\n| Consumer Key | OAuth Consumer Key from NetSuite Integration Record |\n| Consumer Secret | OAuth Consumer Secret from NetSuite Integration Record |\n| Token | OAuth Token from NetSuite Integration Record |\n| Token Secret | OAuth Token Secret from NetSuite Integration Record |\n| OAuth Realm | NetSuite Account ID (e.g., 888063_SB1) |\n\n#### Setup\n\n1. In Node-RED, add a new \"NetSuite OAuth Config\" node\n2. Enter your NetSuite OAuth credentials\n3. Click \"Add\" to save the configuration\n\nThis shared configuration can be used by other NetSuite nodes in your flows.\n\n### NetSuite REST API Request\n\nThis node allows you to perform CRUD operations against NetSuite records using the REST API.\n\n#### Configuration\n\n| Parameter | Description |\n|-----------|-------------|\n| Name | A name for this node |\n| OAuth Config | Select your NetSuite OAuth configuration |\n| HTTP Method | Select GET, POST, PUT, PATCH, or DELETE |\n| URL | Base URL for the NetSuite REST API (https://[accountid].suitetalk.api.netsuite.com/services/rest/record/v1) |\n| NetSuite Object | Select the NetSuite record type to interact with (e.g., customer, invoice, etc.) |\n| Limit | Maximum number of records to return (for GET requests) |\n| Offset | Starting offset for pagination (for GET requests) |\n| ID of the object | Internal ID of the record (for GET, PATCH, DELETE operations) |\n| External ID of the object | External ID of the record (for PUT operations) |\n| Body | JSON body for POST, PUT, and PATCH operations |\n\n#### Input\n\nThe node can be configured either through the node configuration or dynamically via `msg` properties:\n\n- `msg.payload.url` - Overrides the configured URL\n- `msg.payload.method` - Overrides the configured HTTP method\n- `msg.payload.netsuiteobject` - Overrides the configured NetSuite object\n- `msg.payload.limit` - Overrides the configured limit\n- `msg.payload.offset` - Overrides the configured offset\n- `msg.payload.objectid` - Overrides the configured internal ID\n- `msg.payload.objectexternalid` - Overrides the configured external ID\n- `msg.payload.bodyNetsuite` - Overrides the configured body\n\n#### Output\n\n- `msg.payload.data` - Contains the response data from NetSuite\n- `msg.payload.headers` - Contains the response headers\n- `msg.payload.statusCode` - Contains the HTTP status code\n- `msg.error` - Contains error details if the request fails\n\n#### HTTP Method Usage\n\n- **GET**: Retrieve records. Use with limit/offset for lists or objectid for single records\n- **POST**: Create new records. Requires a valid JSON body\n- **PUT**: Update records with external ID. Requires both objectexternalid and a valid JSON body\n- **PATCH**: Update specific fields of a record. Requires objectid and a valid JSON body\n- **DELETE**: Delete a record. Requires objectid\n\n\n\n### NetSuite SuiteQL API Request\n\nThis node allows you to run SuiteQL queries against the NetSuite API.\n\n#### Configuration\n\n| Parameter | Description |\n|-----------|-------------|\n| OAuth Config | Select your NetSuite OAuth configuration |\n| URL | The SuiteQL endpoint URL (https://[accountid].suitetalk.api.netsuite.com/services/rest/query/v1/suiteql) |\n| Body | The SuiteQL query body in JSON format |\n\n#### Input\n\nThe node can be configured either through the node configuration or dynamically via `msg` properties:\n\n- `msg.url` - Overrides the configured URL (optional)\n- `msg.payload.body` - Overrides the configured body (optional)\n\n#### Output\n\n- `msg.payload` - Contains the response data from NetSuite\n- `msg.error` - Contains error details if the request fails\n\n#### SuiteQL Query Format\n\nSuiteQL queries should be formatted in the body as:\n\n{\n  \"q\": \"SELECT id, entityid FROM customer WHERE companyname LIKE 'A%'\"\n}\n\n\n\n\n## URL Structure\n\n- **REST API Base URL**: `https://[accountid].suitetalk.api.netsuite.com/services/rest/record/v1`\n- **SuiteQL API URL**: `https://[accountid].suitetalk.api.netsuite.com/services/rest/query/v1/suiteql`\n\nReplace `[accountid]` with your NetSuite account ID.\n\n## Error Handling\n\nBoth nodes include error handling that captures and reports NetSuite API errors:\n\n- NetSuite error details are included in the `msg.error` property\n- Error status is displayed in the node status indicator in the Node-RED editor\n- Detailed error information is logged to the Node-RED debug console\n\n## Dependencies\n\n- axios: For HTTP requests\n- crypto: For OAuth signature generation\n\n","readmeFilename":"README.md"}