Configuration
Configure your NetSuite connection and SuitePortal options.
Environment Variables
SuitePortal reads credentials from a .env file in your project root. The variables depend on your authentication method.
Auth Type
Set NETSUITE_AUTH_TYPE to choose your authentication method:
| Value | Method |
|---|---|
tba | Token-Based Authentication (OAuth 1.0a) |
oauth2 | OAuth 2.0 Machine-to-Machine |
If omitted, SuitePortal auto-detects based on which variables are present.
NETSUITE_AUTH_TYPE=tba
NETSUITE_ACCOUNT_ID=1234567_SB1
NETSUITE_CONSUMER_KEY=your_consumer_key
NETSUITE_CONSUMER_SECRET=your_consumer_secret
NETSUITE_TOKEN_ID=your_token_id
NETSUITE_TOKEN_SECRET=your_token_secret| Variable | Required | Description |
|---|---|---|
NETSUITE_ACCOUNT_ID | Yes | NetSuite account ID |
NETSUITE_CONSUMER_KEY | Yes | From the integration record |
NETSUITE_CONSUMER_SECRET | Yes | From the integration record |
NETSUITE_TOKEN_ID | Yes | From the access token |
NETSUITE_TOKEN_SECRET | Yes | From the access token |
NETSUITE_AUTH_TYPE=oauth2
NETSUITE_ACCOUNT_ID=1234567_SB1
NETSUITE_CLIENT_ID=your_client_id
NETSUITE_CERTIFICATE_ID=your_certificate_id
NETSUITE_PRIVATE_KEY=-----BEGIN EC PRIVATE KEY-----\n...\n-----END EC PRIVATE KEY-----| Variable | Required | Description |
|---|---|---|
NETSUITE_ACCOUNT_ID | Yes | NetSuite account ID |
NETSUITE_CLIENT_ID | Yes | From the integration record |
NETSUITE_CERTIFICATE_ID | Yes | From the M2M certificate mapping |
NETSUITE_PRIVATE_KEY | Yes | PEM-encoded private key (newlines as \n) |
NETSUITE_ALGORITHM | No | JWT signing algorithm (default: ES256) |
NETSUITE_SCOPES | No | Comma-separated scopes (default: restlets,rest_webservices) |
Shared Optional Variables
| Variable | Default | Description |
|---|---|---|
NETSUITE_TIMEOUT_MS | 30000 | Request timeout in milliseconds |
Never commit your .env file. Add it to .gitignore.
Account ID Format
SuitePortal automatically derives the correct API base URL and realm from your account ID:
| Account ID | Base URL | Realm |
|---|---|---|
1234567 | https://1234567.suitetalk.api.netsuite.com | 1234567 |
1234567_SB1 | https://1234567-sb1.suitetalk.api.netsuite.com | 1234567_SB1 |
Config File
Optionally, create a suiteportal.config.ts in your project root:
export default {
// Only introspect specific record types (omit for all)
recordTypes: ['customer', 'salesorder', 'invoice'],
// Output directory for schema files (default: '.suiteportal')
outputDir: '.suiteportal',
// Fetch detailed field metadata per record (default: true)
fetchDetails: true,
// Include custom records discovered via SuiteQL (default: true)
includeCustomRecords: true,
// File cabinet pull settings (used by `suiteportal pull`).
// Requires SuiteCloud CLI: npm install -g @oracle/suitecloud-cli
// pull: {
// projectDir: './sdf-project',
// folder: 'SuiteScripts',
// fileTypes: ['JAVASCRIPT', 'JSON', 'PLAINTEXT', 'XMLDOC'],
// batchSize: 20,
// },
};All options are optional — SuitePortal works with sensible defaults.
Pull Options
The pull key configures the suiteportal pull command for downloading file cabinet files. Requires the SuiteCloud CLI to be installed and authenticated.
| Option | Default | Description |
|---|---|---|
folder | (all folders) | File cabinet folder prefix to filter |
fileTypes | ['JAVASCRIPT', 'JSON', 'PLAINTEXT', 'XMLDOC'] | NetSuite file types to include |
batchSize | 20 | Files per suitecloud file:import call |
projectDir | .suiteportal/sdf/ (auto-scaffolded) | Path to an existing SuiteCloud project |
NetSuite Setup
See the full NetSuite Setup guide for step-by-step instructions on enabling features and configuring credentials for either auth method.