Open Source Engineering
Open-Source Go Library for NetSuite RESTlets
A Go library for calling NetSuite RESTlets with OAuth 1.0 (HMAC-SHA256) authentication — the canonical Go entry point for external services that need to integrate with NetSuite as a system of record.
- Role
- Author and maintainer
- Duration
- Ongoing
- Sector
- Open Source Engineering
What it is
go-netsuite-connector is a canonical Go library for calling NetSuite RESTlets. It implements the OAuth 1.0 with HMAC-SHA256 signature flow that NetSuite requires, exposes a clean RESTlet-call interface, and is released as open source under the github.com/nimbus-payments organization.
Why it exists
NetSuite remains the system of record for huge numbers of mid-market and enterprise businesses, but the surface area for talking to NetSuite from external code is — kindly — historical. OAuth 1.0 with manually-constructed signatures is the authentication mechanism, and most language ecosystems have at best one acceptable client and at worst three half-finished ones.
We built this library because we needed it. Our payments work, our shipping work, and our finance-management work all required Go services that could call into NetSuite reliably. We released it because the next team to need this should not have to write it again.
What it does
The library covers two principal concerns:
Authentication. Manual OAuth 1.0 with HMAC-SHA256 signing, specifically built to match NetSuite’s signature-base-string conventions (which differ in subtle ways from the OAuth 1.0 RFC). Token-Based Authentication is supported through the same code path.
RESTlet calls. A simple interface for invoking NetSuite RESTlets with type-safe payloads. Responses follow a standard envelope — {success, payload, error, errorCode} — which means error handling does not branch on the shape of every response.
client, err := netsuite.NewClient(
netsuite.WithAccount("1234567"),
netsuite.WithConsumer(consumerKey, consumerSecret),
netsuite.WithToken(tokenID, tokenSecret),
netsuite.WithRESTletURL(restletURL),
)
Same design principles as the FCC connector: functional options for configuration, context support throughout, zero external dependencies, exhaustive godoc.
What it represents
This and go-fcc-connector are the public artifacts of how we work. When a problem is solved well, that solution should be available — not held hostage to a specific client engagement.
What this looks like as a service
If you are integrating NetSuite from a Go service, the library is yours to use. If you need a custom NetSuite SuiteApp built, a SuiteScript bundle modernized, or external services orchestrated against NetSuite as a system of record — that is the engineering work we sell.
Have a system that needs this kind of work?
We take on a small number of engagements at a time. If your problem rhymes with what's above, get in touch.
Start a conversation