This article provides details about NuORDER API.
Apiary
NuORDER's API documentation can be found at the link below:
https://nuorderapi1.docs.apiary.io/
Introduction
NuORDER offers integration between our cloud-based wholesale application and your ERP, PLM, or accounting system. When you integrate with NuORDER, the goal is to set up seamless communication between our two systems.
Ultimately we want you to make all your updates to product & customer information in your ERP and then have it sent to NuORDER with as little manual action as possible. On the other end, we want to eliminate any double entry of orders by sending them automatically back to your ERP.
Our integrations team will work with your team (and your ERP or third-party development team, if applicable) to set up the various API processes.
About API Automation
API integrated brands will need to connect to NuORDER via oAuth/Handshake. The integration will be initiated by the brand, and NuORDER will not be sending data out of the portal. The data will be retrieved and posted to NuORDER by the brand. NuORDER intends the brands ERP to be the source of all data, and NuORDER does not support being the initial source of product or customer data.
Each API connection is tied to a specific portal. If you have multiple portals, then the brand will need to connect to each portal with its own unique credentials. That means that if you are sending in products to multiple portals you will need to run a specific product feed to each portal using its own API credentials.
Click here to see how to establish your API connection
Implementation Overview
Cost
Please review any estimated integration costs with your ERP or development team prior to signing your NuORDER SOW for integration.
Rollout Steps & Timeline
Below is an overview of a sample rollout, with estimated timeframes for each phase as we work towards your target launch date. Meeting that deadline will depend on both sides — some steps will be our responsibility, and some will be yours. If any stage of the integration process takes longer than expected, we may need to adjust your launch timeline.
Integration Approaches
There are two project approaches when integrating with NuORDER. You Implementation Manager will assess which approach is best based on scoping, timeframes, and your resource availability.
Integration Led Approach
The integration led approach focuses on getting the integration implemented first. The automation is set in a sandbox environment, where it will be thoroughly tested before rolling out to the production portal. Your team will work with the implementation manager, as well as a product consultant, to set up the sandbox portal exactly how you would want the production portal. Any development resources needed will need to be available to work through the integration at the start of an integration led project. We will also work on training as we get closer to the go-live date. Once everything is approved, we would mimic this environment in the production portal and run the integration feeds.
Production Led Approach
The production led approach prioritizes getting the production portal ready for use with the fastest turnaround time. This approach is typically used for brands looking to use NuORDER for a quickly approaching market date. Another common reason for using this approach is that the development resources may not be ready yet.
A production led approach will have the brand work with a product consultant to manually populate the production portal with all of the needed data. This will not be automated, but we would work with you on the process to manage these feeds manually until the integration is implemented. There is also an emphasis on Training, so that your team is able to use NuORDER for general business once live.
Integration Steps
The project approach may alter the order of the sample steps listed below, but both approaches will have integration focused meetings up front. This allows us to build out the production portal to accommodate the integration needs, The goal is to avoid the need to alter live data or change processes post go-live. (Detailed Steps will be provided in the Welcome Packet provided by your Implementation Manager).
Typical Rollout Steps & Timeline
Below is an overview of a sample rollout, with estimated timeframes for each phase as we work towards your target launch date. Meeting that deadline will depend on both sides — some steps will be our responsibility, and some will be yours. If any stage of the integration process takes longer than expected, we may need to rethink your launch timeline.
Click here for the API documentation
DISCOVERY (est. 1-2 weeks)
-
NuORDER, Brand, & Developer will have an official "kickoff" call to confirm the requirements,plan, timeline, etc.
- If you have any special workflows, make sure to bring them up during this call!
- NuORDER will provide documentation for all data feeds based on the setup discussed.
-
NuORDER, Brand, & Developer will review NuORDER features & functionality in detail, including business rules & logic.
- Products, customers & inventory: Which fields from your ERP should be mapped into your NuORDER data? (This mapping template can be provided to your developer to use as a guide.)
- Order & account settings: What settings are required/supported by your ERP?
- NuORDER will create a sandbox environment to be used for development & testing, using the settings we have discussed.
BUILD (est. 4-8 weeks)
The timeframe for this phase is primarily dependent on the ability and availability of your development resources & internal team.
-
NuORDER & Developer will perform API OAuth handshake.
- NuORDER will provide consumer & secret API keys.
- Developer will initiate requests for authentication.
-
Developer & Brand will begin testing calls for product, customers, & inventory in the sandbox environment.
- Developer will build & test calls to push products, inventory, and customers.
- Brand or NuORDER will submit test orders.
- Developer will build & test calls to pull orders.
- Brand will validate that the orders look correct after they have been imported.
-
Brand will create a larger volume of test orders.
- Brand will place orders with a variety of scenarios, e.g. discounts, split deliveries, new customers.
- Brand & Developer will validate that the orders look correct after they have been imported.
- Developer will make adjustments to the order script if needed.
- Developer will send all active products, customers, & inventory data to the sandbox.
REVIEW (est. 2-4 weeks)
-
Brand team will need to review the sandbox and confirm that the overall lists are correct:
- Product data -- are all active products included in the sandbox that should be on NuORDER
- Customer data -- are all active customers included that should be on NuORDER?
- Inventory data -- are the quantities accurate?
-
Brand & Developer will test pushing updates to existing entries.
- Brand will update existing products & customers in the ERP
- Brand & Developer will review in the sandbox and confirm that the products & customer updates are reflecting correctly in NuORDER.
- Developer will make adjustments to the script if needed.
-
If your brand has already been using NuORDER via manual setup: NuORDER will work with Brand to make sure the data already in NuORDER will correctly sync up with the new data that will be coming in via the Integration.
- Product data: are the Seasons, Style Numbers, and Colors formatted the same way in both systems?
- Customer data: do the Customer Codes in NuORDER match the codes in the ERP?
- NuORDER & Brand will work through any updates that need to be made to existing data.
- Please note: if this step is needed, it will add a minimum of 2 weeks to your timeline.
LAUNCH (est. 1-2 weeks)
- NuORDER & Developer will move all product, customer & inventory data/feeds to the live production environment.
- Brand team will use the account to place orders (either in a real or testing scenario).
- Brand, Developer & NuORDER will closely review the account and data flow and work together to resolve any data questions/issues.
What Can Be Integrated
NuORDER supports integration of the following data:
- Product Data (ERP -> NuORDER)
- Customer Data (ERP -> NuORDER)
- Buyer Data (ERP -> NuORDER)
- Inventory/ATS (ERP -> NuORDER)
- Price Sheets (ERP -> NuORDER)
- Order Exports (NuORDER -> ERP)
- Order New/Edit (ERP -> NuORDER)
- Order Shipments (ERP -> NuORDER)
API Documentation and Connection
API Field Names
Click here to download the API Field Name Document
Callouts & Concurrency Flags:
-
The ‘External ID’ in the API calls refer to the Product ‘Brand ID’s; it’s important to note that all Products in the Integration will need a Brand ID.
-
NuORDER uses OAuth 1.0 as the authentication scheme.
- Limited to 5 Concurrent calls
- NuORDER uses fluent schemas for products, orders, and company. So these entities may contain custom fields in responses, and such fields could be updated in the request body.
API Connection to NuORDER
API Integrated Clients will need to connect to NuORDER via oAuth/Handshake.
-
In order to help facilitate the OAuth, the IC or ISD will help create unique tokens for the Client SB or Prod environment.
Tutorial on NuORDER's API Documentation in APIary:
Setting Up Postman (Optional)
Download Postman:
- Download Postman for free with this Link
What is PostMan and how we use it to test API calls to our Sandboxes
- Postman is an API Middleware that makes it easy for developers to create, share, test and document APIs. This is done by allowing users to create and save simple and complex HTTP/s requests, as well as read their responses.
- Not all brands use Postman. They can make direct API calls with a raw request, or choose to use a Middleware like Postman to better understand how to develop their calls. There are also different Middlewares that developers can use other than Postman (but Postman is easy to use and many developers know of it).
- Our internal Integration team can also download and use Postman to test/troubleshoot API calls to/from our Sandboxes while we can connect and test Flat File integrations via Filezilla.
- What is the API Handshake in laymen’s terms?
- OAuth is an open-standard authorization protocol or framework that provides applications the ability for “secure designated access.” OAuth doesn’t share password data but instead uses authorization tokens to prove an identity between consumers and service providers. OAuth is an authentication protocol that allows you to approve one application interacting with another on your behalf without giving away your password.
If you have identified your Brand will be integrating via API:
- Complete the OAuth via Postman and create the Tokens for them (either on your own, or submit an ISD case). Send this to them via a secure link or let them know they can view their new Tokens in the Portal under Admin>Settings>API Management>Approved Applications.
- Also give the client the most recently downloaded NuORDER Postman Collection link (below) so they have an API reference when testing.
The NuORDER Postman API Collection contains many of the endpoints that are listed in Apiary. These endpoints will allow clients to create a company, update products, etc.
- Postman Collection Import Link: https://www.getpostman.com/collections/febace5e86e368d15673
Step 1: Import NuORDER Collection via Import Link:
-
Open Postman
-
Select File > Import
-
An Import window will open, select Link
-
Paste Postman collection URL (https://www.getpostman.com/collections/febace5e86e368d15673)
-
Click Continue
-
Click Import
Step 2: Create NuORDER Environment in Postman:
- Select File > New
- From the Create New window, select ‘Environment’
- Use the client’s Brand Portal Name as the Postman Environment Name.
-
Add the following variables & Save:
-
env: This variable will be dependent on which NuO environment is being used.
-
Production: next
-
Sandbox: sandbox1
-
-
consumer_key
-
consumer_secret
-
token: When initially setting up the environment, leave this blank.
-
token_secret: When initially setting up the environment, leave this blank.
-
-
The consumer key, consumer secret, token, and token secret can be found in NuORDER API Management page (Brand Admin > Settings > API Management)
Step 3: OAuth Handshake:
- From the NuORDER API Collection, expand the Authentication folder
-
Open the GET auth request
-
Ensure the endpoint is https://{{env}}.nuorder.com/api/initiate
-
Select ‘Pre-request Script’
-
Update the application_name variable (line 10)
-
Hit Send (or use keyboard shortcut Cmd + return) (you must make sure you have selected the Environment you are trying to connect to)
-
See Below
-
On the NuORDER API Management page under Pending Application, click ‘Approve’ for the application created in Postman.
-
Copy the verification code from the pop-up
-
Paste the verification code into the Postman Pre-request Script (line 41)
-
Update the endpoint to https://{{env}}.nuorder.com/api/token
-
Send the request
In NuORDER, the credentials will be listed along with your application name
Note: Every time you try connecting to a different environment via your Postman, you may need to update the pre-req script to the correct brand name and the end point/request url to be /api/initiate.
Video Completing Postman Handshake steps:
NuORDER Signature and Authorization Header:
The client will still need to generate the OAuth signature and Authorization Header in order to successfully get and send data from their NuOrder portal. This script is built into the Postman Collection provided and can be used as a template if the client uses a different api middleware.
Apiary goes into more detail about how this script works.
Common Errors:
The following are some common errors:
- 400: The following required fields were not included
- The json body is missing a required field.
- Ensure all required fields are included in the the json body.
- 401: Token not Authorized
- Issue with the token in the Postman environment
- Double check Postman environment variables and confirm the consumer_key, consumer_secret, token, and token_secret values match up between Postman and the NuO portal.
- The permanent tokens may have not been generated or running the \token call before the \initiate call.
Recommended Endpoints per Feed:
Whilst there are a suite of potential connections that you can make through the NuORDER API, depending on your ERP’s features, you may find that you only need to use more common API calls in order to maintain your dataflows, therefore a list of connections are collated below making sure to highlight any methods and any callouts that are mentioned per Feed below.
*Note: - {{env}} on the endpoint is referring to the Production or Sandbox portal (“sandbox1” or “next”) identifiers.
The typical workflow for inbound data to NuORDER would be in order of:
- Product Data
- Pricesheet and Inventory Data
- Company Data
- Buyer Data
Orders Exports:
Description:
NuORDER has a standard order API format that is available to all users. It includes all style information, customer billing & shipping information, ship dates, and pricing. If we have set up any custom fields on your product, customer, or order schemas, these fields can easily be added to your default order API output.
When working with Brands who want to integrate Orders Exports, we suggest using the following Endpoints:
Method/Callouts:
We recommend extracting Orders using the Get Orders by Status API call, then once retrieved into the ERP, to use the Update Order Status by Order Number API call to in quick succession so that the same Order is not imported to your ERP more than once, for example;
- Pickup Orders on “Approved” status. (You may decide to pickup orders on an earlier status - “review” or “pending”, but only if you want to bypass the manual approval process in NuORDER).
- For the specific Orders that you picked up, to then change the status to “processed”.
Example API request/response:
GET https://{{env}}.nuorder.com/api/orders/approved/detail
[
{
"_id": "653bcecca649c722fcefdb53",
"split": false,
"buyer_submitted": false,
"easy_order_viewed": false,
"easy_order_ready": false,
"collaborative_draft": false,
"edited": false,
"payment_status": "Not Paid",
"is_drop_ship": false,
"__shipment_status": [],
"__uninitiated_order": false,
"__includes_cancelled": false,
"__cancelled_units": 0,
"__cancelled_total": 0,
"__is_rtp": false,
"order_tags": [],
"creator_name": "Reece Harrison",
"schema_id": "64e8a3876824926061525c31",
"line_items": [
{
"product": {
"_id": "64e8a4b1b2e4b96ba50d3279",
"style_number": "AEF9IATRH3",
"color": "REECE RED",
"color_code": "55555",
"brand_id": "AEF9IATRH3_55555",
"season": "PE21"
},
"ship_start": "2023-10-27T00:00:00.000Z",
"ship_end": "2023-11-26T00:00:00.000Z",
"retail_string": "$15.00",
"applied": [],
"sizes": [
{
"size": "S",
"quantity": 1,
"price": 12,
"original_price": 12,
"upc": "8055760863111"
}
],
"warehouse": "default",
"prebook": false
}
],
"status": "approved",
"currency_code": "USD",
"order_group_id": "6537c462cf99003c4a02d5db",
"total": 12,
"selected_shipping_locations": [],
"__split_overrides": [
{
"_id": "653bcecca649c76bb9efdb62",
"key": "_default_2023/10/27_2023/11/26"
}
],
"__configure_to_order_items": [],
"shipments": [],
"order_number": "1361318",
"modified_on": "2023-11-02T16:48:38.450Z",
"discount": 0,
"retailer": {
"_id": "64e8a518fe1182e582d16301",
"retailer_name": "TEST COMPANY",
"retailer_code": "TEST123",
"buyer_name": "Reece Test Buyer",
"buyer_email": "reece.harrison+buyer@lightspeedhq.com"
},
"billing_address": {
"display_name": "Test Address",
"line_1": "123 Hays Lane",
"country": "United States",
"city": "London",
"state": "Test State",
"zip": "ABC123",
"ref": "64e8a594b8cf3c399d8d5aa7",
"code": "BILL1"
},
"shipping_address": {
"display_name": "Test Address",
"line_1": "123 Hays Lane",
"country": "United States",
"city": "London",
"state": "Test State",
"zip": "ABC123",
"ref": "64e8a594b8cf3c399d8d5aa7",
"code": "SHIP1"
},
"additional_percentage": 0,
"additional_percentage_label": "Surcharge",
"submitted_by": "web",
"legal_file": null,
"customer_po_number": "",
"notes": "",
"locked": false,
"total_quantity": 1,
"style_number": "AEF9IATRH3",
"existing_pdf_linesheet": "653bcecca649c76001efdb57",
"admin_pdf": "653bcecca649c77195efdb58",
"manager_pdf": "653bcecca649c78276efdb59",
"rep_pdf": "653bcecca649c7eedcefdb5a",
"buyer_pdf": "653bcecca649c78c3defdb5b",
"tech_pdf": "653bcecca649c7f8dfefdb5c",
"created_on": "2023-10-27T14:53:00.461Z",
"rep_name": "Reece Test",
"rep_code": "",
"rep_email": "reece.harrison+salesrep@lightspeedhq.com",
"start_ship": "2023-10-27T00:00:00.000Z",
"end_ship": "2023-11-26T00:00:00.000Z",
"order_discounts": {}
}
]
Then use the following call to change the status:
POST https://{{env}}.nuorder.com/api/order/number/1361318/processed
Orders Creation:
Description:
Order creation is largely used for Orders which originate outside of NuORDER, for example where you want to maintain visibility and parity between your ERP/OMS and NuORDER, if a new Order is added to the ERP.
It can also be used for historical order loads for past sales reporting.
When working with Brands who want to integrate Orders Creation, we suggest using the following Endpoint “Create”.
Method/Callouts:
Typically you may want to have some kind of check (either a tickbox or date range) to pickup New Orders as a trigger to send the Order to prevent your API calls getting larger as time goes on.
*Importing Historical Orders should be discussed with the NuORDER Implementation Manager to consider timeline of orders and data availability in NuORDER for the agreed timeline*
Please find a list of typical fields on an Order creation, either required (with *) or optional below:
Header level order fields:
- Order Number*
- Order Date*
- Customer PO Number
- Sales Rep
- Notes
- Discount %
- Surcharge %
- Ship Start and Ship End dates*
- Billing or Shipping addresses
- Customer Code*
- Currency*
- Any custom fields that have been added to your order schema
Line level order fields:
- Price (Subject to your portal's pricing configuration)*
- Discount %
- Quantity*
- Ship Start and Ship End dates
- Notes
- Season / Style Number / Color OR Brand ID* (Used to identify product/ line item)
- Size*
- Any custom fields that have been added to your order schema
Example API request:
PUT https://{{env}}.nuorder.com/api/order/new
{
"order_number": "12345",
"customer_po_number": "example_po_number",
"currency_code": "USD",
"status": "processed",
"discount": 0,
"ship_start": "2023/11/01",
"ship_end": "2023/11/30",
"rep_code": "555",
"rep_email": "testrep@nuorder.com",
"notes": "A note at the order level",
"billing_address": {
"code": "BILL1",
"line_1": "123 Hays Lane",
"line_2": "Test Line 2",
"city": "London",
"state": "Test State",
"zip": "ABC123",
"country": "US"
},
"shipping_address": {
"code": "SHIP1",
"line_1": "123 Hays Lane",
"line_2": "Test Line 2",
"city": "London",
"state": "Test State",
"zip": "ABC123",
"country": "US"
},
"retailer": {
"retailer_code": "TEST123",
"buyer_email": "reece.harrison+buyer@lightspeedhq.com"
},
"line_items": [
{
"brand_id": "AEF9IATRH3_55555",
"season": "PE21",
"style_number": "AEF9IATRH3",
"color": "REECE RED",
"discount": 0,
"ship_start": "2023/11/01",
"ship_end": "2023/11/30",
"company_manual_discount": 0,
"notes": "A note at the line level",
"warehouse": "default",
"sizes": [
{
"size": "S",
"upc": "8055760863111",
"quantity": 1,
"price": 12,
"original_price": 12
}
]
}
]
}
Orders Edits:
Description:
Order edits are largely used for Orders which were initiated from NuORDER, for example where you want to maintain visibility and parity between your ERP/OMS and NuORDER, but require a change on Order or Line item level. This could be where a price or a quantity on an order changes or when an order gets canceled within the ERP.
When working with Brands who want to integrate Orders Edits, we suggest using the following Endpoint “Update Order by Number”.
Method/Callouts:
Typically you may want to have some kind of check (commonly a date range) to pickup the edited Orders as a trigger to send the Order to prevent your API calls getting larger as time goes on.
The Order number to Edit is referenced in Endpoint given that it is Order specific.
Example API request (an increase in Quantity):
POST https://{{env}}.nuorder.com/api/order/number/12345
{
"customer_po_number": "example_po_number",
"currency_code": "USD",
"status": "processed",
"discount": 0,
"ship_start": "2023/11/01",
"ship_end": "2023/11/30",
"rep_code": "555",
"rep_email": "testrep@nuorder.com",
"notes": "A note at the order level",
"billing_address": {
"code": "BILL1",
"line_1": "123 Hays Lane",
"line_2": "Test Line 2",
"city": "London",
"state": "Test State",
"zip": "ABC123",
"country": "US"
},
"shipping_address": {
"code": "SHIP1",
"line_1": "123 Hays Lane",
"line_2": "Test Line 2",
"city": "London",
"state": "Test State",
"zip": "ABC123",
"country": "US"
},
"retailer": {
"retailer_code": "TEST123",
"buyer_email": "reece.harrison+buyer@lightspeedhq.com"
},
"line_items": [
{
"brand_id": "AEF9IATRH3_55555",
"season": "PE21",
"style_number": "AEF9IATRH3",
"color": "REECE RED",
"discount": 0,
"ship_start": "2023/11/01",
"ship_end": "2023/11/30",
"company_manual_discount": 0,
"notes": "A note at the line level",
"warehouse": "default",
"sizes": [
{
"size": "S",
"upc": "8055760863111",
"quantity": 2,
"price": 12,
"original_price": 12
}
]
}
]
}
Orders Shipments:
Description:
Using the order shipments feature, you can send fulfillment information into NuORDER and in turn the Customer with the shipping status of their ordered goods.This can be used for Partial or Full Shipments, which if you fully Ship all items Quantities, we will automatically change the Status to Shipped.
When working with Brands who want to integrate Orders Shipments, we suggest using the following Endpoints:
- “Create a Fulfilled Shipment by Order Number”.
- “Update a Fulfilled Shipment by Order Number and Shipment ID”
Method/Callouts:
Whilst there are API calls for different types of Shipping status, we recommend the Fulfilled type.
Shipment information will include:
- Line items shipped
- Quantity shipped
- Order Import Shipment
- Shipping method
- Tracking number
NuORDER will use the NuORDER Order Number to identify the order.
Products will be identified by either the Brand_ID or Style Number + Season + Color, but if possible try to include both sets of information.
Order Status
Once the “Quantity Shipped” is equal to the “Quantity Ordered” for all line items in the order, the order will move into “Shipped” status in NuORDER automatically.
Partial Shipments
An order can be fulfilled in as many shipments as needed. Each shipment will be displayed on the order in NuORDER, with the tracking number and line items included.
Editing Shipments
If you require an update to an existing Shipment, please be aware that the Quantities for each line item needs to be inclusive of the original posted Quantity, for example if there is 2 Quantity ordered on 1 Line item, which you Ship 1 and then another, the Shipments editing API call needs to send 2 Quantity for the same line item in the API call.
Example API request:
For New Shipments (these will show as separate Shipment windows on the Order):
PUT https://{{env}}.nuorder.com/api/order/number/12345/shipment
{
"type": "fedex",
"tracking_numbers": [
"1Z0000000034"
],
"created_on": "11-03-2023",
"line_items": [
{
"brand_id": "AEF9IATRH3_55555",
"season": "PE21",
"style_number": "AEF9IATRH3",
"color": "REECE RED",
"sizes": [
{
"size": "S",
"quantity": 1
}
]
}
],
"suppress_emails": false
}
For Editing Shipments (this API call will amend a previously created Shipment window on the Order):
POST https://{{env}}.nuorder.com/api/order/number/12345/shipment/6544d5ea29b0c4140dbffd46
{
"type": "fedex",
"tracking_numbers": [
"1Z0000000034"
],
"created_on": "11-03-2023",
"line_items": [
{
"brand_id": "AEF9IATRH3_55555",
"season": "PE21",
"style_number": "AEF9IATRH3",
"color": "REECE RED",
"sizes": [
{
"size": "S",
"quantity": 2
}
]
}
],
"suppress_emails": false
}
Products:
Description:
Product data is created from your style master and should contain:
- all the information needed by buyers and sales reps to place orders
- any product-level details required by your ERP to process incoming sales orders.
When working with Brands, we suggest using the following Endpoint “Create or update a Product”, as this will allow you to take into account both scenarios whilst using the same Endpoint.
Method/Callouts:
Please make sure that the required fields are filled in for Product creation or Edits, but also external_id mentioned in the API documentation is equal to the Brand ID to be setup on the Product (Style-Color identifier).
Seasons accepts multiple comma separated values.
Category and Subcategory fields are nested, with Subcategory showing under Category in the filters on the Product page
Example API request:
PUT https://{{env}}.nuorder.com/api/product/new/force
{
"active": true,
"archived": false,
"cancelled": false,
"sizes": [
{
"size": "S",
"upc": "8055760863112"
},
{
"size": "M",
"upc": "8055760863223"
},
{
"size": "L",
"upc": "8055760862334"
},
{
"size": "XL",
"upc": "8051384138445"
}
],
"pricing": {
"USD": {
"wholesale": 50,
"retail": 75
}
},
"style_number": "AEF9IATRH4",
"season": "SS24",
"color": "BLUE",
"name": "ABITO CHEMISIER CON COLLO ALLA COREANA 4",
"color_code": "66666",
"division": "",
"department": "",
"category": "DRESSES",
"subcategory": "LONG DRESSES",
"description": "L'abito chemisier a maniche lunghe è caratterizzato da un colletto alla coreana e da un orlo inferiore stondato con spacco laterale. 100% Viscosa",
"brand_id": "AEF9IATRH3_66666",
"available_until": "",
"order_closing": ""
}
Customers:
Description:
Customer data is usually generated from your customer master and will include:
- Account names and codes
- Billing & shipping codes & addresses
- Payment terms
- Other account-level information required by your ERP to process incoming orders.
When working with Brands, we suggest using the following Endpoint “Create/Update Company”, as this will allow you to take into account both scenarios whilst using the same Endpoint.
Method/Callouts:
Please make sure that the required fields are filled in for Company creation or Edits.
Company Codes are unique at the Company level (if you need Address level identifiers, please use the Billing and Shipping code fields).
Whilst you can assign multiple Currencies per Company, if you are using Pricesheets, please only assign 1 Currency to 1 Company.
*Customer Groups and Pricesheets must be pre created prior to the creation of the Company*.
Only 1 Warehouse per Customer is supported through the API.
Address Description is a useful way to nickname your Addresses so they become easier for your Sales Reps and Buyers to select the correct one, i.e. “LA Store”, “New York Head Office” etc.
Example API request:
PUT https://{{env}}.nuorder.com/api/company/new/force
{
"active": true,
"currency_codes": [
"USD"
],
"discount": 0,
"surcharge": 0,
"addresses": [
{
"country": "United States",
"type": "both",
"line_1": "666 Hays Lane",
"display_name": "Test Address",
"shipping_code": "SHIP1",
"billing_code": "BILL1",
"city": "London",
"zip": "ABC123",
"state": "Test State"
}
],
"warehouse": "64e8a388e3f43b33fb85d0d9",
"name": "TEST COMPANY 2",
"code": "TEST321",
"pricing_template": "",
"payment_terms": "",
"credit_status": "",
"currency_code": "USD",
"default_discount": 0,
"default_surcharge": 0
}
Buyers:
Description:
Whilst integrating Buyer data is optional, it can be sent via the API and allows Brands who wish to automate the assignment of Buyers to Companies to be able to do so, bearing in mind that automatic email notifications will be sent every time a new Buyer is added, inviting them onto the Portal.
You will need the following to successfully add the Buyer to the Company record:
- Buyer Name
- Buyer Email
- Sales Rep(s) email
- Company identifier (Code or ID).
When working with Brands, we suggest using the following Endpoint “Add Buyer to a Company by Code”, as this will allow you to create and update Buyers using the same API call.
Method/Callouts:
Buyers need to be added after a Company is created
Multiple reps can be specified simultaneously using the reps array.
The below API call can be made to add or update Buyers.
Example API request:
PUT https://{{env}}.nuorder.com/api/company/code/MA-WH-T/add/buyer
{
"name": "Example Test Buyer",
"email": "example@retailer..com",
"reps": ["example@brand.com"],
"title": "Head Buyer",
"phone_office": "(555) 867-5309",
"phone_cell": "(555) 867-5309"
}
Inventory or Replenishment:
Description:
The choice between whether to use the Inventory or Replenishment method largely depends on the requirement to set specific date windows for Prebook stock.
If for example you just need to sync ATS or Future type stock to the Portal, then Inventory would be preferable as it has less steps/calls in order to achieve the same result that the Replenishment method requires.
Both methods require the following basic information depending on the stock type:
- External ID (also known as the Brand ID in the Portal), this is preferred compared to the ID which is a NuORDER internal alphanumeric database ID that requires storage for referencing.
- A flag denoting if the item(s) are Prebook
- Dates or an indicator as to what type of stock is being synchronized.
- Size, UPC or SKU ID values to identify the Sizes to be updated*
- Quantity values**
*dependant on API method (see below)
**only required if you are syncing ATS or WIP.
Both API call methods support separate Warehouse updates, for example you can send calls for Warehouse 1, then later on submit an API call for Warehouse 2 on the same item, although what is not supported is separate Stock Type updates, therefore you will need to ensure that all stock types for a particular Warehouse is denoted for the whole Product, as sending separate calls for Stock type on the same item will wipe out the previous entry. (see examples below showing multiple stock types being assigned in the call).
When working with Brands who want to use Inventory, we suggest using the following Endpoint “Update Inventory by External ID”.
When working with Brands who want to use Replenishments, we suggest using the following Endpoints:
- “Get Product by external ID”
- “List All Warehouses”
- “Bulk Create Replenishments”
- “Refresh Inventory Flags”
(see method further below).
Inventory:
Method/Callouts:
- Only 1 call step required to update inventory (more simple than Replenishment)
- Warehouse name is used in this call.
- Whilst the array references “wip”, it is used to denote all 3 types of stock (ATS, WIP, Prebook) with the “name” field denoting the type of stock.
Example API request:
POST https://{{env}}.nuorder.com/api/inventory/external_id/2999
{
"inventory": [
{
"warehouse": "default",
"prebook": false,
"wip": [
{
"name": "immediate",
"sizes": [
{"size": "S","quantity": 100},
{"size": "M","quantity": 25},
{"size": "L","quantity": 40},
{"size": "XL","quantity": 10}
]
}
]
},
{
"warehouse": "default",
"prebook": true,
"wip": [
{
"name": "prebook",
"sizes": [
{"size": "S"},
{"size": "M"},
{"size": "L"},
{"size": "XL"}
]
}
]
}
]
}
Replenishment:
Method/Callouts:
There are 4 steps in order to update an item with any of the Stock Types (ATS, WIP and Prebook):
- Retrieve the SKU ID values (you may wish to store them in an array for easier reference)
- Retrieve the Warehouse ID values (you may wish to store them in an array for easier reference)
- Make the Replenishment API call to update the Stocks
- Use the Refresh flag to allow for the Replenishment call to take effect (you can submit 25 Product ID’s at a time).
**Should you experience challenges with the following steps and supplying Replenishment API calls, then we do have an option of using the FTP Replenishment option, whereby if you can provide a file (for example a .csv), then this allows our middleware to complete these 4 steps for you simplifying the procedure.**
Example API request:
Step1:
Use the Get Product endpoint to retrieve Size ID values:
GET https://{{env}}.nuorder.com/api/product/external_id/M21300741_00001_BLACK
The Size ID values will be stored within the following array: __size_ids:
Step 2:
Use the following call to retrieve the warehouse ID values:
Request: GET https://{{env}}.nuorder.com/api/v3.0/warehouses
Step 3:
Example 1:
Using the following call, the medium sized item will be updated with 500 quantity, this quantity will be assigned in the DK warehouse:
POST https://{env}}.nuorder.com/api/v3.0/warehouse/5fc100c2b20e3b3eb8f4bfd4/replenishments
REQUEST:
{
"replenishments":
[
{
"warehouse_id": "5fc100c2b20e3b3eb8f4bfd4",
"sku_id": "6152ea94faa931bc009def86",
"prebook": false,
"period_start": null,
"period_end": null,
"quantity": 500
}
]
}
NuORDER UI
Example 2:
Using the following call, the previous item will be updated to include pre book (NB pre book will apply to the product level, all sizes will be assigned prebook):
POST
https://{{env}}.nuorder.com/api/v3.0/warehouse/5fc100c2b20e3b3eb8f4bfd4/replenishments
REQUEST:
{
"replenishments":
[
{
"warehouse_id": "5fc100c2b20e3b3eb8f4bfd4",
"sku_id": "6152ea94faa931bc009def86",
"prebook": false,
"period_start": null,
"period_end": null,
"quantity": 500
},
{
"warehouse_id": "5fc100c2b20e3b3eb8f4bfd4",
"sku_id": "6152ea94faa931bc009def86",
"prebook": true,
"period_start": "12/02/2021",
"period_end": "01/30/2022",
"quantity": null
}
]
}
NuORDER UI:
Example 3:
Using the following call, the previous item will be updated to include future quantity (the outcome would be for immediate and prebook windows and future quantity to be assigned):
POST
https://{{env}}.nuorder.com/api/v3.0/warehouse/5fc100c2b20e3b3eb8f4bfd4/replenishments
REQUEST:
{
"replenishments":
[
{
"warehouse_id": "5fc100c2b20e3b3eb8f4bfd4",
"sku_id": "6152ea94faa931bc009def86",
"prebook": false,
"period_start": null,
"period_end": null,
"quantity": 500
},
{
"warehouse_id": "5fc100c2b20e3b3eb8f4bfd4",
"sku_id": "6152ea94faa931bc009def86",
"prebook": true,
"period_start": "12/02/2021",
"period_end": "01/30/2022",
"quantity": null
},
{
"warehouse_id": "5fc100c2b20e3b3eb8f4bfd4",
"sku_id": "6152ea94faa931bc009def86",
"prebook": false,
"period_start": "12/04/2021",
"period_end": null,
"quantity": 650
}
]
}
Step 4:
Then refresh the inventory via this call for every Product that was updated in the previous Replenishment Calls:
PUT https://{{env}}.nuorder.com/api/inventory/flags
Please make sure to include a maximum of 25 Product (level) IDs at a time into the array below:
{
"product_ids": [
"5aa7d76dfa217edddeaab159"
]
}
Pricesheets:
Description:
NuORDER supports bulk custom price sheets (aka price lists or pricing templates), which allow you to maintain pricing per Customer and per Product.
- Customers can be assigned to a price sheet, and prices will automatically update for that customer within the wholesale application.
- Any customers not assigned to a special price sheet will see the default wholesale pricing.
- Any products not included in the price sheet will use the default wholesale pricing.
- Customers can be assigned a price sheet via the customer data feed.
- Price sheets can also be used to disable (hide) certain products from a group of customers.
When working with Brands who want to integrate Pricesheets, we suggest using the following Endpoint “Bulk assign pricesheet to products”, as it allows for multiple Products pricing to be assigned in 1 API call.
Method/Callouts:
For Price Per Size, you must include the Base level Price in the Pricesheet in order for the Pricesheet to be created.
Whilst Brand ID is not required for non Price Per Size enabled Portals, if Price Per Size is enabled, then it must be provided as “brand_id”.
The Bulk assign Pricesheet to products API will assign and create Pricesheets to multiple products (deltas are supported), although for 1 Pricesheet at a time.
Pricesheet exports can be downloaded from Settings > Brand Admin > Data > Pricing
Example API request:
POST: https://{{env}}.nuorder.com/api/pricesheet/bulk/assign/template3
{
"pricing": [
{
"wholesale": 11.2,
"retail": 20,
"disabled": false,
"template": "template3",
"style_number": "RH-BM21689",
"season": "Summer 2023",
"color": "PINK",
"brand_id": "44BM21689_4132"
},
{
"wholesale": 121.2,
"retail": 30,
"disabled": false,
"template": "template3",
"style_number": "AJ-1002_RH",
"season": "past",
"color": "OXFORD BLUE",
"brand_id": "1002_RHX"
},
{
"wholesale": 151.2,
"retail": 100,
"disabled": false,
"template": "template3",
"style_number": "BM22532",
"season": "spring 2021",
"color": "Elto Superstretch",
"brand_id": "44BM22532_419"
}
]
}