NetSuite

Prev Next

ℹ️ API documentation

👉 https://elis.rossum.ai/svc/netsuite-v3/api/redoc

Installation

NetSuite service (integration) is provided by Rossum.ai in the form of webhook. To start using NetSuite (either imports or exports), follow these steps:

  1. Login to your Rossum account.

  2. Navigate to Extensions → My extensions.

  3. Click on Create extension.

  4. Fill the following fields:

    1. Name: NetSuite SB1: Import/Export

    2. Trigger events: Manual (later also Scheduled)

    3. Extension type: Webhook

    4. URL (see below)

    5. In "Advanced settings" select Token owner

  5. Click Create the webhook.

  6. Fill Configuration and Secrets fields (see Integration Configuration and Import configuration or Export configuration.

  7. (Optional) Disable retries for export webhooks (see: Considerations & Limitations)

  8. (Optional) Set hook secrets_schema value (see below)

Import endpoints

Export endpoints

Setting hook secrets_schema value

By default, all hooks have the following JSON schema of their secrets:

{
  "type": "object",
  "additionalProperties": { "type": "string" }
}

Consider changing it to the following value to clearly outline what values are supported:

{
  "type": "object",
  "properties": {
    "consumer_key": { "type": "string", "minLength": 1 },
    "consumer_secret": { "type": "string", "minLength": 1 },
    "token_key": { "type": "string", "minLength": 1 },
    "token_secret": { "type": "string", "minLength": 1 },
    "rossum_username": { "type": "string", "minLength": 1 },
    "rossum_password": { "type": "string", "minLength": 1 }
  },
  "additionalProperties": false
}

Probably the easiest way to achieve this is updating the hook configuration using prd tool.

System context diagram

Useful links

NetSuite main navigation can sometimes be very confusing as it is very customizable. Use the following paths to quickly access NetSuite resources:

Available configuration options

The following configuration options are available:

{
  // Determines whether or not NetSuite should run the configuration asynchronously. Typically,
  // imports are asynchronous (since they can take hours) and exports are synchronous (they should
  // take minutes).
  "run_async": true,

  "netsuite_settings": {
    // Case sensitive NetSuite account:
    "account": "XXX_SB1",

    // How many concurrent operations through API can run at the same time:
    "concurrency_limit": 4,

    "wsdl_url": "https://XXX-sb1.suitetalk.api.netsuite.com/wsdl/v2024_1_0/netsuite.wsdl",
    "service_url": "https://XXX-sb1.suitetalk.api.netsuite.com/services/NetSuitePort_2024_1",
    "service_binding_name": "{urn:platform_2024_1.webservices.netsuite.com}NetSuiteBinding"
  },

  // Configures imports (cannot be used together with `export_configs`):
  "import_configs": [
    {
      // Name of the dataset in Master Data Hub:
      "master_data_name": "NS_SB1_Currency_v1",

      // Optional configurations of the asynchronous behavior (makes sense only when
      // `run_async` is true):
      "async_settings": {
        "retries": 5,
        "max_run_time_s": 36000
      },

      // The actual payload of NetSuite request (closely follows NetSuite API docs):
      "payload": {
        "method_name": "getAll",
        "method_args": [
          {
            "_ns_type": "GetAllRecord",
            "recordType": "currency"
          }
        ],

        // Optional headers for NetSuite API request:
        "method_headers": {
          // NetSuite request-level search preferences (https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4170181850.html):
          "searchPreferences": {
            "pageSize": 100,
            "bodyFieldsOnly": false,
            "returnSearchColumns": false
          },

          // Other NetSuite request-level preferences (https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4170181850.html):
          "preferences": {
            "runServerSuiteScriptAndTriggerWorkflows": false
            // …
          }
        }
      }
    }
    // …
  ],

  // Configures exports (cannot be used together with `import_configs`):
  "export_configs": [
    // Same with `import_configs`
  ]
}