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 aNetSuiteClient
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 functionNetSuiteClient.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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file netsuitesdk-0.3.1.tar.gz
.
File metadata
- Download URL: netsuitesdk-0.3.1.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
4a3c71cc4508c91693f761df3d99c8abc66e6d31eab90ce28b059ea8cf0c0064
|
|
MD5 |
aafa79301ec71fd00f3203ff0c3be982
|
|
BLAKE2b-256 |
dcd1e8728ce16210123999e4a088a455f4ce64eb53e0a776895389aa82041c4f
|
File details
Details for the file netsuitesdk-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: netsuitesdk-0.3.1-py3-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
97ddf0cd36b0faadb65fa2096cd05037e878a8e03deae80419a7cf8ad626b370
|
|
MD5 |
71158f1eaf325dad32a173e55f7cae47
|
|
BLAKE2b-256 |
662f66a5f98ebfe4e63ba994a9cef2c3791cefe9bedf4c6024468cb879d75136
|