Skip to end of metadata
Go to start of metadata

Introduction

This page describes how to use NetSuite token-based authentication (TBA) by calling a RESTlet from an HTTP source or target in Jitterbit Harmony. This is demonstrated for each common HTTP method: GET, POST, PUT, and DELETE. Prior to configuring TBA in Jitterbit Harmony, see Jitterbit's recommendations for enabling TBA in NetSuite.

NOTE: Those using two-factor authentication (2FA or TFA) in NetSuite are required to use TBA with Jitterbit Harmony. Learn more in NetSuite 2018.2 Token-Based Authentication.

Calling a RESTlet from an HTTP source or target is one of several ways to use NetSuite TBA with Harmony. Other options include using the NetSuite Connector (recommended), using a web service method, or calling a RESTlet from a local file source:

While the NetSuite Connector is recommended, it may be preferred to use an HTTP source or target, a web service method, or a local file source in some cases, such as for existing integrations that are already designed in this way, or where certain features are not available with the connector. No matter the method you use, authenticating using TBA is available in all of these.

To use NetSuite TBA with an HTTP source or target, these steps are recommended, as covered on this page:

  1. Create the HTTP Source or Target
  2. Build the NetSuite RESTlet URL
  3. Generate the Authentication Header and Signature
  4. Use NetSuite TBA in an Operation
TIP: For purposes of this documentation, the steps on this page correspond with the sample Jitterpak NetSuite_TBA_for_RESTlets_Example (JPK).

Prerequisites

To use NetSuite TBA with an HTTP source or target in Jitterbit Harmony, these criteria must be met:

  1. You must have the appropriate permissions role on your NetSuite account.
  2. You must be using SuiteTalk version 2015.2 or higher.
  3. You must have TBA enabled for your NetSuite account.
  4. You must be using Jitterbit Harmony Design Studio version 8.24.2 or higher and Agent versions 8.24 or higher.

TIP: For additional information, refer to the NetSuite documentation on Getting Started with Token-based Authentication (login to NetSuite required).

Create the HTTP Source or Target

First, start with your HTTP source or target as normal. You may already have these set up if you are currently authenticating with NetSuite's REST API using single sign-on (SSO) rather than TBA. If so, some adjustments will be required in order to use TBA.

  1. Create an HTTP source or HTTP target, selecting the HTTP Verb appropriate to your use case. The sample Jitterpak includes examples using the common verbs GETPOSTPUT, and DELETE.
  2. During HTTP source or HTTP target configuration, in the URL field, provide a URL that is specific to the call you are making. In the sample Jitterpak, this URL is constructed in other parts of the project and created as a global variable called NS_RESTlet_URL that is covered in a later step. Leave the Login and Password fields blank, as you will be authenticating with TBA via the RESTlet URL by providing an authentication header.

  3. During HTTP source or HTTP target configuration, provide the authentication header for each request. This is what provides the signature and information about your NetSuite account, including TBA parameters, that will enable you to authenticate using TBA. To provide the header, for either a source or a target, expand the Options section and click Advanced Properties, then enter the header under Request Headers (one line per header). The sample Jitterpak uses a global variable called NS_REST_OAuth_Header that is created in another part of the project and is covered in a later step.

  4. If you are configuring an HTTP target, optionally set these fields under Options:
    • Content-Type: We recommend using a Content-Type of application/json for NetSuite calls.
    • Write response to (optional): We recommend writing the response received back from NetSuite to a global variable target. This setup is included in the sample Jitterpak, but is not covered in detail here as it is not required for the TBA setup.

Build the NetSuite RESTlet URL

Each NetSuite call must use a URL that is specific to the call you are making. This is the URL that is used in the URL field of the HTTP source or target configuration during Create the HTTP Source or Target.

