Calling Norce Commerce Query

Norce Commerce Query is an API based on OData V4. It is an API to fill the need for solutions integrated with Norce that need to fetch data from Norce's data layer directly.

Norce Commerce Query API Reference

You can find the reference documentation here.

Code examples

See our Postman collection with query examples here:

Read about how to use the postman examples.

Communication protocols

Norce Commerce Query uses ODdata v4 over REST.

Authentication and authorization

Norce Commerce Query uses OAuth2 for authentication. The credentials is created in the Admin UI, see Accessing API's with OAuth2 accounts for more information.

HTTPS is required for all calls to the API.

Status codes

The Norce Commerce Query uses the standard HTTP status codes.

Restrictions

Norce Commerce Query is read only, the functionality in the OData standard for writing data is disabled.

Components and tools

The OData standard is REST-ish and can be accessed directly from any browser or from code.

There are a number of different client-side components that you can use to access data from code for all possible environments and programming languages. We ourselves use internally Simple.OData.Client. Just google “OData client <language/environment>” to find something.

Namespaces

Norce Commerce Query has it's methods divided into different namespaces.

Namespace Description Cacheable
Core Core data in Norce Commerce.
This is master lists that is the same for all clients (tenants), like lists of Countries, Currencies, VatCodes, SalesAreas etc.
Cache for a longer time.
Application Application-specific data that does not belong directly in any of the other namespaces.
This is client and application specific master lists, for example suppliers, parametrics, categories, etc.
Cache for a longer time.
Customers Customers, companies and account management in Norce Commerce. Cache for a while.
Products Product, supplier products, prices, onhand information etc. Cache for a while.
Orders Orders, Baskets (Quotations), Invoices, Delivery notes etc. Cache for a while.
Reporting Data prepared for handling different types of reports. Sales information, and some legacy system reports. Cache for a while.
Shopping Planned recurring orders and delivery methods. Short cache time.

Common practices

Avoid lookups on every row

(Called the N+1 query problem) Fetch the lookup data as one larger list, and lookup information in memory for every item.

Use simple lookups

(Avoid complex joins) Since Norce Commerce Query lets solutions query directly to the Norce data layer the design and recommended practice is to avoid complex queries and instead split them up in several queries.

If, for example, the requirement is to get the name of the pricelist from the order item, you firstly fetch the orderrow and get the pricelist id. Next you lookup the pricelists from this id. Combine this with the next best practice (below) and keep the pricelists cached in memory to get good performance.

Use a longer Cache time

(Where it's appropriate) The recommended practice when using Norce Commerce Query is to have a smart caching strategy. Make sure to cache data from Application and Core namespace fairly long, since it will not change that often.

Postman examples

There are some good examples to try out, here.

Read about how to use out postman examples.

Suggested further reading