When connecting to NetSuite programmatically, there are two methods to access the web services APIs - SOAP XML and REST. Collectively, NetSuite refers to these web services offerings as "SuiteTalk".
This post explores both methods.
SOAP stands for Simple Access Object Protocol. Don't let the name fool you. "Simple" is a misnomer. SOAP XML is a complex and highly detailed, standardized method for system-to-system communication via Extensible Markup Language (XML). It uses a service definition file called a WSDL (Web Services Description Language), which lays out the specifics of every function a web service provides and defines the structures of the data to be sent and received by the web service.
The WSDL itself can be a complicated document to read and understand, so making use of it and a SOAP-based web service requires some "middleware" to make using the web service easier and more friendly.
To give you an idea of the complexity of SOAP and NetSuite's implementation of the SOAP protocol, take a look at the current NetSuite WSDL.
But don't misunderstand... The NetSuite SOAP web service is AWESOME, and has a very long track record of solid, highly tested and hardened service dating back over a decade.
REST is an acronym for REpresentational State Transfer. It's a bit easier to understand than the SOAP counterpart, and it's intuitive. For example, look at the following NetSuite UI URL:
It's immediately obvious we are looking at a salesorder, and its unique ID is 175150. Using RESTFul web services to retrieve data is very similar. Many computer programmers like using RESTFul APIs because of this intuitiveness. However, you must know that as of the time this article was last updated (September 20, 2021), the REST web serivces features in NetSuite are in BETA, and have not been released for general availability.
NetSuite Web Feature Comparison
Let's dig into the differences between the two web services options.
|CRUD Operations||Create, Read, Update, Delete||Create, Read, Update, Delete|
|Transformation Operations (Initialize)||Supported, General Aavailability||Supported, BETA for certain record types|
|SuiteQL Queries||Not Supported||Supported|
The point I want to make here is that both REST and SOAP/XML have full CRUD capabilities for most NetSuite data objects. However, there are key REST features that that are still considered BETA only. Some NetSuite clients cannot and will not implement BETA features, so use them knowing the underlying service may change unexpectedly in the future. Meanwhile, the SOAP/XML option for NetSuite web services has been released in a General Availability state for over a decade and has proven itself as stable and reliable.