For each NetSuite call, in Design Studio, create a new Jitterbit Script as a project item. Within each script, provide the following information. Example scripts for each common HTTP method are provided below.

  • Parameters: Each RESTlet has a script ID and a deployment ID that you obtain from the script deployment record in NetSuite. Note that a script can have more than one deployment. In the sample Jitterpak, the examples use the same RESTlet, so the script ID and deployment ID is the same for each method. The HTTP method should match that used for each specific call.
  • Data: The data should be built out specific to what needs to be sent in each specific call. The sample Jitterpak uses a dummy file format with five fields of data. This data is then used with the custom parameters, along with the NetSuite base URL for RESTlets, to construct a unique RESTlet URL. In the sample Jitterpak, this URL is written to a global variable called NS_RESTlet_URL.
NOTE: The NetSuite base URL for RESTlets will be in a format like
https://123456.restlets.api.netsuite.com/app/site/hosting/restlet.nl, where 123456 is the NetSuite account number. In the sample Jitterpak, the NetSuite base URL is defined in a project variable called NS_Base_URL_Restlet.
GET_Example_NS_TBA_RESTlet_Call-Build_URL
<trans>
// Parameters must start with "custparam"
$NS_Deployment_ID='1';
$NS_Script_ID='7';
$NS_HTTP_Method='GET';

// Build out the data the needs to be sent in the GET call
$field01='Example01';
$field02='Example02';
$field03='Example03';
$field04='Example04';
$field05='Example05';
$NS_RESTlet_URL=$NS_Base_URL_Restlet+'?script='+$NS_Script_ID+'&deploy='+$NS_Deployment_ID+'&custparamfield01='+$field01+'&custparamfield02='+$field02+'&custparamfield03='+$field03+'&custparamfield04='+$field04+'&custparamfield05='+$field05;

$data='';
$data+='custparamfield01='+$field01+'&';
$data+='custparamfield02='+$field02+'&';
$data+='custparamfield03='+$field03+'&';
$data+='custparamfield04='+$field04+'&';
$data+='custparamfield05='+$field05+'&';
</trans>
POST_Example_NS_TBA_RESTlet_Call-Build_URL
<trans>
// Parameters must start with "custparam"
$NS_Deployment_ID='1';
$NS_Script_ID='7';
$NS_HTTP_Method='POST';

// Build out the data the needs to be sent in the GET call
$field01='Example01';
$field02='Example02';
$field03='Example03';
$field04='Example04';
$field05='Example05';
$NS_RESTlet_URL=$NS_Base_URL_Restlet+'?script='+$NS_Script_ID+'&deploy='+$NS_Deployment_ID+'&custparamfield01='+$field01+'&custparamfield02='+$field02+'&custparamfield03='+$field03+'&custparamfield04='+$field04+'&custparamfield05='+$field05;

$data='';
$data+='custparamfield01='+$field01+'&';
$data+='custparamfield02='+$field02+'&';
$data+='custparamfield03='+$field03+'&';
$data+='custparamfield04='+$field04+'&';
$data+='custparamfield05='+$field05+'&';
</trans>
PUT_Example_NS_TBA_RESTlet_Call-Build_URL
<trans>
// Parameters must start with "custparam"
$NS_Deployment_ID='1';
$NS_Script_ID='7';
$NS_HTTP_Method='PUT';

// Build out the data the needs to be sent in the GET call
$field01='Example01';
$field02='Example02';
$field03='Example03';
$field04='Example04';
$field05='Example05';
$NS_RESTlet_URL=$NS_Base_URL_Restlet+'?script='+$NS_Script_ID+'&deploy='+$NS_Deployment_ID+'&custparamfield01='+$field01+'&custparamfield02='+$field02+'&custparamfield03='+$field03+'&custparamfield04='+$field04+'&custparamfield05='+$field05;

$data='';
$data+='custparamfield01='+$field01+'&';
$data+='custparamfield02='+$field02+'&';
$data+='custparamfield03='+$field03+'&';
$data+='custparamfield04='+$field04+'&';
$data+='custparamfield05='+$field05+'&';
</trans>
DELETE_Example_NS_TBA_RESTlet_Call-Build_URL
<trans>
// Parameters must start with "custparam"
$NS_Deployment_ID='1';
$NS_Script_ID='7';
$NS_HTTP_Method='DELETE';

