Deploy your first customer portal →
SuitePortal/NetSuite ORM

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:

ValueMethod
tbaToken-Based Authentication (OAuth 1.0a)
oauth2OAuth 2.0 Machine-to-Machine

If omitted, SuitePortal auto-detects based on which variables are present.

.env
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
VariableRequiredDescription
NETSUITE_ACCOUNT_IDYesNetSuite account ID
NETSUITE_CONSUMER_KEYYesFrom the integration record
NETSUITE_CONSUMER_SECRETYesFrom the integration record
NETSUITE_TOKEN_IDYesFrom the access token
NETSUITE_TOKEN_SECRETYesFrom the access token
.env
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-----
VariableRequiredDescription
NETSUITE_ACCOUNT_IDYesNetSuite account ID
NETSUITE_CLIENT_IDYesFrom the integration record
NETSUITE_CERTIFICATE_IDYesFrom the M2M certificate mapping
NETSUITE_PRIVATE_KEYYesPEM-encoded private key (newlines as \n)
NETSUITE_ALGORITHMNoJWT signing algorithm (default: ES256)
NETSUITE_SCOPESNoComma-separated scopes (default: restlets,rest_webservices)

Shared Optional Variables

VariableDefaultDescription
NETSUITE_TIMEOUT_MS30000Request 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 IDBase URLRealm
1234567https://1234567.suitetalk.api.netsuite.com1234567
1234567_SB1https://1234567-sb1.suitetalk.api.netsuite.com1234567_SB1

Config File

Optionally, create a suiteportal.config.ts in your project root:

suiteportal.config.ts
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.

OptionDefaultDescription
folder(all folders)File cabinet folder prefix to filter
fileTypes['JAVASCRIPT', 'JSON', 'PLAINTEXT', 'XMLDOC']NetSuite file types to include
batchSize20Files 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.

On this page