Skip to main content

Python SDK for accessing the NetSuite SOAP webservice

Project description

netsuite-sdk-py

Netsuite-sdk-py is a Python SDK using the SOAP client library zeep(https://python-zeep.readthedocs.io/en/master/) for accessing NetSuite resources via the NetSuite SOAP web service SuiteTalk(http://www.netsuite.com/portal/platform/developer/suitetalk.shtml).

Installation

$ pip install netsuitesdk 

Remark: This python NetSuite SDK uses the SOAP/WSDL library Zeep which should automatically be installed when running above pip-command. Otherwise you can run $ pip install zeep first.

Get Started

There are the following options to access a NetSuite account via web services:

  • Either pass credentials (email, password, role and account Id) via login and start a request session
  • Pass credentials in the header of each request
  • Use token based authentication (within each request)

Login with credentials

The following code performs a login to a NetSuite account and starts a web service session.

from netsuitesdk import NetSuiteClient

# Initialize the NetSuite client instance by passing the application Id
# which will be passed to the request header in the login operation.
ns = NetSuiteClient(caching='sqlite', debug=True)

passport = ns.create_passport(email=NS_EMAIL,
                              password=NS_PASSWORD,
                              role=NS_ROLE,
                              account=NS_ACCOUNT)

# Authenticate the user and start a new webservice session in NetSuite
ns.login(app_id=NS_APPID, passport=passport)

# Make requests. All requests done in this session will be identified
# with the application Id passed to the login operation

ns.logout()

To avoid storing the credentials in the python source code file, one can use python-dotenv ($ pip install python-dotenv) to load authentication credentials from a .env-file as environment variables. The .env-file would look something like this:

NS_EMAIL = '*****@example.com'
NS_PASSWORD = '*******'
NS_ROLE = '1047'
NS_ACCOUNT = '*********'
NS_APPID = '********-****-****-****-************'

and the variables could be loaded as follows:

import os
from dotenv import load_dotenv

load_dotenv()
NS_EMAIL = os.getenv("NS_EMAIL")
NS_PASSWORD = os.getenv("NS_PASSWORD")
NS_ROLE = os.getenv("NS_ROLE")
NS_ACCOUNT = os.getenv("NS_ACCOUNT")
NS_APPID = os.getenv("NS_APPID")

Remarks and possible errors regarding authentication

Note: NetSuite requires two-factor authentication (2FA) for all Administrator and other highly privileged roles in all NetSuite accounts. Instead, you can login with a non-highly privileged role or use token based authentication (TBA) with your requests. For TBA, see below.

If login fails, a NetSuiteLoginError is thrown.

For more information about NetSuite authentication, see: (https://docs.oracle.com/cloud/latest/netsuitecs_gs/NSATH/NSATH.pdf)

Passing credentials with requests

tba

Token based authentication

tba

Get Request

A basic example (ns is a reference to a NetSuiteClient instance):

vendor = ns.get('vendor', internalId=ref.internalId)
ns.print_values(vendor)

Search

To perform a search request, use NetSuite.search. The SDK provides some utility functions/classes:

  • basic_stringfield_search: A basic example (ns is a reference to a NetSuiteClient instance):
records = ns.basic_stringfield_search(type_name='Vendor',
                                attribute='entityId',
                                value='Alexander Valley Vineyards',
                                operator='is')
print(records[0].internalId)
  • PaginatedSearch (in utils.py): Its usage can be seen inside the utility function NetSuiteClient.paginated_search

Upsert

Basic example(ns is a reference to a NetSuiteClient instance):

vendor = ns.Vendor()
vendor.externalId = 'test_vendor'
vendor.companyName = 'Another Test Inc.'
ref = ns.upsert(record=vendor)

UpsertList

Basic example(ns is a reference to a NetSuiteClient instance):

customer1 = ns.Customer(externalId='customer', email='test1@example.com')
customer2 = ns.Customer(externalId='another_customer', email='test2@example.com')
ns.upsertList(records=[customer1, customer2])

Documentation

Documentation can be found in the docs/_build/html folder (open index.html) and soon in readthedocs. For contributors: to build the documentation (cd to /docs and) run make buildapi as well as make html

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

netsuitesdk-0.3.2.tar.gz (14.1 kB view hashes)

Uploaded Source

Built Distribution

netsuitesdk-0.3.2-py3-none-any.whl (14.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page