// Build out the data the needs to be sent in the GET call
$field01='Example01';
$field02='Example02';
$field03='Example03';
$field04='Example04';
$field05='Example05';
$NS_RESTlet_URL=$NS_Base_URL_Restlet+'?script='+$NS_Script_ID+'&deploy='+$NS_Deployment_ID+'&custparamfield01='+$field01+'&custparamfield02='+$field02+'&custparamfield03='+$field03+'&custparamfield04='+$field04+'&custparamfield05='+$field05;

$data='';
$data+='custparamfield01='+$field01+'&';
$data+='custparamfield02='+$field02+'&';
$data+='custparamfield03='+$field03+'&';
$data+='custparamfield04='+$field04+'&';
$data+='custparamfield05='+$field05+'&';
</trans>

Generate the Authentication Header and Signature

Each NetSuite call must include an authentication header including your NetSuite account information, TBA parameters, and signature. This is used in the request header specified under Request Headers (one line per header) of the HTTP source or target configuration during Create the HTTP Source or Target. In addition, the NetSuite signature must be generated in the appropriate format to be used within the authentication header.

NOTE: These scripts are able to be reused for each NetSuite call, but note that you must execute them each time in order to generate the header and signature.
  1. In Design Studio, create a new Jitterbit Script as a project item.
  2. Expand the code below and paste the contents into the Jitterbit Script. In the sample Jitterpak, this script is named Common_NS_TBA_RESTlet_Call-Build-Signature. Note that this script also calls a JavaScript used to generate the signature in the next steps.

    NOTE: This script uses several project variables that are predefined in the sample Jitterpak to set the values needed for TBA, and provide the base URL used for the RESTlet call. Use these variables or provide values directly as obtained while enabling TBA in NetSuite.
    Common_NS_TBA_RESTlet_Call-Build_Signature
    <trans>
    $signatureMethod='HMAC-SHA1';
    $nonce=Guid();
    $timestamp=Int(Now());
    $OAuth_Version='1.0';
    
    $data+='deploy='+$NS_Deployment_ID+'&';
    $data+='oauth_consumer_key='+$NS_consumerKey +'&';
    $data+='oauth_nonce='+$nonce+'&';
    $data+='oauth_signature_method='+$signatureMethod+ '&';
    $data+='oauth_timestamp='+$timestamp+'&';
    $data+='oauth_token='+ $NS_tokenKey+'&';
    $data+='oauth_version='+$OAuth_Version+'&';
    $data+='script='+$NS_Script_ID;
    
    $baseString=$NS_HTTP_Method+'&'+UrlEncode($NS_Base_URL_Restlet)+'&'+UrlEncode($data);
    
    $key=$NS_consumerSecret+'&'+$NS_tokenSecret;
    $signature='';
    RunScript("<TAG>Scripts/Common/JS-CryptoJS_v3.1.2</TAG>");
    
    $NS_REST_OAuth_Header='Authorization:OAuth oauth_signature="'+$signature+'",oauth_version="'+$OAuth_Version+'",oauth_nonce="'+$nonce+'",oauth_signature_method="'+$signatureMethod+'",oauth_consumer_key="'+$NS_consumerKey+'",oauth_token="'+$NS_tokenKey+'",oauth_timestamp="'+$timestamp+'",realm="'+$NS_Account+'"';
    
    WriteToOperationLog('$urlrestlet= '+$urlrestlet);
    WriteToOperationLog('$NS_HTTP_Method= '+$NS_HTTP_Method);
    WriteToOperationLog('script= '+$NS_Script_ID);
    WriteToOperationLog('$data= '+$data);
    WriteToOperationLog('key= '+$key);
    WriteToOperationLog('basestring= '+$baseString );
    WriteToOperationLog("NetSuite TBA Signature= "+$signature);
    WriteToOperationLog("EPOCH Unix Timestamp= "+$timestamp_js);
    WriteToOperationLog("$NS_REST_OAuth_Header ="+$NS_REST_OAuth_Header);
    </trans>
  3. In Design Studio, create a new JavaScript as a project item. This JavaScript will use crypto standards to generate the NetSuite signature in HMAC-SHA1 format. The script must be JavaScript, not Jitterbit Script.
  4. Expand the code below and paste the contents into the JavaScript. In the sample Jitterpak, this script is named JS-CryptoJS_v3.1.2.

    JS-CryptoJS_v3.1.2
     /*
            CryptoJS v3.1.2
            code.google.com/p/crypto-js
            (c) 2009-2013 by Jeff Mott. All rights reserved.
            code.google.com/p/crypto-js/wiki/License
            */
           var CryptoJS=CryptoJS||function(g,l){var e={},d=e.lib={},m=function(){},k=d.Base={extend:function(a){m.prototype=this;var c=new m;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},
           p=d.WordArray=k.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=l?c:4*a.length},toString:function(a){return(a||n).stringify(this)},concat:function(a){var c=this.words,q=a.words,f=this.sigBytes;a=a.sigBytes;this.clamp();if(f%4)for(var b=0;b<a;b++)c[f+b>>>2]|=(q[b>>>2]>>>24-8*(b%4)&255)<<24-8*((f+b)%4);else if(65535<q.length)for(b=0;b<a;b+=4)c[f+b>>>2]=q[b>>>2];else c.push.apply(c,q);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<<
           32-8*(c%4);a.length=g.ceil(c/4)},clone:function(){var a=k.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],b=0;b<a;b+=4)c.push(4294967296*g.random()|0);return new p.init(c,a)}}),b=e.enc={},n=b.Hex={stringify:function(a){var c=a.words;a=a.sigBytes;for(var b=[],f=0;f<a;f++){var d=c[f>>>2]>>>24-8*(f%4)&255;b.push((d>>>4).toString(16));b.push((d&15).toString(16))}return b.join("")},parse:function(a){for(var c=a.length,b=[],f=0;f<c;f+=2)b[f>>>3]|=parseInt(a.substr(f,
           2),16)<<24-4*(f%8);return new p.init(b,c/2)}},j=b.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var b=[],f=0;f<a;f++)b.push(String.fromCharCode(c[f>>>2]>>>24-8*(f%4)&255));return b.join("")},parse:function(a){for(var c=a.length,b=[],f=0;f<c;f++)b[f>>>2]|=(a.charCodeAt(f)&255)<<24-8*(f%4);return new p.init(b,c)}},h=b.Utf8={stringify:function(a){try{return decodeURIComponent(escape(j.stringify(a)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(a){return j.parse(unescape(encodeURIComponent(a)))}},
           r=d.BufferedBlockAlgorithm=k.extend({reset:function(){this._data=new p.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=h.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,b=c.words,f=c.sigBytes,d=this.blockSize,e=f/(4*d),e=a?g.ceil(e):g.max((e|0)-this._minBufferSize,0);a=e*d;f=g.min(4*a,f);if(a){for(var k=0;k<a;k+=d)this._doProcessBlock(b,k);k=b.splice(0,a);c.sigBytes-=f}return new p.init(k,f)},clone:function(){var a=k.clone.call(this);
           a._data=this._data.clone();return a},_minBufferSize:0});d.Hasher=r.extend({cfg:k.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){r.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,d){return(new a.init(d)).finalize(b)}},_createHmacHelper:function(a){return function(b,d){return(new s.HMAC.init(a,
           d)).finalize(b)}}});var s=e.algo={};return e}(Math);
           (function(){var g=CryptoJS,l=g.lib,e=l.WordArray,d=l.Hasher,m=[],l=g.algo.SHA1=d.extend({_doReset:function(){this._hash=new e.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(d,e){for(var b=this._hash.words,n=b[0],j=b[1],h=b[2],g=b[3],l=b[4],a=0;80>a;a++){if(16>a)m[a]=d[e+a]|0;else{var c=m[a-3]^m[a-8]^m[a-14]^m[a-16];m[a]=c<<1|c>>>31}c=(n<<5|n>>>27)+l+m[a];c=20>a?c+((j&h|~j&g)+1518500249):40>a?c+((j^h^g)+1859775393):60>a?c+((j&h|j&g|h&g)-1894007588):c+((j^h^
           g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2]+h|0;b[3]=b[3]+g|0;b[4]=b[4]+l|0},_doFinalize:function(){var d=this._data,e=d.words,b=8*this._nDataBytes,g=8*d.sigBytes;e[g>>>5]|=128<<24-g%32;e[(g+64>>>9<<4)+14]=Math.floor(b/4294967296);e[(g+64>>>9<<4)+15]=b;d.sigBytes=4*e.length;this._process();return this._hash},clone:function(){var e=d.clone.call(this);e._hash=this._hash.clone();return e}});g.SHA1=d._createHelper(l);g.HmacSHA1=d._createHmacHelper(l)})();
           (function(){var g=CryptoJS,l=g.enc.Utf8;g.algo.HMAC=g.lib.Base.extend({init:function(e,d){e=this._hasher=new e.init;"string"==typeof d&&(d=l.parse(d));var g=e.blockSize,k=4*g;d.sigBytes>k&&(d=e.finalize(d));d.clamp();for(var p=this._oKey=d.clone(),b=this._iKey=d.clone(),n=p.words,j=b.words,h=0;h<g;h++)n[h]^=1549556828,j[h]^=909522486;p.sigBytes=b.sigBytes=k;this.reset()},reset:function(){var e=this._hasher;e.reset();e.update(this._iKey)},update:function(e){this._hasher.update(e);return this},finalize:function(e){var d=
           this._hasher;e=d.finalize(e);d.reset();return d.finalize(this._oKey.clone().concat(e))}})})();
           
           /*
           CryptoJS v3.1.2
           code.google.com/p/crypto-js
           (c) 2009-2013 by Jeff Mott. All rights reserved.
           code.google.com/p/crypto-js/wiki/License
           */
           (function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a<f;a+=3)for(var d=(e[a>>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g<f;g++)b.push(c.charAt(d>>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d<
           e;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();
    
    
           function generateNonce() {
            var chars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
            var NONCE_LENGTH=20; // default to 20
            var result='';
            for (var i=NONCE_LENGTH; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
            return result;
        };
    
     var encodedData=encodeURIComponent($data);
     var completeData=$NS_HTTP_Method+'&'+ encodeURIComponent($NS_Base_URL_Restlet)+'&'+ encodedData
     var hmacsha1Data=CryptoJS.HmacSHA1(completeData,$NS_consumerSecret+'&'+$NS_tokenSecret);
     var base64EncodeData=CryptoJS.enc.Base64.stringify(hmacsha1Data);
    $signature=encodeURIComponent(base64EncodeData);

Use NetSuite TBA in an Operation

With all required scripts, project variables, and global variables created or updated in previous steps, you are now ready to put all the pieces together in an operation that authenticates with NetSuite via a RESTlet call using the authentication header. An example operation that uses each common HTTP method is provided below. Each is also included in the sample Jitterpak.

GET

  1. Create a transformation operation using the HTTP GET source created during Create the HTTP Source or Target.
  2. In the operation, right-click on the HTTP GET source and select Insert Before This > Script, and replace the placeholder script with the script that generates the authentication header and signature (Common_NS_TBA_RESTlet_Call-Build_Signature). This script was created during Generate the Authentication Header and Signature.
  3. In the operation, right-click on the script you just added and again select Insert Before This > Script, and replace the placeholder script with the script that is specific to your HTTP method that builds the NetSuite RESTlet URL (GET_Example_NS_TBA_RESTlet_Call-Build_URL). This script was created during Build the NetSuite RESTlet URL.
  4. In the operation, double-click on the transformation placeholder. Use whatever target is appropriate for your use case, completing the mapping as usual. The sample Jitterpak demonstrates a simple mapping and writes the response for each field to the operation log.
  5. In the operation, optionally right-click on the target and select Remove From Graph, as the target is not being used in this operation. Depending on your use case, you could choose to write the response to a target that you configure and use here.

POST

  1. Create a transformation operation using the HTTP POST target created during Create the HTTP Source or Target.
  2. In the operation, double-click on the source placeholder and replace with the configured source that is appropriate for your use case. The sample Jitterpak uses a global variable source called Common.Example.Source for purposes of this example.
  3. In the operation, right-click on the source and select Insert Before This > Script, and replace the placeholder script with the script that generates the authentication header and signature (Common_NS_TBA_RESTlet_Call-Build_Signature). This script was created during Generate the Authentication Header and Signature.
  4. In the operation, right-click on the script you just added and again select Insert Before This > Script, and replace the placeholder script with the script that is specific to your HTTP method that builds the NetSuite RESTlet URL (POST_Example_NS_TBA_RESTlet_Call-Build_URL). This script was created during Build the NetSuite RESTlet URL.
  5. In the operation, double-click on the transformation placeholder. Use whatever target is appropriate for your use case, completing the mapping as usual. The sample Jitterpak demonstrates a simple mapping.
  6. In the operation, optionally right-click on the target and select Insert After This > Script. The sample Jitterpak demonstrates using an additional script (POST_Example_NS_TBA_RESTlet_Response-Output) that writes the response received back from NetSuite to the operation log.

PUT

  1. Create a transformation operation using the HTTP PUT target created during Create the HTTP Source or Target.
  2. In the operation, double-click on the source placeholder and replace with the configured source that is appropriate for your use case. The sample Jitterpak uses a global variable source called Common.Example.Source for purposes of this example.
  3. In the operation, right-click on the source and select Insert Before This > Script, and replace the placeholder script with the script that generates the authentication header and signature (Common_NS_TBA_RESTlet_Call-Build_Signature). This script was created during Generate the Authentication Header and Signature.
  4. In the operation, right-click on the script you just added and again select Insert Before This > Script, and replace the placeholder script with the script that is specific to your HTTP method that builds the NetSuite RESTlet URL (PUT_Example_NS_TBA_RESTlet_Call-Build_URL). This script was created during Build the NetSuite RESTlet URL.
  5. In the operation, double-click on the transformation placeholder. Use whatever target is appropriate for your use case, completing the mapping as usual. The sample Jitterpak demonstrates a simple mapping.
  6. In the operation, optionally right-click on the target and select Insert After This > Script. The sample Jitterpak demonstrates using an additional script (PUT_Example_NS_TBA_RESTlet_Response-Output) that writes the response received back from NetSuite to the operation log.

DELETE

  1. Create a transformation operation using the HTTP DELETE target created during Create the HTTP Source or Target.
  2. In the operation, double-click on the source placeholder and replace with the configured source that is appropriate for your use case. The sample Jitterpak uses a global variable source called Common.Example.Source for purposes of this example.
  3. In the operation, right-click on the source and select Insert Before This > Script, and replace the placeholder script with the script that generates the authentication header and signature (Common_NS_TBA_RESTlet_Call-Build_Signature). This script was created during Generate the Authentication Header and Signature.
  4. In the operation, right-click on the script you just added and again select Insert Before This > Script, and replace the placeholder script with the script that is specific to your HTTP method that builds the NetSuite RESTlet URL (DELETE_Example_NS_TBA_RESTlet_Call-Build_URL). This script was created during Build the NetSuite RESTlet URL.
  5. In the operation, double-click on the transformation placeholder. Use whatever target is appropriate for your use case, completing the mapping as usual. The sample Jitterpak demonstrates a simple mapping.
  6. In the operation, optionally right-click on the target and select Insert After This > Script. The sample Jitterpak demonstrates using an additional script (DELETE_Example_NS_TBA_RESTlet_Response-Output) that writes the response received back from NetSuite to the operation log.
On This Page

Last updated:  Oct 26, 2018