@fye/netsuite-rest-api
Version:
NetSuite Rest API Client
128 lines (102 loc) • 3.23 kB
Markdown
# Nestuite Rest API v2
A wrapper to make REST API request to Netsuite.
### Notable Changes
- Netsuite configuration paramaters are no longer pulled from `process.env`. They need to be passed in.
- Body will now returned as parsed object rather than a JSON string
## Required Config values
```js
{
netsuiteApiHost: 'netsuite host',
consumerKey: 'netsuite consumer key',
consumerSecret: 'nesuite consumer secret',
netsuiteAccountId: 'netsuite account id',
netsuiteTokenKey: 'netsuite token key',
netsuiteTokenSecret: 'netsuite token secret',
}
```
## Other gotchas
- Query parameters must be passed in with path. This may be changed at a future time just not now.
- `requestType` must be either `suiteql`, `workbook` or `record`
## Available convenience values
- `suitesqlPath = services/rest/query/v1/suiteql`
- `workbookPath = services/rest/query/v1/workbook`
- `salesOrderPath = services/rest/record/v1/salesOrder`
- `purchaseOrderPath = services/rest/record/v1/purchaseOrder`
- `cashSalePath = services/rest/record/v1/cashSale`
- `expandAbleSubResourcesQueryParam = expandSubResources=true`
## Examples
#### Get Request
```js
const { makeRequest, expandAbleSubResourcesQueryParam, suitesqlPath } = require('@fye/netsuite-rest-api');
async () => {
const config = {
netsuiteApiHost: 'netsuite host',
consumerKey: 'netsuite consumer key',
consumerSecret: 'nesuite consumer secret',
netsuiteAccountId: 'netsuite account id',
netsuiteTokenKey: 'netsuite token key',
netsuiteTokenSecret: 'netsuite token secret',
};
const requestData = {
method: 'GET',
requestType: 'record',
path: `${s}/1234?${expandAbleSubResourcesQueryParam}`,
};
const response = await makeRequest(config, requestData);
};
```
#### Update/Patch Request
```js
const { makeRequest } = require('@fye/netsuite-rest-api');
( async () => {
const config = {...};
const requestData = {
method: 'PATCH',
requestType: 'record',
path: 'salesorder/1234',
query: { foo: 'bar' },
}
const response = await makeRequest(config, requestData)
})
```
#### Suitesql Request
```js
const { makeRequest } = require('@fye/netsuite-rest-api');
( async () => {
const config = {...};
const requestData = {
method: 'POST',
requestType: 'suitesql',
query: 'select foo from bar;',
}
const response = await makeRequest(config, requestData)
})
```
#### Suitesql Request with next URL
```js
const { makeRequest } = require('@fye/netsuite-rest-api');
( async () => {
const config = {...};
const requestData = {
method: 'POST',
requestType: 'suitesql',
query: 'select foo from bar;',
nextUrl: 'https://endpoint.com/services/rest/query/v1/suiteql?limit=10&offset=10'
}
const response = await makeRequest(config, requestData)
})
```
#### Workbook Request with next URL
```js
const { makeRequest } = require('@fye/netsuite-rest-api');
( async () => {
const config = {...};
const requestData = {
method: 'POST',
requestType: 'workbook',
query: 'workbook999',
nextUrl: 'https://endpoint.com/services/rest/query/v1/workbook/workbook999/result?limit=10&offset=10'
}
const response = await makeRequest(config, requestData)
})
```