XML Tools Documentation

Total Page:16

File Type:pdf, Size:1020Kb

XML Tools Documentation

Last Revised: October 26, 2017 Contents

1: Overview ...... 2 2: General Information ...... 3 3: XML Schemas ...... 4 4: XML Test ...... 6 5: OrderQuery ...... 9 6: OrderUpdate ...... 44 7: OrderCalculate ...... 55 8: OrderCreate ...... 69 9: CustomerQuery ...... 87 10: CustomerUpdate ...... 101 11: InventoryUpdate ...... 112 12: ProductQuery ...... 118 13: ProductUpdate ...... 141 14: SavedCart ...... 164 15: Errors ...... 171 16: External Mapping ...... 172 17: Best Practices ...... 176 18: Summary of Revisions ...... 179 19: Appendix: REST Client ...... 182

2 1: Overview

The XML Tools are designed to allow data synchronization and integration with third party systems housing similar data. All Tools involve server-to-server communication whereby the initiating server sends a Request XML document to the appropriate URL specified in this document, then receives a Reply XML document from Nexternal, then parses that document and takes appropriate action to achieve the desired integration.

Because XML transactions are always initiated by the client via the Request XML, it is not possible to have XML initiated by an event in the Online Store, such as the placement of an order. You may, however, query new orders every 10 minutes by using the OrderQuery tool on a scheduled basis to "export" new orders to a third party system in a timely manner.

Successful use of the XML Tools requires considerable expertise in XML and the Nexternal Order Management System, as well as the necessary technology assets (i.e. hardware, software, internet service, etc), which are the sole responsibility of the client performing the integration. Nexternal Solutions’ responsibility is limited to maintaining the functionality and availability of the Tools in accordance with this document (subject to modification and enhancement at any time, at Nexternal’s sole discretion), and providing e-mail based support (strictly limited to questions relating to the functionality of the XML Tools) via the XML Help Desk at Settings/XML Tools in the Order Management System.

As a prerequisite to access to the active XML Tools, clients must agree to the Memorandum of Understanding at Settings/XML Tools in the Order Management System, and pass the XML Test as detailed in this document. The XML Test is designed to validate the skills of the integrator, and thus the XML Help Desk is not available to clients who have yet to pass the test. Clients who lack the in-house expertise to pass the test should seek outside assistance.

Note that the initialism "OMS" is used throughout this document to refer to the Nexternal Order Management System.

3 2: General Information

The following information should be used for all XML requests:

 Request Protocol: https  Request Method: POST (send only the XML; do not include a field name or any other form elements)  Content Type: text/xml  Do not include a DOCTYPE declaration

The most recent revision of this document is always available at http://www.nexternal.com/documentation/xmltools.doc or http://www.nexternal.com/documentation/xmltools.pdf.

All XML document validation schemas (XSD's) are available at http://www.nexternal.com/documentation/schema.zip.

Documentation regarding allowed State/Province Codes and Country Codes is available at http://www.nexternal.com/documentation/statescountries.htm.

The home for the XML Tools in the OMS is Settings/XML Tools. Here, you will find the XML Memorandum of Understanding; and, if the XML Test has been passed, the XML Help Desk and XML Key.

For security purposes, the same access restrictions assigned to the OMS at Settings/Anti- Fraud and Security are applied to the XML Tools. Furthermore, if 15 consecutive failed attempts (where the failure is caused by invalid authentication credentials) are recorded from a given IP address within one hour, the IP is "locked out" from the XML Tools for the remainder of the hour.

When developing and testing your XML integration, in most cases you may do so against your "live" account without any adverse consequences. If you prefer, you may also use the OMS on Nexternal’s FirstFirway demonstration site (http://www.nexternal.com/myfairway) for testing purposes, or you may request temporary use of a "dummy" account from your Nexternal Account Representative.

Responses from Nexternal utilize HTTP Compression via Microsoft’s Internet Information Server (IIS). For most developers, this is inconsequential; however, if you are using Cold Fusion, you may need to include special header information to disable compression – please see http://www.talkingtree.com/blog/index.cfm/2004/7/28/20040729 for more information.

4 3: XML Schemas

Schemas for all XML requests and replies are given in tabular format on the following pages. The columns included are as follows:

Element XPath: Path of the XML element, excluding the top level container (which always matches the name of the XML document). For example, full path of the OrderNoRange/OrderNoStart node in the OrderQueryRequest document is OrderQueryRequest/OrderNoRange/OrderNoStart. Attributes are denoted by the @ symbol.

Required: (Request XML only) Denotes whether or not the element is required. A No value indicates that the element is not required in all cases, not that the element can be safely ignored. A Yes* value indicates that the element is required only if its non- required parent is present.

Always: (Reply XML only) The equivalent of the Required field for Request XML.

Occurs: Denotes the number of occurrences of the element, or the range thereof. For child elements, this field indicates the number of occurrences per parent node.

Type: Denotes the element type. The possible values are:  Container: A container that contains child nodes  Text Node/Attribute: Contains textual data (letters, numbers, punctuation, spaces, etc) with no specific format unless noted in the Description. If an absolute or maximum number of characters applies, that number is noted.  Text Node/Attribute (Request XML only): Contains data in the same format as the Text Node/Attribute, but may also be an empty node to erase an existing value.  Integer Node/Attribute: Contains integer values only. Unless otherwise noted in the Description, the field allows only positive integers.  Currency Node/Attribute: Contains a currency value with 2 decimal places. For example, $4.50 is represented as 4.50. Unless otherwise noted in the Description, the field allows only positive values and represents a value in United States Dollars.  Numeric Node/Attribute: Contains a numeric value with no fixed number of decimal places. Unless otherwise noted in the Description, the field allows only positive numbers.  Percent Node/Attribute: Contains a percent value with a variable number of decimal places. For example, 7.75% is represented as 7.75. Unless otherwise noted in the Description, the field allows only positive values.  Date Node/Attribute: Contains a date value in the mm/dd/yyyy format (unless otherwise noted). For example, July 4, 2005 is represented as 07/04/2005.  Time Node/Attribute: Contains a time value in the hh:mm format, where hh ranges from 00 – 23 and mm ranges from 00 – 59. For example, 1:05 PM is

5 represented as 13:05. Time values are based on the U.S. Pacific Time Zone, subject to adjustment via the Time Adjustment field at Settings/Site Options in the OMS.  URL Node: Contains a Uniform Resource Locator (URL) value. Used with image and audio files located on the internet, or a webpage to be displayed to the user during redirection.  Empty Node: Contains no value. The presence or lack of an Empty Node is used to represent a Boolean value.

Description: Contains a description of the field and other pertinent information.

6 4: XML Test

Successful completion of the XML Test is required before access to the active XML Tools is granted. The test is used to validate the skills of the integrator. The test consists of two parts: TestSubmit and TestVerify.

Your script should begin by sending the TestSubmitRequest, then receive and parse the TestSubmitReply. Based on the TestSubmitReply, your script should then build and send the TestVerifyRequest and receive the TestVerifyReply. The TestVerifyRequest must be sent within 1 minute of the TestSubmitRequest for the test to be completed successfully. If successful, you will receive your active XML Key in the TestVerifyReply, and you may immediately begin using the active XML Tools. The active Key is also available upon successful completion of the test at Settings/XML Tools in the OMS.

Authentication of the TestSubmitRequest and TestVerifyRequest is via any User Name and Password valid for the OMS with an Access Level of Administrator or Editor. Additionally, the TestVerifyRequest must include the "test" XML Key provided by the TestSubmitReply (randomly generated and separate from the active XML Key provided by the TestVerifyReply) as either an attribute or node as specified in the TestSubmitReply.

TestSubmitRequest URL: https://www.nexternal.com/shared/xml/testsubmit.rest TestVerifyRequest URL: https://www.nexternal.com/shared/xml/testverify.rest

TestSubmitRequest Schema Element Xpath Required Occurs Type Description Credentials Yes 1 Container Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/UserName Yes 1 Text Node (50 Any valid, active User Name with Access Level chars max) Administrator or Editor Credentials/Password Yes 1 Text Node (50 User's Password chars max)

TestSubmitReply Schema Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) @Type Yes 1 Text Attribute (9 Location of Key in TestVerifyRequest (Attribute or chars max) Node) TestKey Yes 1 Text Node (20 Test Key chars max)

TestVerifyRequest Schema Element Xpath Required Occurs Type Description Credentials Yes 1 Container

7 Element Xpath Required Occurs Type Description Credentials @Key No 1 Text Attribute Use for Test Key if TestSubmitReply @Type is (20 chars max) Attribute Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/UserName Yes 1 Text Node (50 Any valid, active User Name with Access Level chars max) Administrator or Editor Credentials/Password Yes 1 Text Node (50 User's Password chars max) Credentials/Key No 1 Text Node (20 Use for Test Key if TestSubmitReply @Type is chars max) Node

TestVerifyReply Schema Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) ActiveKey Yes 1 Text Node (20 Active Key for use with XML Tools chars max)

TestSubmitRequest Example

fairway Demo Dem0U$er

TestSubmitReply Example

?!J{*1iQKx/,FK=pW#rl

TestVerifyRequest Example

fairway Demo Dem0U$er

TestVerifyReply Example

8 k]?h;GO9niH]Itx[ @uQB

9 5: OrderQuery

The OrderQuery is used to query order data, thus "exporting" orders from the OMS so that they may be "imported" into an external system.

You may submit a query based on Order Number Range, Order Date Range, Order Last Updated Range, Fulfillment Date Range, Preferred Ship Date Range, Preferred Delivery Date Range, Pickup Date Range, Customer Number, Ship-To State/Province or Country, Order Status, Billing Status, Order Type, Pickup Location, or Affiliate (or any of those criteria in combination). For Order Number Range, Order Date Range, Order Last Updated Range, Ship/Send Date Range, and Pickup Date Range, you may specify a Range Start, Range End, or both. Specifying only a Range Start has the meaning of "greater than or equal to", while only a Range End has the meaning of "less than or equal to". For example, a query based on only an Order Number Range Start of 102400 queries Orders 102400 and greater.

In the case of an Order Date Range or Order Last Updated Range, you may specify a Start and/or End Date, and optionally a Time. If you do not specify a Time, a default value of 00:00 (i.e. 12:00 AM) is used. If you wish to specify the end of the day (particularly for a Range End), you must use a Time value of 23:59.

In the case of order fulfillment queries using a Fulfillment Date Range, only orders with an Order Status of Picked Up (for pickup orders), Shipped (for product orders) or Sent (for gift certificate orders) are returned. Other orders are necessarily excluded from the query. To refine the query to a specific fulfillment type, include the OrderType node with your query.

In addition to order ranges you may also query for a specific Order Line Item by including a Product Name, Product SKU, Product Number, Shipping Method, Line Item Status, Vendor, or Tracking Number. For orders that contain products defined at the SKU level you may include a SKU-level SKU value, or you may include a list of one or more Attributes and Options that define your SKU-level item.

The OrderQuery gives you the option, via the IncludeTransactions node in the OrderQueryRequest, of including Credit Card Transactions in the query. This can be useful if you need to integrate transaction information with an external system. To include full Credit Card Numbers, you must also turn on the Full CC Access: Report/XML option at Settings/Site Options in the OMS; if you choose to do so, you are responsible for taking the precautions that customers expect with such sensitive information. If FlexCache Gift Cards are in use (Settings/Compatible Software in the OMS), the IncludeTransactions node also includes Gift Card Transactions in the query.

If Currency Conversion (Settings/Compatible Software in the OMS) is in use, and the customer who placed an order chose to use a foreign currency, the Order/Currency container is returned in the OrderQueryReply. While the container includes details of the currency chosen by the customer (including the Order Total in that currency), all

10 currency values found outside of the Order/Currency container always represent United States Dollars.

A single OrderQueryRequest returns no more than 15 Order nodes in the corresponding OrderQueryReply, even if the requested query includes more than 15 resulting orders. The presence of a NextPage node in the OrderQueryReply indicates that a subsequent "page" of results exists. You may then use the Page node in the OrderQueryRequest to iteratively request all orders in the query. Orders are always returned in the OrderQueryReply in ascending order of Order Number.

Note: If the Page node in the OrderQueryRequest contains a page number greater than the maximum page number in the query results, the maximum page number is returned.

CurrentStatus Node

The CurrentStatus node in the OrderQueryRequest gives you the option of obtaining a simple status snapshot on a large number of orders. To do so, specify a query range (Order Number Range, Order Date Range, Order Last Updated Range, Ship/Send Date Range, Preferred Ship Date Range, or Preferred Delivery Date Range) and include the CurrentStatus node. The OrderQueryReply will return a single node per order, containing the Order Number, Order Status, Order Type, and Billing Status. The maximum OrderQueryReply page size with the CurrentStatus node is 2000.

OrderQueryRequest URL: https://www.nexternal.com/shared/xml/orderquery.rest

OrderQueryRequest Schema Element Xpath Required Occurs Type Description Credentials Yes 1 Container Note that the supplied Credentials must contain the Client's XML Key or a UserName and Password, but not both Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/Key No 1 Text Node (20 Client's XML Key chars max) Credentials/UserName No 1 Text Node (50 XML Tools User Name chars max) • See Users / New Users / Access Level in the OMS for more information about the XML Tools Access Level Credentials/Password No 1 Text Node (50 XML Tools User Password chars max) OrderNoRange No 1 Container For query by Order Number Range OrderNoRange/OrderNoSt No 1 Integer Node Order Number Range Start art OrderNoRange/OrderNoEn No 1 Integer Node Order Number Range End d OrderDateRange No 1 Container For query by Order Date Range OrderDateRange/OrderDat No 1 Container eStart

11 Element Xpath Required Occurs Type Description OrderDateRange/OrderDat Yes* 1 Container eStart/DateTime OrderDateRange/OrderDat Yes* 1 Date Node Order Date Range Start eStart/DateTime/Date (mm/dd/yyyy) OrderDateRange/OrderDat No 1 Time Node Order Date Range Start Time (default value: eStart/DateTime/Time (hh:mm) 00:00) OrderDateRange/OrderDat No 1 Container eEnd OrderDateRange/OrderDat Yes* 1 Container eEnd/DateTime OrderDateRange/OrderDat Yes* 1 Date Node Order Date Range End eEnd/DateTime/Date (mm/dd/yyyy) OrderDateRange/OrderDat No 1 Time Node Order Date Range End Time (default value: eEnd/DateTime/Time (hh:mm) 00:00) OrderUpdRange No 1 Container For query by Order Last Updated Range OrderUpdRange/OrderUpd No 1 Container Start OrderUpdRange/OrderUpd Yes* 1 Container Start/DateTime OrderUpdRange/OrderUpd Yes* 1 Date Node Last Updated Date Range Start Start/DateTime/Date (mm/dd/yyyy) OrderUpdRange/OrderUpd No 1 Time Node Last Updated Date Range Start Time (default Start/DateTime/Time (hh:mm) value: 00:00) OrderUpdRange/OrderUpd No 1 Container End OrderUpdRange/OrderUpd Yes* 1 Container End/DateTime OrderUpdRange/OrderUpd Yes* 1 Date Node Last Updated Date Range End End/DateTime/Date (mm/dd/yyyy) OrderUpdRange/OrderUpd No 1 Time Node Last Updated Date Range End Time (default End/DateTime/Time (hh:mm) value: 00:00) ShipDateRange No 1 Container For query by Fulfillment Date Range ShipDateRange/ShipDateSt No 1 Container art ShipDateRange/ShipDateSt Yes* 1 Container art/DateTime ShipDateRange/ShipDateSt Yes* 1 Date Node Fulfillment Date Range Start art/DateTime/Date (mm/dd/yyyy) ShipDateRange/ShipDateE No 1 Container nd ShipDateRange/ShipDateE Yes* 1 Container nd/DateTime ShipDateRange/ShipDateE Yes* 1 Date Node Fulfillment Date Range End nd/DateTime/Date (mm/dd/yyyy) PreferredShipDateRange No 1 Container For query by Preferred Ship Date Range • Returns Product Orders only PreferredShipDateRange/P No 1 Container referredShipDateStart PreferredShipDateRange/P Yes* 1 Container referredShipDateStart/Date Time

12 Element Xpath Required Occurs Type Description PreferredShipDateRange/P Yes* 1 Date Node Preferred Ship Date Range Start referredShipDateStart/Date (mm/dd/yyyy) Time/Date PreferredShipDateRange/P No 1 Container referredShipDateEnd PreferredShipDateRange/P Yes* 1 Container referredShipDateEnd/Date Time PreferredShipDateRange/P Yes* 1 Date Node Preferred Ship Date Range End referredShipDateEnd/Date (mm/dd/yyyy) Time/Date PreferredDeliveryDateRan No 1 Container For query by Preferred Delivery Date Range ge • Returns Product Orders only PreferredDeliveryDateRan No 1 Container ge/PreferredDeliveryDateS tart PreferredDeliveryDateRan Yes* 1 Container ge/PreferredDeliveryDateS tart/DateTime PreferredDeliveryDateRan Yes* 1 Date Node Preferred Delivery Date Range Start ge/PreferredDeliveryDateS (mm/dd/yyyy) tart/DateTime/Date PreferredDeliveryDateRan No 1 Container ge/PreferredDeliveryDateE nd PreferredShipDeliveryRan Yes* 1 Container ge/PreferredDeliveryDateE nd/DateTime PreferredDeliveryDateRan Yes* 1 Date Node Preferred Delivery Date Range End ge/PreferredDeliveryDateE (mm/dd/yyyy) nd/DateTime/Date PickupDateRange No 1 Container For query by Expected Pickup Date Range • Returns Product Orders only PickupDateRange/PickupD No 1 Container ateStart PickupDateRange/PickupD Yes* 1 Container ateStart/DateTime PickupDateRange/PickupD Yes* 1 Date Node Expected Pickup Date Range Start ateStart/DateTime/Date (mm/dd/yyyy) PickupDateRange/PickupD No 1 Container ateEnd PickupDateRange/PickupD Yes* 1 Container ateEnd/DateTime PickupDateRange/PickupD Yes* 1 Date Node Expected Pickup Date Range End ateEnd/DateTime/Date (mm/dd/yyyy) CustomerNo No 1 Integer Node Customer Number

ShipTo No 1 Container Used to query by Ship To State/Province Code or Ship To Country Code • Returns Product Orders only • If this container is included you must also include either the ShipTo/StateProvCode or ShipTo/CountryCode node, but not both

13 Element Xpath Required Occurs Type Description ShipTo/StateProvCode No 1 Text Node (2 Ship To State/Province Code chars max) ShipTo/CountryCode No 1 Text Node(2 Ship To Country Code chars max) OrderLineItem No 1 Container Used to query for orders containing a specific Product, Vendor, Line Item Status, Tracking Number, or Shipping Method OrderLineItem/ProductNa No 1 Text Node Order Line Item Product Name me (100 chars max) OrderLineItem/ProductSK No 1 Text Node (50 Order Line Item Product-level SKU U chars max) OrderLineItem/ProductNo No 1 Integer Node Order Line Item Product Number

OrderLineItem/ShipMetho No 1 Text Node (50 Used to query by Order Line Item Shipping d chars max) Method • Queries for ShipMethod can be performed using a partial match for the type of shipping method (e.g. "Ground" will return orders for "UPS Ground" and "FedEx Ground") OrderLineItem/SKUItem No 1 Container Used to query for orders containing specific SKU-level items OrderLineItem/SKUItem/S No 1 Text Node (50 Order Line Item SKU-level SKU number KU chars max) OrderLineItem/SKUItem/A No 1 Container • If this container is included you may not include ttributes the SKUItem/SKU node • If this container is included you must also include a ProductName node, a ProductSKU node, or a ProductNo node OrderLineItem/SKUItem/A Yes* 1 + Text Node (50 Order Line Item SKU Attribute Value ttributes/Attribute chars max) OrderLineItem/SKUItem/A Yes* 1 Text Attribute Order Line Item SKU Attribute Name ttributes/Attribute @Name (50 chars max) OrderLineItem/LineItemSt No 1 Text Node (20 Used to query by Order Line Item Status atus chars max) • Unshipped, In Process, Shipped, Not Ready, Ready, Picked Up, Backordered, Preordered, Canceled, Return-Ship Agent, Return-Customer, Outstanding (all statuses other than Shipped, Picked Up, Sent, Canceled, and Return- Customer), or Fulfilled (Shipped, Picked Up, or Sent) • Unshipped also returns Gift Certificate Orders with a status of Unsent, while Shipped also returns Gift Certificate Orders with a status of Sent OrderLineItem/LineItemCu No 1 Text/Integer/N Line Item Custom Field Value stomField umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field OrderLineItem/LineItemCu Yes* 1 Text Attribute Line Item Custom Field Type (Text, Positive stomField @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderLineItem/Vendor No 1 Text Node (75 Vendor Internal Name chars max)

14 Element Xpath Required Occurs Type Description OrderLineItem/TrackingNu No 1 Text Node (50 Order Line Item Tracking Number mber chars max) OrderLineItem/PickedUpB No 1 Text Node (50 First and Last Name of a Customer or Trustee that y chars max) signed for the Order Line Item Trustee No 1 Container Used to query for a specific Trustee • Must contain a Trustee Customer ID, a Trustee Email Address, or a Trustee Name • Applicable only if Pickup Trustee Preferences is in use (Customers/Preferences in the OMS) Trustee/CustomerID No 1 Integer Node Trustee Customer Number

Trustee/Email No 1 Text Node Trustee Email Address

Trustee/Name No 1 Container Trustee/Name/FirstName Yes* 1 Text Node (50 Trustee First Name chars max) Trustee/Name/LastName Yes* 1 Text Node (50 Trustee Last Name chars max) OrderStatus No 1 Text Node (20 Used to query by Order Status chars max) • Unshipped, In Process, Shipped, Not Ready, Ready, Picked Up, Pending, Backordered, Preordered, Canceled, Return-Ship Agent, Return-Customer, Shipped-Partial, Picked Up- Partial, or Other-See Line Items • Unshipped also returns Gift Certificate Orders with a status of Unsent, while Shipped also returns Gift Certificate Orders with a status of Sent • The values Outstanding (all statuses other than Shipped, Picked Up, Sent, Canceled, and Return- Customer) and Fulfilled (Shipped, Picked Up, or Sent), are also permitted BillingStatus No 1 Text Node (16 Used to query by Billing Status chars max) • Unbilled, Authorized, Billed, Billed-Partial, Paid, Paid-Partial, Refunded, Refunded-Partial, Declined CC, or Canceled • The values Paid-Unbilled (Paid for Payment Methods of Credit Card or Paypal; Unbilled, Billed, or Paid otherwise) and Paid-Billed (Paid for Payment Methods of Credit Card or Paypal; Billed or Paid otherwise) are also permitted OrderType No 1 Text Node (20 Used to query by Order Type (Product, Pickup, or chars max) Gift Certificate) PlacedByNote No 1 Text Node (25 Used to query by Placed By Note chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Orders LastUpdByNote No 1 Text Node (25 Used to query by Last Updated By Note chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Orders PickupLocation No 1 Text Node (50 Used to query by Pickup Location Internal Name chars max)

15 Element Xpath Required Occurs Type Description Affiliate No 1 Text Node (50 Used to query by Affiliate chars max) • Queries for Affiliate can be performed using a partial match for the affiliate category or affiliate name (e.g. "Magazine" will return orders for "Time Magazine" and "Life Magazine") IncludeTransactions No 1 Empty Node Indicates that Credit Card Transactions should be included in the OrderQueryReply IncludeCustomFields No 1 Empty Node Indicates that Custom Fields for Customers, Orders, and Products should be included in the OrderQueryReply Integration No 1 Container See External Mapping for more information CurrentStatus No 1 Empty Node Used to return the Order Status and Billing Status of all Orders that fall within the specified range • Allowed only when this node is combined with OrderNoRange, OrderDateRange, OrderUpdRange, ShipDateRange, PreferredShipDateRange, or PreferredDeliveryDateRange Page No 1 Integer Node Requested page number of query results (default value: 1)

OrderQueryReply Schema (without CurrentStatus node) Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) @Page Yes 1 Integer Page number of query results Attribute Order Yes 1 - 15 Container Order/OrderNo Yes 1 Integer Node Order Number Order/OrderDate Yes 1 Container Order/OrderDate/DateTime Yes 1 Container Order/OrderDate/DateTime Yes 1 Date Node Order Date /Date (mm/dd/yyyy) Order/OrderDate/DateTime Yes 1 Time Node Order Time /Time (hh:mm) Order/OrderType Yes 1 Text Node (16 Order Type (Product, Pickup, or Gift Certificate) chars max) Order/ShipCompliant No 1 Container ShipCompliant compliance status • Usage of the ShipCompliant web service is set at Settings/Compatible Software/ShipCompliant in the OMS Order/ShipCompliant/SCFl Yes* 1 Text Node (6 ShipCompliant status flag (Green, Yellow, or ag chars max) Red) Order/ShipCompliant/SCEr Yes* 1 Text Node ShipCompliant error message (only if SCFlag is ror set to Yellow) Order/ShipCompliant/SCS No 1 Container ShipCompliant Last Synchronized Date yncDate Order/ShipCompliant/SCS Yes 1 Container yncDate/DateTime Order/ShipCompliant/SCS Yes 1 Date Node ShipCompliant Synchronization Date yncDate/DateTime/Date (mm/dd/yyyy)

16 Element Xpath Always Occurs Type Description Order/ShipCompliant/SCS Yes 1 Time Node ShipCompliant SynchronizationTime yncDate/DateTime/Time (hh:mm) Order/Customer Yes 1 Container Order/Customer/Customer Yes 1 Integer Node Customer Number (unique ID) No Order/Customer/Email Yes 1 Text Node (50 Customer E-Mail Address chars max) Order/Customer/Address Yes 1 Container For Customer Contact Address Order/Customer/Address Yes 1 Text Attribute Customer Contact Address Type (Residential or @Type (11 chars max) Business) Order/Customer/Address Yes 1 Integer Customer Address Book ID @ID Attribute Order/Customer/Address No 1 Text Attribute Customer Contact Address Label @Label (25 chars max) Order/Customer/Address/N Yes 1 Container ame Order/Customer/Address/N Yes 1 Text Node (50 Customer First Name ame/FirstName chars max) Order/Customer/Address/N Yes 1 Text Node (50 Customer Last Name ame/LastName chars max) Order/Customer/Address/C No 1 Text Node Customer Contact Company Name ompanyName (100 chars • Usage of the Company Name field is set at max) Customers/Types in the OMS Order/Customer/Address/S Yes 1 Text Node Customer Contact Street Address (Line 1) treetAddress1 (100 chars max) Order/Customer/Address/S No 1 Text Node Customer Contact Street Address (Line 2) treetAddress2 (100 chars max) Order/Customer/Address/C Yes 1 Text Node (50 Customer Contact City ity chars max) Order/Customer/Address/S No 1 Text Node (2 Customer Contact State/Province Code tateProvCode chars max) Order/Customer/Address/Z Yes 1 Text Node (20 Customer Contact Zip/Postal Code ipPostalCode chars max) Order/Customer/Address/C Yes 1 Text Node (2 Customer Contact Country Code ountryCode chars max) Order/Customer/Address/P Yes 1 Text Node (50 Customer Contact Phone Number honeNumber chars max) Order/Customer/Address/P No 1 Text Node (30 Customer Contact Phone Extension honeExt chars max) Order/Customer/Address/I No 1 Empty Node Indicates Customer Contact Address has been nvalidAddress flagged as invalid by UPS Address Validation Order/Customer/Customer Yes 1 Text Node (20 Customer Type Type chars max) Order/Customer/AgeVerifi No 1 Container For Age Verification Results cation Order/Customer/AgeVerifi Yes* 1 Text Node (6 Age Verification Flag (Green, Yellow, or Red) cation/VerificationFlag chars max)

17 Element Xpath Always Occurs Type Description Order/Customer/AgeVerify No 1 Text Node Age Verification Notes /VerificationNotes Order/Customer/Trustee No 1 Container Applicable only if Pickup Trustee Preferences is in use (Customers/Preferences in the OMS) Order/Customer/Trustee/C Yes* 1 Integer Node Trustee Customer Number ustomerID Order/Customer/Trustee/E Yes* 1 Text Node Trustee Email Address mail Order/Customer/Trustee/N Yes* 1 Container ame Order/Customer/Trustee/N Yes* 1 Text Node (50 Trustee First Name ame/FirstName chars max) Order/Customer/Trustee/N Yes* 1 Text Node (50 Trustee Last Name ame/LastName chars max) Order/Customer/CustomFi No 1 Text/Integer/N Customer Custom Field #1 Value eld1 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #1 Name eld1 @Name (50 chars max) Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #1 Type (Text, Positive eld1 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Order/Customer/CustomFi No 1 Text/Integer/N Customer Custom Field #2 Value eld2 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #2 Name eld2 @Name (50 chars max) Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #2 Type (Text, Positive eld2 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Order/Customer/CustomFi No 1 Text/Integer/N Customer Custom Field #3 Value eld3 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #3 Name eld3 @Name (50 chars max) Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #3 Type (Text, Positive eld3 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Order/Customer/CustomFi No 1 Text/Integer/N Customer Custom Field #4 Value eld4 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #4 Name eld4 @Name (50 chars max) Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #4 Type (Text, Positive eld4 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Order/Customer/CustomFi No 1 Text/Integer/N Customer Custom Field #5 Value eld5 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #5 Name eld5 @Name (50 chars max)

18 Element Xpath Always Occurs Type Description Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #5 Type (Text, Positive eld5 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Order/Customer/CustomFi No 1 Text/Integer/N Customer Custom Field #6 Value eld6 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #6 Name eld6 @Name (50 chars max) Order/Customer/CustomFi Yes* 1 Text Attribute Customer Custom Field #6 Type (Text, Positive eld6 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Order/OrderStatus Yes 1 Text Node (20 Order Status chars max) • Product Orders: Unshipped, In Process, Shipped, Pending, Backordered, Preordered, Canceled, Return-Ship Agent, Return-Customer, Shipped-Partial, or Other-See Line Items • Gift Certificate Orders: Unsent, Sent, Canceled, Sent-Partial, or Other-See Line Items Order/ShipDate No 1 Container For Shipped/Sent orders Order/ShipDate/DateTime Yes* 1 Container Order/ShipDate/DateTime/ Yes* 1 Date Node Ship/Send Date Date (mm/dd/yyyy) Order/PickupDate No 1 Container For Picked Up orders Order/PickupDate/DateTim Yes* 1 Container e Order/PickupDate/DateTim Yes* 1 Date Node Pickup Date e/Date (mm/dd/yyyy) Order/ReasonCanceled No 1 Text Node Reason Canceled (for Canceled orders) (255 chars max) Order/BillingStatus Yes 1 Text Node (16 Billing Status (Unbilled, Authorized, Billed, chars max) Billed-Partial, Paid, Paid-Partial, Refunded, Refunded-Partial, Declined CC, or Canceled) Order/OrderAmount Yes 1 Currency Total Order Amount Node • Always 0.00 for Canceled orders Order/OrderNet Yes 1 Currency Order Net (Order Amount less Shipping and Sales Node Tax) • Always 0.00 for Canceled orders Order/BillTo Yes 1 Container Order/BillTo/Address Yes 1 Container For Bill To Address Order/BillTo/Address Yes 1 Text Attribute Bill To Address Type (Residential or Business) @Type (11 chars max) Order/BillTo/Address/Addr No 1 Container essBook Order/BillTo/Address/Addr Yes* 1 Integer Customer Address Book ID (if present) essBook @ID Attribute Order/BillTo/Address/Addr No 1 Text Attribute Customer Address Book Label (if present) essBook @Label (25 chars max) Order/BillTo/Address/Nam Yes 1 Container e

19 Element Xpath Always Occurs Type Description Order/BillTo/Address/Nam Yes 1 Text Node (50 Bill To First Name e/FirstName chars max) Order/BillTo/Address/Nam Yes 1 Text Node (50 Bill To Last Name e/LastName chars max) Order/BillTo/Address/Com No 1 Text Node Bill To Company Name panyName (100 chars • Usage of the Company Name field is set at max) Customers/Types in the OMS Order/BillTo/Address/Stree Yes 1 Text Node Bill To Street Address (Line 1) tAddress1 (100 chars max) Order/BillTo/Address/Stree No 1 Text Node Bill To Street Address (Line 2) tAddress2 (100 chars max) Order/BillTo/Address/City Yes 1 Text Node (50 Bill To City chars max) Order/BillTo/Address/State No 1 Text Node (2 Bill To State/Province Code ProvCode chars max) Order/BillTo/Address/ZipP Yes 1 Text Node (20 Bill To Zip/Postal Code ostalCode chars max) Order/BillTo/Address/Cou Yes 1 Text Node (2 Bill To Country Code ntryCode chars max) Order/BillTo/Address/Phon Yes 1 Text Node (50 Bill To Phone Number eNumber chars max) Order/BillTo/Address/Phon No 1 Text Node (30 Bill To Phone Extension eExt chars max) Order/BillTo/Address/Inval No 1 Empty Node Indicates that Bill To Address has been flagged as idAddress invalid by UPS Address Validation Order/Payment No 1 Container Order/Payment/PaymentM Yes* 1 Text Node (20 Payment Method ethod chars max) • Values include Credit Card, Invoice, C.O.D., and Paypal • A Custom Payment Method is also possible Order/Payment/CreditCard No 1 Container For Payment Method of Credit Card Order/Payment/CreditCard/ Yes* 1 Text Node (10 Credit Card Type (Visa, MasterCard, American CreditCardType chars max) Express, Diners Club, Discover, enRoute, or JCB) Order/Payment/CreditCard/ No 1 Text Node (16 Credit Card Number CreditCardNumber chars max) • Entire number included only if the Full CC Access: Report/XML option (Settings/Site Options in the OMS) is on Order/Payment/CreditCard/ Yes* 1 Date Node Credit Card Expiration Date CreditCardExpDate (mm/yyyy) Order/Pending No 1 Container

Order/Pending/AutoActivat No 1 Container Date that the Pending Order will be automatically ionDate activated Order/Pending/AutoActivat Yes* 1 Container ionDate/DateTime Order/Pending/AutoActivat Yes* 1 Date Node Activation Date ionDate/DateTime/Date (mm/dd/yyyy) Order/Pending/AutoCancel No 1 Container Date that the Pending Order will be automatically Date canceled

20 Element Xpath Always Occurs Type Description Order/Pending/AutoCancel Yes* 1 Container Date/DateTime Order/Pending/AutoCancel Yes* 1 Date Node Cancellation Date Date/DateTime/Date (mm/dd/yyyy) Order/Pending/MinOrderQ No 1 Integer Node Minimum order quantity ty Order/Pending/MinOrderPr No 1 Currency Minimum order price ice Node Order/Pending/AllowCusto No 1 Empty Node If present, the customer is allowed to cancel the merCancel order Order/PONumber No 1 Text Node (40 Purchase Order Number chars max) Order/PlacedBy Yes 1 Text Node (25 The method used to place the order (for example, chars max) Intenet, Phone, Email) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Orders Order/PlacedByNote No 1 Text Node (25 Placed By Note chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Orders Order/BulkOrderName No 1 Text Node (50 Bulk Order Name (if Order/PlacedBy is Bulk chars max) Order) Order/PlacedWith No 1 Container For orders placed from OMS Order/PlacedWith/Name Yes* 1 Container Order/PlacedWith/Name/Fi Yes* 1 Text Node (50 Placed With First Name rstName chars max) Order/PlacedWith/Name/L Yes* 1 Text Node (50 Placed With Last Name astName chars max) Order/LastUpd Yes 1 Container Order/LastUpd/DateTime Yes 1 Container Order/LastUpd/DateTime/ Yes 1 Date Node Last Updated Date Date (mm/dd/yyyy) Order/LastUpd/DateTime/ Yes 1 Time Node Last Updated Time Time (hh:mm) Order/LastUpdBy No 1 Container For orders last updated by OMS User or Drop Ship Vendor Order/LastUpdBy/Name No 1 Container Order/LastUpdBy/Name/Fi Yes* 1 Text Node (50 Last Updated By First Name (if last updated by rstName chars max) OMS User) Order/LastUpdBy/Name/L Yes* 1 Text Node (50 Last Updated By Last Name (if last updated by astName chars max) OMS User) Order/LastUpdBy/Vendor No 1 Text Node (75 Last Updated By Vendor Name (if last updated Name chars max) by Drop Ship Vendor) Order/LastUpdBy/LastUpd No 1 Text Node (25 Last Updated By Note ByNote chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Orders Order/Comments No 1 Container For orders with Customer and/or Company Comments

21 Element Xpath Always Occurs Type Description Order/Comments/Customer No 1 Text Node Customer Comments Comments Order/Comments/Company No 1 Text Node Company Comments Comments Order/Comments/DisplayC No 1 Empty Node Indicates Company Comments may be displayed ompanyComments to customer Order/IP No 1 Container For orders Placed By Internet, when available Order/IP/IPAddress Yes* 1 Text Node (15 Customer IP Address chars max) Order/IP/CountryCode No 1 Text Node (2 Customer IP Country (if available) chars max) Order/Browser No 1 Container Order/Browser/BrowserNa No 1 Text Node (15 Browser User Agent Name (if available) me chars max) Order/Browser/BrowserNa No 1 Numeric Browser Version Number (if available) me @Version Attribute Order/Browser/PlatformNa No 1 Text Node (20 Browser Platform Name (if available) me chars max) Order/Browser/PlatformNa No 1 Numeric Browser Platform Version Number (if available) me @Version Attribute Order/Archived No 1 Empty Node Indicates order is Archived Order/ShipTo No 1 + Container For Product Orders Order/ShipTo/Address Yes* 1 Container For Ship To Address Order/ShipTo/Address Yes* 1 Text Attribute Ship To Address Type (Residential or Business) @Type (11 chars max) Order/ShipTo/Address No 1 Text Attribute Ship To Address Label @Label (25 chars max) Order/ShipTo/Address/Add No 1 Container ressBook Order/ShipTo/Address/Add Yes* 1 Integer Customer Address Book ID (if present) ressBook @ID Attribute Order/ShipTo/Address/Add No 1 Text Attribute Customer Address Book Label (if present) ressBook @Label (25 chars max) Order/ShipTo/Address/Na Yes* 1 Container me Order/ShipTo/Address/Na Yes* 1 Text Node (50 Ship To First Name me/FirstName chars max) Order/ShipTo/Address/Na Yes* 1 Text Node (50 Ship To Last Name me/LastName chars max) Order/ShipTo/Address/Co No 1 Text Node Ship To Company Name mpanyName (100 chars • Usage of the Company Name field is set at max) Customers/Types in the OMS Order/ShipTo/Address/Stre Yes* 1 Text Node Ship To Street Address (Line 1) etAddress1 (100 chars max) Order/ShipTo/Address/Stre No 1 Text Node Ship To Street Address (Line 2) etAddress2 (100 chars max) Order/ShipTo/Address/City Yes* 1 Text Node (50 Ship To City chars max)

22 Element Xpath Always Occurs Type Description Order/ShipTo/Address/Stat No 1 Text Node (2 Ship To State/Province Code eProvCode chars max) Order/ShipTo/Address/Zip Yes* 1 Text Node (20 Ship To Zip/Postal Code PostalCode chars max) Order/ShipTo/Address/Cou Yes* 1 Text Node (2 Ship To Country Code ntryCode chars max) Order/ShipTo/Address/Pho Yes* 1 Text Node (50 Ship To Phone Number neNumber chars max) Order/ShipTo/Address/Pho No 1 Text Node (30 Ship To Phone Extension neExt chars max) Order/ShipTo/Address/Inv No 1 Empty Node Indicates that Ship To Address has been flagged alidAddress as invalid by UPS Address Validation Order/ShipTo/SalesTaxRat No 1 Percent Node Sales Tax Rate charged (if defined) e Order/ShipTo/GiftMessage No 1 Container For requested Gift Message Order/ShipTo/GiftMessage Yes* 1 Text Node Gift Message Text /GiftMessageText Order/ShipTo/GiftWrap No 1 Empty Node Indicates requested Gift Wrapping Order/ShipTo/ShipFrom Yes* 1 + Container Order/ShipTo/ShipFrom Yes* 1 Text Attribute Internal Name of Ship From Address @Name (50 chars max) Order/ShipTo/ShipFrom/A Yes 1 Container ddress Order/ShipTo/ShipFrom/A Yes 1 Container ddress/Name Order/ShipTo/ShipFrom/A Yes 1 Text Node (50 Ship From Location Contact First Name ddress/Name/FirstName chars max) Order/ShipTo/ShipFrom/A Yes 1 Text Node (50 Ship From Location Contact Last Name ddress/Name/LastName chars max) Order/ShipTo/ShipFrom/A No 1 Text Node Ship From Location Name ddress/CompanyName (100 chars max) Order/ShipTo/ShipFrom/A Yes 1 Text Node Ship From Location Street Address (Line 1) ddress/StreetAddress1 (100 chars max) Order/ShipTo/ShipFrom/A No 1 Text Node Ship From Location Street Address (Line 2) ddress/StreetAddress2 (100 chars max) Order/ShipTo/ShipFrom/A Yes 1 Text Node (50 Ship From Location City ddress/City chars max) Order/ShipTo/ShipFrom/A No 1 Text Node (2 Ship From Location State/Province Code ddress/StateProvCode chars max) Order/ShipTo/ShipFrom/A Yes 1 Text Node (20 Ship From Location Zip/Postal Code ddress/ZipPostalCode chars max) Order/ShipTo/ShipFrom/A Yes 1 Text Node (2 Ship From Location Country Code ddress/CountryCode chars max) Order/ShipTo/ShipFrom/A Yes 1 Text Node (50 Ship From Location Phone Number ddress/PhoneNumber chars max) Order/ShipTo/ShipFrom/Li Yes* 1 + Container neItem

23 Element Xpath Always Occurs Type Description Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Line Item is Taxable (Yes or No) neItem @Taxable (3 chars max) Order/ShipTo/ShipFrom/Li Yes 1 Integer Node Line Item Number (unique ID) neItem/LineNo Order/ShipTo/ShipFrom/Li No 1 Text/Integer/N Line Item Custom Field Value neItem/LineNo/CustomFiel umeric/Curren • Node value depends on Field Type of Custom d cy/Date Node Field Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Line Item Custom Field Name neItem/LineNo/CustomFiel (50 chars max) d @Name Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Line Item Custom Field Type (Text, Positive neItem/LineNo/CustomFiel (16 chars max) Number, Positive Integer, Currency, Date, d @Type Yes/No) Order/ShipTo/ShipFrom/Li Yes* 1 Container neItem/LineProduct Order/ShipTo/ShipFrom/Li Yes* 1 Integer Node Line Item Product Number (unique ID) neItem/LineProduct/Produc tNo Order/ShipTo/ShipFrom/Li Yes* 1 Text Node Line Item Product Name neItem/LineProduct/Produc (100 chars tName max) Order/ShipTo/ShipFrom/Li No 1 Text Node (50 Line Item Product SKU neItem/LineProduct/Produc chars max) tSKU Order/ShipTo/ShipFrom/Li No 1 + Text Node (50 Line Item Attribute Value neItem/LineProduct/Attrib chars max) ute Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Line Item Attribute Name neItem/LineProduct/Attrib (50 chars max) ute @Name Order/ShipTo/ShipFrom/Li No 1 + Text Node Line Item Write-In Attribute Value neItem/LineProduct/WriteI (4000 chars n max) Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Line Item Write-In Attribute Name neItem/LineProduct/WriteI (50 chars max) n @Name Order/ShipTo/ShipFrom/Li Yes* 1 Text Node Line Item Product Primary Category Name neItem/LineProduct/Catego • Subcategories appear as category paths ry separated by " / " (e.g. Golf Clubs / Putters). Note that there is a space on either side of the forward slash Order/ShipTo/ShipFrom/Li Yes* 1 Integer Line Item Product Primary Category Number neItem/LineProduct/Catego Attribute ry @No Order/ShipTo/ShipFrom/Li No 1 Container Inventory Kit Products/SKU's neItem/LineProduct/Invent • Included if the Line Item contains an Inventory oryKit Kit Order/ShipTo/ShipFrom/Li Yes* 1 + Container neItem/LineProduct/Invent oryKit/KitProduct

24 Element Xpath Always Occurs Type Description Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Inventory Kit Line Item SKU Number neItem/LineProduct/Invent • Included if the Inventory Kit is defined as a oryKit/KitProduct @SKU SKU Level Inventory Kit Order/ShipTo/ShipFrom/Li Yes* 1 Text Node Inventory Kit Product Name neItem/LineProduct/Invent oryKit/KitProduct/Product Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Indicates whether the Inventory Kit Product is neItem/LineProduct/Invent defined at the Product Level or the SKU Level oryKit/KitProduct/Product @Level Order/ShipTo/ShipFrom/Li No 1 Text Node Inventory Kit Product SKU number neItem/LineProduct/Invent • Included if a SKU number is defined for the oryKit/KitProduct/SKU Inventory Kit Product Order/ShipTo/ShipFrom/Li No 1 + Text Node Inventory Kit Product Attribute Value neItem/LineProduct/Invent • Included if the Inventory Kit Product is defined oryKit/KitProduct/Attribut at the SKU Level e Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Inventory Kit Product Attribute Name neItem/LineProduct/Invent • Included if the Inventory Kit Product is defined oryKit/KitProduct/Attribut at the SKU Level e @Name Order/ShipTo/ShipFrom/Li Yes* 1 Text Node Inventory Kit Product Primary Category Name neItem/LineProduct/Invent • Subcategories appear as category paths oryKit/KitProduct/Categor separated by " / " (e.g. Golf Clubs / Putters). Note y that there is a space on either side of the forward slash Order/ShipTo/ShipFrom/Li Yes* 1 Integer Inventory Kit Product Primary Category Number neItem/LineProduct/Invent Attribute oryKit/KitProduct/Categor y @No Order/ShipTo/ShipFrom/Li No 1 Integer Node Inventory Kit Product Inventory Value neItem/LineProduct/Invent • Included only if Inventory Control is enabled at oryKit/KitProduct/Inventor Settings/Site Options/Inventory Control in the y OMS Order/ShipTo/ShipFrom/Li Yes* 1 Integer Node Inventory Kit Product Quantity Value neItem/LineProduct/Invent oryKit/KitProduct/Quantity Order/ShipTo/ShipFrom/Li No 1 Container Included only if integrated with VinNow neItem/LineProduct/VinNo (Settings/Compatible Software/VinNow in the w OMS) Order/ShipTo/ShipFrom/Li No 1 Text Attribute VinNow SKU-level Product Key neItem/LineProduct/VinNo (50 chars max) w/Key Order/ShipTo/ShipFrom/Li No 1 Text/Integer/N Product Custom Field #1 Value neItem/LineProduct/Custo umeric/Curren • Node Type depends on Field Type of Custom mField1 cy/Date Node Field Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #1 Name neItem/LineProduct/Custo (50 chars max) mField1 @Name Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #1 Type (Text, Positive neItem/LineProduct/Custo (16 chars max) Number, Positive Integer, Currency, Date, mField1 @Type Yes/No)

25 Element Xpath Always Occurs Type Description Order/ShipTo/ShipFrom/Li No 1 Text/Integer/N Product Custom Field #2 Value neItem/LineProduct/Custo umeric/Curren • Node Type depends on Field Type of Custom mField2 cy/Date Node Field Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #2 Name neItem/LineProduct/Custo (50 chars max) mField2 @Name Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #2 Type (Text, Positive neItem/LineProduct/Custo (16 chars max) Number, Positive Integer, Currency, Date, mField2 @Type Yes/No) Order/ShipTo/ShipFrom/Li No 1 Text/Integer/N Product Custom Field #3 Value neItem/LineProduct/Custo umeric/Curren • Node Type depends on Field Type of Custom mField3 cy/Date Node Field Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #3 Name neItem/LineProduct/Custo (50 chars max) mField3 @Name Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #3 Type (Text, Positive neItem/LineProduct/Custo (16 chars max) Number, Positive Integer, Currency, Date, mField3 @Type Yes/No) Order/ShipTo/ShipFrom/Li No 1 Text/Integer/N Product Custom Field #4 Value neItem/LineProduct/Custo umeric/Curren • Node Type depends on Field Type of Custom mField4 cy/Date Node Field Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #4 Name neItem/LineProduct/Custo (50 chars max) mField4 @Name Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #4 Type (Text, Positive neItem/LineProduct/Custo (16 chars max) Number, Positive Integer, Currency, Date, mField4 @Type Yes/No) Order/ShipTo/ShipFrom/Li No 1 Text/Integer/N Product Custom Field #5 Value neItem/LineProduct/Custo umeric/Curren • Node Type depends on Field Type of Custom mField5 cy/Date Node Field Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #5 Name neItem/LineProduct/Custo (50 chars max) mField5 @Name Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #5 Type (Text, Positive neItem/LineProduct/Custo (16 chars max) Number, Positive Integer, Currency, Date, mField5 @Type Yes/No) Order/ShipTo/ShipFrom/Li No 1 Text/Integer/N Product Custom Field #6 Value neItem/LineProduct/Custo umeric/Curren • Node Type depends on Field Type of Custom mField6 cy/Date Node Field Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #6 Name neItem/LineProduct/Custo (50 chars max) mField6 @Name Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Product Custom Field #6 Type (Text, Positive neItem/LineProduct/Custo (16 chars max) Number, Positive Integer, Currency, Date, mField6 @Type Yes/No) Order/ShipTo/ShipFrom/Li Yes* 1 Integer Node Line Item Quantity neItem/Quantity Order/ShipTo/ShipFrom/Li No 1 Integer Node Required Quantity neItem/RequiredQuantity • Included only for Pending Orders, and only if the line item is required Order/ShipTo/ShipFrom/Li Yes* 1 Numeric Node Line Item Unit Weight, in pounds neItem/UnitWeight • Included if the Weight has been defined for the Line Item Product

26 Element Xpath Always Occurs Type Description Order/ShipTo/ShipFrom/Li Yes* 1 Numeric Node Line Item Total Weight, in pounds neItem/TotalWeight • Value is Line Item Quantity multiplied by Line Item Unit Weight • Included if the Line Item Unit Weight contains a value greater than zero Order/ShipTo/ShipFrom/Li Yes* 1 Text Node (17 Line Item Status (Unshipped, In Process, neItem/LineStatus chars max) Shipped, Pending, Backordered, Preordered, Canceled, Return-Ship Agent, or Return- Customer) Order/ShipTo/ShipFrom/Li Yes* 1 Currency Line Item Unit Price neItem/UnitPrice Node • Always 0.00 for Canceled line items Order/ShipTo/ShipFrom/Li Yes* 1 Currency Line Item Extended Price (Unit Price * Quantity) neItem/ExtPrice Node • Always 0.00 for Canceled line items Order/ShipTo/ShipFrom/Li No 1 Container For Shipped line items neItem/ShipDate Order/ShipTo/ShipFrom/Li Yes* 1 Container neItem/ShipDate/DateTime Order/ShipTo/ShipFrom/Li Yes* 1 Date Node Line Item Ship Date neItem/ShipDate/DateTime (mm/dd/yyyy) /Date Order/ShipTo/ShipFrom/Li No 1 Container Included only if Use Review Reminders is neItem/ReviewReminder enabled in Reviews/Setup/Review Reminders in the OMS and a Review Reminder has been sent Order/ShipTo/ShipFrom/Li Yes* 1 Container neItem/ReviewReminder/D ateTime Order/ShipTo/ShipFrom/Li Yes* 1 Date Node Review Reminder Sent Date neItem/ReviewReminder/D (mm/dd/yyyy) ateTime/Date Order/ShipTo/ShipFrom/Li No 1 Text Node (50 Line Item Tracking Number (for Shipped line neItem/TrackingNumber chars max) items, if available) Order/ShipTo/ShipFrom/Li No 1 Text Node (13 ISBN Number neItem/ISBN chars max) Order/ShipTo/ShipFrom/Li No 1 Text Node (14 UPC Number neItem/UPC chars max) Order/ShipTo/ShipFrom/Li No 1 Text Node (50 Manufacturer Part Number neItem/MPN chars max) Order/ShipTo/ShipFrom/Li No 1 Text Atrribute Manufacturer Name neItem/MPN (50 chars max) @Manufacturer Order/ShipTo/ShipFrom/Li No 1 Container If ShipCompliant processing is enabled neItem/ShipCompliant (Settings/Compatible Software/ShipCompliant), this field overrides the default settings for ShipCompliant web service. Order/ShipTo/ShipFrom/Li Yes* 1 Text Node (50 ShipCompliant Product Key neItem/ShipCompliant/Pro chars max) ductKey Order/ShipTo/ShipFrom/Li Yes* 1 Text Node (50 ShipCompliant Brand Key neItem/ShipCompliant/Bra chars max) ndKey Order/ShipTo/ShipFrom/Li No 1 Container Included only if integrated with VinNow neItem/VinNow (Settings/Compatible Software/VinNow in the OMS)

27 Element Xpath Always Occurs Type Description Order/ShipTo/ShipFrom/Li No 1 Text Node (50 VinNow Product Key neItem/VinNow/ProductKe chars max) y Order/ShipTo/ShipFrom/Li No 1 Text Node (50 VinNow Brand Key neItem/VinNow/BrandKey chars max) Order/ShipTo/ShipFrom/Li No 1 Empty Node Indicates Parent Line Item (for split line items) neItem/Parent Order/ShipTo/ShipFrom/Li No 1 Empty Node Indicates Child Line Item (for split line items) neItem/Child Order/ShipTo/ShipFrom/S No 1 Container ShipCompliant compliance status hipCompliant • Usage of the ShipCompliant web service is set at Settings/Compatible Software/ShipCompliant in the OMS Order/ShipTo/ShipFrom/S Yes* 1 Text Node (6 ShipCompliant status flag (Green or Red) hipCompliant/SCFlag chars max) Order/ShipTo/ShipFrom/S Yes* 1 Text Node ShipCompliant error message hipCompliant/SCMessage • Included if SCFlag is Red Order/ShipTo/ShipFrom/S Yes* 1 Text Node (50 Shipping Method hipMethod chars max) Order/ShipTo/ShipFrom/S Yes* 1 Text Attribute Shipper corresponding to Shipping Method hipMethod @Shipper (6 chars max) ((none), UPS, FedEx, DHL, USPS, or Other) Order/ShipTo/ShipFrom/S No 1 Integer Time In Transit, in business days hipMethod Attribute @TimeInTransit Order/ShipTo/ShipFrom/S No 1 Currency Shipping Rate (if defined) hipRate Node Order/ShipTo/ShipFrom/S Yes* 1 Text Attribute Shipping Rate is Taxable (Yes or No) hipRate @Taxable (3 chars max) Order/ShipTo/ShipFrom/S No 1 Text Attribute Ship Rate Export SKU hipRate @SKU • Included if the Shipping field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS Order/ShipTo/ShipFrom/S No 1 Numeric Node Total Shipping Weight, in pounds hipWeight • Included if Line Item Total Weight(s) are calculated Order/ShipTo/ShipFrom/Pr No 1 Container For Preferred Ship Date and Preferred Delivery eferredDelivery Date Order/ShipTo/ShipFrom/Pr Yes* 1 Container eferredDelivery/PreferredS hipDate Order/ShipTo/ShipFrom/Pr Yes* 1 Container eferredDelivery/PreferredS hipDate/DateTime Order/ShipTo/ShipFrom/Pr Yes* 1 Date Node Preferred Ship Date eferredDelivery/PreferredS (mm/dd/yyyy) hipDate/DateTime/Date Order/ShipTo/ShipFrom/Pr Yes* 1 Container eferredDelivery/ PreferredDeliveryDate Order/ShipTo/ShipFrom/Pr Yes* 1 Container eferredDelivery/ PreferredDeliveryDate /DateTime

28 Element Xpath Always Occurs Type Description Order/ShipTo/ShipFrom/Pr Yes* 1 Date Node Preferred Delivery Date eferredDelivery/PreferredD (mm/dd/yyyy) eliveryDate/DateTime/Date Order/ShipTo/ShipFrom/A Yes 1 Container Contains totals apportioned to the Ship To/Ship pportionment From combination as if it were its own order • Primarily useful for integrating with systems that do not support Multiple Ship To/Ship From Order/ShipTo/ShipFrom/A Yes 1 Currency Apportioned Order Total pportionment/Apportionme Node ntTotal Order/ShipTo/ShipFrom/A Yes 1 Currency Apportioned Line Item Total pportionment/LineItemTot Node al Order/ShipTo/ShipFrom/A Yes 1 Currency Apportioned Discount Total pportionment/DiscountTota Node • Includes all discounts other than Gift Certificate l and Gift Card discounts (i.e. Category, Order, Coupon, Customer, and Sharing discounts) • Includes Loyalty Discount if Customer Loyalty is applied as a discount (Settings/Site Options/Customer Loyalty in the OMS) Order/ShipTo/ShipFrom/A No 1 Currency Apportioned Gratuity (if any) pportionment/Gratuity Node Order/ShipTo/ShipFrom/A No 1 Currency Apportioned Gift Certificate Discount (if any) pportionment/GiftCertDisc Node ount Order/ShipTo/ShipFrom/A No 1 Currency Apportioned Gift Card Discount (if any) pportionment/GiftCardDisc Node ount Order/ShipTo/ShipFrom/A No 1 Currency Apportioned Loyalty Discount (if any) pportionment/LoyaltyDisco Node • Included if Customer Loyalty is applied as a unt payment (Settings/Site Options/Customer Loyalty in the OMS) Order/ShipTo/ShipFrom/A No 1 Currency Apportioned Sales Tax (if defined) pportionment/SalesTaxTot Node al Order/Pickups For Pickup Orders Order/Pickups/Pickup No 1 + Container Order/Pickups/Pickup Yes* 1 Text Attribute Internal Name of Pickup Location @Location (50 chars max) Order/Pickups/Pickup/Add Yes 1 Container ress Order/Pickups/Pickup/Add Yes 1 Container ress/Name Order/Pickups/Pickup/Add Yes 1 Text Node (50 Pickup Location Contact First Name ress/Name/FirstName chars max) Order/Pickups/Pickup/Add Yes 1 Text Node (50 Pickup Location Contact Last Name ress/Name/LastName chars max) Order/Pickups/Pickup/Add No 1 Text Node Pickup Location Name ress/CompanyName (100 chars max) Order/Pickups/Pickup/Add Yes 1 Text Node Pickup Location Street Address (Line 1) ress/StreetAddress1 (100 chars max)

29 Element Xpath Always Occurs Type Description Order/Pickups/Pickup/Add No 1 Text Node Pickup Location Street Address (Line 2) ress/StreetAddress2 (100 chars max) Order/Pickups/Pickup/Add Yes 1 Text Node (50 Pickup Location City ress/City chars max) Order/Pickups/Pickup/Add No 1 Text Node (2 Pickup Location State/Province Code ress/StateProvCode chars max) Order/Pickups/Pickup/Add Yes 1 Text Node (20 Pickup Location Zip/Postal Code ress/ZipPostalCode chars max) Order/Pickups/Pickup/Add Yes 1 Text Node (2 Pickup Location Country Code ress/CountryCode chars max) Order/Pickups/Pickup/Add Yes 1 Text Node (50 Pickup Location Phone Number ress/PhoneNumber chars max) Order/Pickups/Pickup/Add No 1 Text Node (30 Pickup Location Phone Extension ress/PhoneExt chars max) Order/Pickups/Pickup/Sale No 1 Percent Node Sales Tax Rate charged (if defined) sTaxRate Order/Pickups/Pickup/Line Yes* 1 + Container Item Order/Pickups/Pickup/Line Yes* 1 Text Attribute Line Item is Taxable (Yes or No) Item @Taxable (3 chars max) Order/Pickups/Pickup/Line Yes 1 Integer Node Line Item Number (unique ID) Item/LineNo Order/Pickups/Pickup/Line No 1 Text/Integer/N Line Item Custom Field Value Item/LineNo/CustomField umeric/Curren • Node value depends on Field Type of Custom cy/Date Node Field Order/Pickups/Pickup/Line Yes* 1 Text Attribute Line Item Custom Field Name Item/LineNo/CustomField (50 chars max) @Name Order/ShipTo/ShipFrom/Li Yes* 1 Text Attribute Line Item Custom Field Type (Text, Positive neItem/LineNo/CustomFiel (16 chars max) Number, Positive Integer, Currency, Date, d @Type Yes/No) Order/Pickups/Pickup/Line Yes* 1 Container Item/LineProduct Order/Pickups/Pickup/Line Yes* 1 Integer Node Line Item Product Number (unique ID) Item/LineProduct/Product No Order/Pickups/Pickup/Line Yes* 1 Text Node Line Item Product Name Item/LineProduct/Product (100 chars Name max) Order/Pickups/Pickup/Line No 1 Text Node (50 Line Item Product SKU Item/LineProduct/ProductS chars max) KU Order/Pickups/Pickup/Line No 1 + Text Node (50 Line Item Attribute Value Item/LineProduct/Attribute chars max)

Order/Pickups/Pickup/Line Yes* 1 Text Attribute Line Item Attribute Name Item/LineProduct/Attribute (50 chars max) @Name

30 Element Xpath Always Occurs Type Description Order/Pickups/Pickup/Line No 1 + Text Node Line Item Write-In Attribute Value Item/LineProduct/WriteIn (4000 chars max) Order/Pickups/Pickup/Line Yes* 1 Text Attribute Line Item Write-In Attribute Name Item/LineProduct/WriteIn (50 chars max) @Name Order/Pickups/Pickup/Line Yes* 1 Text Node Line Item Product Primary Category Name Item/LineProduct/Category • Subcategories appear as category paths separated by " / " (e.g. Golf Clubs / Putters). Note that there is a space on either side of the forward slash Order/Pickups/Pickup/Line Yes* 1 Integer Line Item Product Primary Category Number Item/LineProduct/Category Attribute @No Order/Pickups/Pickup/Line No 1 Container Inventory Kit Products/SKU's Item/LineProduct/Inventor • Included if the Line Item contains an Inventory yKit Kit Order/Pickups/Pickup/Line Yes* 1 + Container Item/LineProduct/Inventor yKit/KitProduct Order/Pickups/Pickup/Line Yes* 1 Text Attribute Inventory Kit Line Item SKU Number Item/LineProduct/Inventor • Included if the Inventory Kit is defined as a yKit/KitProduct @SKU SKU Level Inventory Kit Order/Pickups/Pickup/Line Yes* 1 Text Node Inventory Kit Product Name Item/LineProduct/Inventor yKit/KitProduct/Product Order/Pickups/Pickup/Line Yes* 1 Text Attribute Indicates whether the Inventory Kit Product is Item/LineProduct/Inventor defined at the Product Level or the SKU Level yKit/KitProduct/Product @Level Order/Pickups/Pickup/Line No 1 Text Node Inventory Kit Product SKU number Item/LineProduct/Inventor • Included if a SKU number is defined for the yKit/KitProduct/SKU Inventory Kit Product Order/Pickups/Pickup/Line No 1 + Text Node Inventory Kit Product Attribute Value Item/LineProduct/Inventor • Included if the Inventory Kit Product is defined yKit/KitProduct/Attribute at the SKU Level Order/Pickups/Pickup/Line Yes* 1 Text Attribute Inventory Kit Product Attribute Name Item/LineProduct/Inventor • Included if the Inventory Kit Product is defined yKit/KitProduct/Attribute at the SKU Level @Name Order/Pickups/Pickup/Line Yes* 1 Text Node Inventory Kit Product Primary Category Name Item/LineProduct/Inventor • Subcategories appear as category paths yKit/KitProduct/Category separated by " / " (e.g. Golf Clubs / Putters). Note that there is a space on either side of the forward slash Order/Pickups/Pickup/Line Yes* 1 Integer Inventory Kit Product Primary Category Number Item/LineProduct/Inventor Attribute yKit/KitProduct/Category @No Order/Pickups/Pickup/Line No 1 Integer Node Inventory Kit Product Inventory Value Item/LineProduct/Inventor • Included only if Inventory Control is enabled at yKit/KitProduct/Inventory Settings/Site Options/Inventory Control in the OMS

31 Element Xpath Always Occurs Type Description Order/Pickups/Pickup/Line Yes* 1 Integer Node Inventory Kit Product Quantity Value Item/LineProduct/Inventor yKit/KitProduct/Quantity Order/Pickups/Pickup/Line No 1 Container Included only if integrated with VinNow Item/LineProduct/VinNow (Settings/Compatible Software/VinNow in the OMS) Order/Pickups/Pickup/Line No 1 Text Attribute VinNow SKU-level Product Key Item/LineProduct/VinNow/ (50 chars max) Key Order/Pickups/Pickup/Line Yes* 1 Integer Node Line Item Quantity Item/Quantity Order/Pickups/Pickup/Line No 1 Integer Node Required Quantity Item/RequiredQuantity • Included only for Pending Orders, and only if the line item is required Order/Pickups/Pickup/Line Yes* 1 Numeric Node Line Item Unit Weight, in pounds Item/UnitWeight • Included if the Weight has been defined for the Line Item Product Order/Pickups/Pickup/Line Yes* 1 Numeric Node Line Item Total Weight, in pounds Item/TotalWeight • Value is Line Item Quantity multiplied by Line Item Unit Weight • Included if the Line Item Unit Weight contains a value greater than zero Order/Pickups/Pickup/Line Yes* 1 Text Node (17 Line Item Status (Not Ready, In Process, Ready, Item/LineStatus chars max) Picked Up, Backordered, Preordered, Canceled, or Return-Customer) Order/Pickups/Pickup/Line Yes* 1 Currency Line Item Unit Price Item/UnitPrice Node • Always 0.00 for Canceled line items Order/Pickups/Pickup/Line Yes* 1 Currency Line Item Extended Price (Unit Price * Quantity) Item/ExtPrice Node • Always 0.00 for Canceled line items Order/Pickups/Pickup/Line No 1 Container For line items that have been Picked Up Item/PickupDate Order/Pickups/Pickup/Line Yes* 1 Container Item/PickupDate/DateTime Order/Pickups/Pickup/Line Yes* 1 Date Node Line Item Pickup Date Item/PickupDate/DateTime (mm/dd/yyyy) /Date Order/Pickups/Pickup/Line No 1 Text Node (50 First and Last Name of the Customer or Trustee Item/PickedUpBy chars max) that signed for the Order or Order Line Item • Included only if the Customer or the Trustee signed for the Order or Order Line Item when it was picked up Order/Pickups/Pickup/Line No 1 Container Included only if Use Review Reminders is Item/ReviewReminder enabled in Reviews/Setup/Review Reminders in the OMS and a Review Reminder has been sent Order/Pickups/Pickup/Line Yes* 1 Container Item/ReviewReminder/Dat eTime Order/Pickups/Pickup/Line Yes* 1 Date Node Review Reminder Sent Date Item/ReviewReminder/Dat (mm/dd/yyyy) eTime/Date Order/Pickups/Pickup/Line No 1 Container Included only if integrated with VinNow Item/VinNow (Settings/Compatible Software/VinNow in the OMS)

32 Element Xpath Always Occurs Type Description Order/Pickups/Pickup/Line No 1 Text Node (50 VinNow Product Key Item/VinNow/ProductKey chars max) Order/Pickups/Pickup/Line No 1 Text Node (50 VinNow Brand Key Item/VinNow/BrandKey chars max) Order/Pickups/Pickup/Line No 1 Empty Node Indicates Parent Line Item (for split line items) Item/Parent Order/Pickups/Pickup/Line No 1 Empty Node Indicates Child Line Item (for split line items) Item/Child Order/Pickups/Pickup/Exp No 1 Container For line items that have an Expected Pickup Date ectedPickupDate Order/Pickups/Pickup/Exp Yes* 1 Container ectedPickupDate/DateTime Order/Pickups/Pickup/Exp Yes* 1 Date Node Line Item Expected Pickup Date ectedPickupDate/DateTime (mm/dd/yyyy) /Date Order/Pickups/Pickup/App Yes 1 Container Contains totals apportioned to the Pickup ortionment Location as if it were its own order • Primarily useful for integrating with systems that do not support Pickup Locations Order/Pickups/Pickup/App Yes 1 Currency Apportioned Order Total ortionment/Apportionment Node Total Order/Pickups/Pickup/App Yes 1 Currency Apportioned Line Item Total ortionment/LineItemTotal Node Order/Pickups/Pickup/App Yes 1 Currency Apportioned Discount Total ortionment/DiscountTotal Node • Includes all discounts other than Gift Certificate and Gift Card discounts (i.e. Category, Order, Coupon, Customer, and Sharing discounts) Order/Pickups/Pickup/App No 1 Currency Apportioned Gratuity (if any) ortionment/Gratuity Node Order/Pickups/Pickup/App No 1 Currency Apportioned Gift Certificate Discount (if any) ortionment/GiftCertDiscou Node nt Order/Pickups/Pickup/App No 1 Currency Apportioned Gift Card Discount (if any) ortionment/GiftCardDiscou Node nt Order/Pickups/Pickup/App No 1 Currency Apportioned Sales Tax (if defined) ortionment/SalesTaxTotal Node Order/Discounts No 1 Container For Product Orders, if discounts are present Order/Discounts @Taxable Yes 1 Text Attribute Discounts are Taxable (Yes or No) (3 chars max) Order/Discounts/Category No 1 + Currency Category Discount Amount Discount Node Order/Discounts/Category Yes* 1 Text Attribute Category Name (for Category Discount) Discount @Name • Subcategories appear as category paths separated by " / " (e.g. Golf Clubs / Putters). Note that there is a space on either side of the forward slash Order/Discounts/Category No 1 Text Attribute Category Discount Export SKU Discount @SKU (20 chars max) • Included if the Category Discounts field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS

33 Element Xpath Always Occurs Type Description Order/Discounts/OrderDisc No 1 Currency Order Discount Amount ount Node Order/Discounts/Order No 1 Text Attribute Order Discount Export SKU Discount @SKU (20 chars max) • Included if the Order Discounts field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS Order/Discounts/CouponDi No 1 Currency Coupon Discount Amount scount Node • Does not appear for a Shipping Coupon Order/Discounts/CouponDi Yes* 1 Text Attribute Coupon Code (for Coupon Discount) scount @Code (50 chars max) Order/Discounts/CouponDi No 1 Text Attribute Coupon Discount Export SKU scount @SKU (20 chars max) • Included if the Coupon Discounts field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS Order/Discounts/Customer No 1 Currency Customer Discount Amount Discount Node Order/Discounts/Customer Yes* 1 Percent Customer Discount Percent Discount @Percent Attribute Order/Discounts/Customer No 1 Text Attribute Customer Discount Export SKU Discount @SKU (20 chars max) • Included if the Customer Discounts field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS Order/Discounts/SharingDi No 1 Currency Sharing Discount Amount scount Node Order/Discounts/SharingDi No 1 Text Attribute Sharing Discount Export SKU scount @SKU (20 chars max) • Included if the Sharing Discounts field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS Order/Discounts/GiftCertD No 1 Currency Gift Certificate Discount Amount iscount Node • The Category @Taxable attribute does not apply to Gift Certificates Order/Discounts/GiftCertD Yes* 1 Text Attribute Gift Certificate Code (for Gift Certificate iscount @Code (20 chars max) Discount) Order/Discounts/GiftCertD No 1 Text Attribute Gift Certificate Discount Export SKU iscount @SKU (20 chars max) • Included if the Gift Certificate Discounts field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS Order/Discounts/GiftCard No 1 Currency FlexCache Gift Card Discount Amount Discount Node Order/Discounts/GiftCard Yes* 1 Text Attribute FlexCache Gift Card Number (for FlexCache Gift Discount @No (19 chars max) Card Discount) Order/Discounts/GiftCard No 1 Text Attribute FlexCache Gift Card PIN (for FlexCache Gift Discount @PIN (4 chars max) Card Discount) Order/Discounts/GiftCard No 1 Text Attribute Gift Card Discount Export SKU Discount @SKU (20 chars max) • Included if the Gift Card Discount field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS Order/Discounts/LoyaltyDi No 1 Currency Loyalty Discount Amount scount Node Order/Discounts/LoyaltyDi No 1 Text Attribute Loyalty Discount Export SKU scount @SKU (20 chars max) • Included if the Loyalty Discount field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS

34 Element Xpath Always Occurs Type Description Order/Gratuity No 1 Currency Gratuity Amount Node Order/Gratuity @SKU No 1 Text Attribute Gratuity Export SKU (20 chars max) • Included if the Gratuities field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS Order/ShipRate No 1 Currency Total Shipping Rate (for Product orders, if Node defined) Order/ShipRate No 1 Text Attribute Shipping Coupon Code @CouponCode (50 chars max) Order/SalesTax No 1 Container For Sales Tax charged Order/SalesTax/SalesTaxT Yes* 1 Currency Total Sales Tax (for Product orders, if defined) otal Node Order/SalesTax/SalesTaxT No 1 Text Attribute Sales Tax Total Export SKU otal @SKU • Included if the Sales Tax field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS Order/SalesTax/SalesTaxJu No 1 + Container For breaking down Sales Tax by jurisdiction risdiction Order/SalesTax/SalesTaxJu Yes* 1 Text Node (2 Country Code for sales tax jurisdiction risdiction/CountryCode chars max) Order/SalesTax/SalesTaxJu No 1 Text Node (2 State/Province Code for sales tax jurisdiction risdiction/StateProvCode chars max) Order/SalesTax/SalesTaxJu No 1 Text Node (50 County for sales tax jurisdiction (via third party risdiction/County chars max) sales tax data) • Included for US sales tax jurisdictions only Order/SalesTax/SalesTaxJu No 1 Text Node (50 City for sales tax jurisdiction (via third party sales risdiction/City chars max) tax data) • Included for US sales tax jurisdictions only Order/SalesTax/SalesTaxJu Yes* 1 Currency Taxable Total in sales tax jurisdiction risdiction/TaxableTotal Node Order/SalesTax/SalesTaxJu Yes* 1 Percent Node Sales Tax Rate in sales tax jurisdiction risdiction/SalesTaxRate Order/SalesTax/SalesTaxJu Yes* 1 Currency Sales Tax charged in sales tax jurisdiction risdiction/SalesTaxAmount Node Order/GiftCert No 1 + Container For Gift Certificate Orders Order/GiftCert/GiftCertCo Yes* 1 Text Node (20 Gift Certificate Code de chars max) Order/GiftCert/GiftCertRec Yes* 1 Container ipient Order/GiftCert/GiftCertRec Yes* 1 Container ipient/Name Order/GiftCert/GiftCertRec Yes* 1 Text Node (50 Recipient First Name ipient/Name/FirstName chars max) Order/GiftCert/GiftCertRec Yes* 1 Text Node (50 Recipient Last Name ipient/Name/LastName chars max) Order/GiftCert/GiftCertRec Yes* 1 Text Node (50 Recipient E-Mail Address ipient/Email chars max) Order/GiftCert/Category No 1 Text Node Gift Certificate Category Name (if any) • Subcategories appear as category paths separated by " / " (e.g. Golf Clubs / Putters). Note that there is a space on either side of the forward slash

35 Element Xpath Always Occurs Type Description Order/GiftCert/Category Yes* 1 Integer Gift Certificate Category Number @No Attribute Order/GiftCert/GiftCertStat Yes* 1 Text Node (8 Gift Certificate Status (Unsent, Sent, or Canceled) us chars max) Order/GiftCert/SendDate No 1 Container For Sent gift certificates Order/GiftCert/SendDate/D Yes* 1 Container ateTime Order/GiftCert/SendDate/D Yes* 1 Date Node Gift Certificate Send Date ateTime/Date (mm/dd/yyyy) Order/GiftCert/GiftCertEx No 1 Container For Sent gift certificates pDate Order/GiftCert/GiftCertEx Yes* 1 Container pDate/DateTime Order/GiftCert/GiftCertEx Yes* 1 Date Node Gift Certificate Expiration Date pDate/DateTime/Date (mm/dd/yyyy) Order/GiftCert/GiftCertAm Yes* 1 Currency Gift Certificate Amount ount Node • Always 0.00 for Canceled gift certificates Order/GiftCert/GiftCertAm No 1 Text Attribute Gift Certificate Export SKU ount @SKU • Included if the Gift Certificate Sales field is specified at Orders/Export/Excel & Access Preferences/Export SKUs in the OMS Order/GiftCert/GiftCertMe No 1 Text Node Gift Certificate Message (if provided) ssage Order/Affiliate No 1 Container For orders with an associated Affiliate Order/Affiliate/AffiliateCat No 1 Text Node Affiliate Category (if applicable) egory (100 chars max) Order/Affiliate/AffiliateNa Yes* 1 Text Node Affiliate Name me (100 chars max) Order/Affiliate/Commissio Yes* 1 Currency Affiliate Commission n Node Order/Currency No 1 Container For orders in which a foreign currency (i.e. a currency other than the United States Dollar) has been selected by the customer Order/Currency/CurrencyN Yes* 1 Text Node Foreign Currency Name (e.g. Japanese Yen) ame (100 chars max) Order/Currency/CurrencyC Yes* 1 Text Node (3 ISO Code for foreign currency (e.g. JPY) ode chars max) Order/Currency/Exchange Yes* 1 Numeric Node Exchange Rate, in units of foreign currency per Rate United States Dollar Order/Currency/OrderAmo Yes* 1 Currency Order Total Amount in units of foreign currency unt Node Order/Currency/BillInCurr No 1 Empty Node Order was billed in this currency ency Order/CreditCardTransacti No 1 + Container For a Credit Card Transaction on • Included only if the IncludeTransactions node is present in the OrderQueryRequest, and the order includes Credit Card Transactions

36 Element Xpath Always Occurs Type Description Order/CreditCardTransacti Yes* 1 Container on/TransactionDate Order/CreditCardTransacti Yes* 1 Container on/TransactionDate/DateTi me Order/CreditCardTransacti Yes* 1 Date Node Transaction Date on/TransactionDate/DateTi (mm/dd/yyyy) me/Date Order/CreditCardTransacti Yes* 1 Time Node Order Time (default value: 00:00) on/TransactionDate/DateTi (hh:mm) me/Time Order/CreditCardTransacti Yes* 1 Text Node (18 Transaction Type (Auth Only, Auth Capture, on/TransactionType chars max) Prior Auth Capture, Refund, or Void) Order/CreditCardTransacti Yes* 1 Integer Node Gateway Order Number on/GatewayOrderNo Order/CreditCardTransacti Yes* 1 Text Node (8 Transaction Status (Success, Declined, or Error) on/TransactionStatus chars max) Order/CreditCardTransacti No 1 Text Node Notes on the Transaction (from the Gateway) on/TransactionNotes Order/CreditCardTransacti Yes* 1 Text Node (50 Transaction Number (from the Gateway) on/TransactionNo chars max) Order/CreditCardTransacti No 1 Text Node (6 Authorization Code (from the Gateway) on/AuthorizationCode chars max) Order/CreditCardTransacti No 1 Text Node (1 Address Verification Service (AVS) Code (from on/AVSCode char) the Gateway) Order/CreditCardTransacti Yes* 1 Container on/CreditCard Order/CreditCardTransacti Yes* 1 Text Node (16 Credit Card Type (Visa, MasterCard, American on/CreditCard/CreditCardT chars max) Express, Diners Club, Discover, enRoute, or JCB) ype Order/CreditCardTransacti No 1 Text Node (16 Credit Card Number on/CreditCard/CreditCard chars max) •Entire number included only if the Full CC Number Access option (Settings/Site Options in the OMS) is on Order/CreditCardTransacti Yes* 1 Date Node Credit Card Expiration Date on/CreditCard/CreditCardE (mm/yyyy) xpDate Order/CreditCardTransacti Yes* 1 Currency Amount Attempted (negative values allowed) on/AmountAttempted Node Order/CreditCardTransacti Yes* 1 Currency Amount Authorized (negative values allowed) on/AmountAuthorized Node Order/CreditCardTransacti Yes* 1 Currency Amount Captured (negative values allowed) on/AmountCaptured Node Order/GiftCardTransaction No 1 + Container For a FlexCache Gift Card Transaction • Included only if the IncludeTransactions node is present in the OrderQueryRequest, and the order includes FlexCache Gift Card Transactions Order/GiftCardTransaction Yes* 1 Container /TransactionDate Order/GiftCardTransaction Yes* 1 Container /TransactionDate/DateTim e

37 Element Xpath Always Occurs Type Description Order/GiftCardTransaction Yes* 1 Date Node Transaction Date /TransactionDate/DateTim (mm/dd/yyyy) e/Date Order/GiftCardTransaction Yes* 1 Text Node (10 Transaction Type (Redemption, Refund, /TransactionType chars max) Reversal, Activate, DeActivate, ReActivate, or Add Value) Order/GiftCardTransaction Yes* 1 Integer Node FlexCache Order Number /FlexCacheOrderNo Order/GiftCardTransaction Yes* 1 Text Node (8 Transaction Status (Success, Declined, or Error) /TransactionStatus chars max) Order/GiftCardTransaction No 1 Text Node Notes on the Transaction (from FlexCache) /TransactionNotes Order/GiftCardTransaction Yes* 1 Text Node (50 Transaction Number (from FlexCache) /TransactionNo chars max) Order/GiftCardTransaction No 1 Text Node (6 Authorization Code (from FlexCache) /AuthorizationCode chars max) Order/GiftCardTransaction No 1 Text Node (1 PIN Validation Response Code (from FlexCache) /PINResponse char) Order/GiftCardTransaction Yes* 1 Container /GiftCard Order/GiftCardTransaction Yes* 1 Text Node (19 FlexCache Gift Card Number /GiftCard/GiftCardNumber chars max) Order/GiftCardTransaction Yes* 1 Text Node (4 FlexCache Gift Card PIN /GiftCard/GiftCardPIN chars max) Order/GiftCardTransaction Yes* 1 Currency Amount Attempted (negative values allowed) /AmountAttempted Node Order/GiftCardTransaction Yes* 1 Currency Value Redeemed (negative values allowed) /ValueRedeemed Node Order/GiftCardTransaction Yes* 1 Currency Value Added (negative values allowed) /ValueAdded Node Order/GiftCardTransaction No 1 Currency Gift Card Balance After Transaction (successful /FinalBalance Node transactions only) Order/Integration No 1 Container See External Mapping for more information NextPage No 1 Empty Node Indicates the existence of a subsequent page of orders

OrderQueryRequest Example (without CurrentStatus node)

fairway Nk5\#/K#0:{!C:SfqVs0 102309 102309 1

38 OrderQueryReply Example (without CurrentStatus node)

102309 09/22/2000 Product 1 ookoshi @bellsouth.net

Roy McKutchen 567 Shaker Lane New Canaan CT 06840 US 517 453 2432
Consumer Shipped 09/22/2000 Paid 846.66 795.90
Roy McKutchen 567 Shaker Lane Springfield CT 06789 US 517 453 2432
Credit Card

39 Visa xxxxxxxxxxxx1111 09/2000 Internet 12/27/2000 Demonstration User

Roy McKutchen 567 Shaker Lane Springfield CT 06789 US 517 453 2432
6 27 15 Ashworth Microfiber Golf Shorts Small Blue 1 Shipped 69.99 69.99 12/27/2000 28 9

40 British Open Towel 3 Shipped 39.99 119.97 12/27/2000 29 10 Nike Course Umbrella 1 Shipped 39.99 39.99 12/27/2000 30 8 Access Proslim Tees 2 Shipped 7.99 15.98 12/27/2000 31 11 Swiss Army Golfer Knife 2 Shipped 49.99 99.98

41 12/27/2000 32 17 Great Big Bertha Hawk Eye Strong 3 1 Shipped 449.99 449.99 12/27/2000 UPS Ground 3.00 3.00 47.75 47.75

OrderQueryReply Schema (with CurrentStatus node) Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) @Page Yes 1 Integer Page number of query results Attribute CurrentStatus Yes 1 Container Current Status of Orders that fall within the specified query range • Included only if a query range is specified and the CurrentStatus node is present in the OrderQueryRequest CurrentStatus/Order Yes 1 - Text Node (20 Order Status 2000 chars max) • Product Orders: Unshipped, In Process, Shipped, Pending, Backordered, Preordered, Canceled, Return-Ship Agent, Return-Customer, Shipped-Partial, Other-See Line Items, or Not Found • Pickup Orders: Not Ready, In Process, Ready, Picked Up, Backordered, Preordered, Return- Customer, or Not Found • Gift Certificate Orders: Unsent, Sent, Canceled, Sent-Partial, Other-See Line Items, or Not Found

42 Element Xpath Always Occurs Type Description CurrentStatus/Order @No Yes 1 Integer Order Number Attribute CurrentStatus/Order Yes 1 Text Attribute Order Type (Product, Pickup, or Gift Certificate) @OrderType (16 chars max) CurrentStatus/Order Yes 1 Text Attribute Billing Status (Unbilled, Authorized, Billed, @BillingStatus (16 chars max) Billed-Partial, Paid, Paid-Partial, Refunded, Refunded-Partial, Declined CC, Canceled, or Not Found) NextPage No 1 Empty Node Indicates the existence of a subsequent page of orders

OrderQueryRequest Example (with CurrentStatus node)

fairway Nk5\#/K#0:{!C:SfqVs0 12/01/2000 12/15/2000

OrderQueryReply Example (with CurrentStatus node)

Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped

43 Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Canceled Shipped Shipped Shipped Sent Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped Shipped

44 6: OrderUpdate

The OrderUpdate is used to update Quantities, Unit Prices, Shipping Options, Sales Tax, Pickup Location, Discounts, Shipping Status (including Ship Dates and Tracking Numbers), Billing Status, and Customer or Company Comments. OrderUpdate can also add additional line items and capture credit card payment for pre-existing orders. In many cases changing the Order Status will result in e-mail(s) automatically being sent; for example, Shipped E-Mails, Gift Certificate E-Mails, and Drop Ship E-Mails, subject to the appropriate options in the OMS.

In the OrderUpdateRequest all orders must be selected by Order Number. You may update the Order Line Item Quantity and Unit Price using the LineItemUpdate container, the Order or Line Item Ship Method, Ship Rate, Preferred Shipping Date or Preferred Delivery Date using the ShippingOptionsUpdate container, the Line Item Sales Tax using the SalesTaxRate container, the Order Pickup Location and / or Expected Pickup Date using the PickupLocationUpdate container, the Order Discounts using the DiscountsUpdate container, the Order or Line Item Status using the StatusUpdate container, the Order Billing Status using the BillingStatusUpdate container, and the Order Customer or Company Comments via the UpdateComments container. New line items can be added using the LineItemAdd container.

If you are using a Payment Gateway (Settings/Compatible Software in the OMS) you may also use the CapturePayment node to capture (process), refund, reconcile (capture or refund as needed to make the captured total equal the order total), or void an order’s credit card (any other payment transactions should be performed through the OMS). Note that changing an order’s Shipping Status and/or Billing Status to Canceled does not automatically void or refund any completed credit card transactions.

With respect to Order Line Item Status, you may set the update status via the Status node, and restrict the update to specific line items within the order via the LineNo node, the ShipFrom @Name attribute, the ShipTo container, and the Application node. Note that only one LineNo node is allowed per OrderUpdate container, and applies to the container as a whole. The OrderUpdateReply gives the final Order Status and Billing Status for each order included in the update.

The ForceProceed node in the OrderUpdateRequest forces the tool to proceed with valid order updates even if an invalid update request (e.g. no match is found for the OrderNo node specified) is found. In such a scenario, the corresponding Order container for invalid requests in the OrderUpdateReply contains the Error XML elements specified in Chapter 15 (Errors) in lieu of the elements specified in the OrderUpdateReply Schema. If the ForceProceed node is not included in the OrderUpdateRequest, any invalid request results in the failure of all requests, and only the Error elements are returned.

A single OrderUpdateRequest may contain no more than 15 OrderUpdate containers. If you wish to update more than 15 orders, you must do so in an iterative manner.

45 OrderUpdateRequest URL: https://www.nexternal.com/shared/xml/orderupdate.rest

OrderUpdateRequest Schema Element Xpath Required Occurs Type Description Credentials Yes 1 Container Note that the supplied Credentials must contain the Client's XML Key or a UserName and Password, but not both Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/Key No 1 Text Node (20 Client's XML Key chars max) Credentials/UserName No 1 Text Node (50 XML Tools User Name chars max) • See Users / New Users / Access Level in the OMS for more information about the XML Tools Access Level Credentials/Password No 1 Text Node (50 XML Tools User Password chars max) OrderUpdate Yes 1 - 15 Container OrderUpdate/OrderNo Yes 1 Integer Node Order Number • Must match an existing Order Number OrderUpdate/LineItemUpd No 1 Container For updating an Order Line Item Quantity and/or ate Order Line Item Unit Price OrderUpdate/LineItemUpd No 1 Integer Node Order Line Item Number (for matching purposes ate/LineNo only) • May be determined using the OrderQuery Tool (Order/ShipTo/ShipFrom/LineItem/LineNo or Order/Pickups/Pickup/LineItem/LineNo) • Optional only if the order has a single Line Item OrderUpdate/LineItemUpd No 1 Integer Node Updates the Order Line Item Quantity ate/Qty OrderUpdate/LineItemUpd No 1 Currency Overrides the Order Line Item Unit Price ate/UnitPrice Node OrderUpdate/LineItemUpd No 1 Text/Integer/N Line Item Custom Field Value ate/LineItemCustomField umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field OrderUpdate/LineItemUpd Yes* 1 Text Attribute Line Item Custom Field Type (Text, Positive ate/LineItemCustomField (16 chars max) Number, Positive Integer, Currency, Date, @Type Yes/No) OrderUpdate/LineItemAdd No 1 Container For adding a line item OrderUpdate/LineItemAdd No 1 Text Attribute Ship-To Address Label (for Product orders, @ShipToLabel (25 chars max) matching purposes only) • If not specified, the order’s first Ship-To Address is used OrderUpdate/LineItemAdd No 1 Text Attribute Pickup Location Internal Name (for Pickup @PickupLocation (50 chars max) orders, matching purposes only) • Required for orders with multiple Pickup Locations OrderUpdate/LineItemAdd Yes 1 Container Products can be matched using the ProductNo, /Product the ProductName, or the ProductSKU. SKU- level items for a particular Product can be matched using one of the nodes listed above, along with a SKUItem node. The SKU node can be used to match any unique SKU number declared at the Product level or at the SKU level

46 Element Xpath Required Occurs Type Description OrderUpdate/LineItemAdd No 1 Text Attribute Ship-From Location Internal Name (for Product /Product @ShipFrom (50 chars max) orders) • If Ship-From Location is not specified, it is assigned automatically as in the Online Store OrderUpdate/LineItemAdd No 1 Integer Node Product Number (for matching purposes) /Product/ProductNo OrderUpdate/LineItemAdd No 1 Text Node Product Name (for matching purposes) /Product/ProductName (100 chars max) OrderUpdate/LineItemAdd No 1 Text Node (50 Product SKU number (for matching purposes) /Product/ProductSKU chars max) OrderUpdate/LineItemAdd No 1 Text Node (50 Product-level or SKU-level SKU number (for /Product/SKU chars max) matching purposes) • Note that this node is used instead of the ProductNo, ProductName, ProductSKU, and SKUItem node(s) to identify a Product or a SKU- level item for a Product OrderUpdate/LineItemAdd No 1 Container /Product/SKUItem OrderUpdate/LineItemAdd No 1 Text Attribute SKU-level SKU number (for matching purposes) /Product/SKUItem @SKU (50 chars max) OrderUpdate/LineItemAdd No 1 Container /Product/SKUItem/Attribut es OrderUpdate/LineItemAdd Yes* 1 + Text Node (50 SKU Attribute Value /Product/SKUItem/Attribut chars max) es/Attribute OrderUpdate/LineItemAdd Yes* 1 Text Attribute SKU Attribute Name /Product/SKUItem/Attribut (50 chars max) es/Attribute @Name OrderUpdate/LineItemAdd No 1 Container Include if the product has write-in attributes /Product/WriteIns OrderUpdate/LineItemAdd Yes* 1 + Text Node Write-In attribute value /Product/WriteIns/WriteIn (4000 chars max) OrderUpdate/LineItemAdd Yes* 1 Text Attribute Write-In attribute name /Product/WriteIns/WriteIn (50 chars max) @Name OrderUpdate/LineItemAdd Yes* 1 Integer Node Product Quantity /Product/Qty • If the order is a Pending Order, Product Quantity will not be deducted from product inventory OrderUpdate/LineItemAdd No 1 Integer Node Required Quantity /Product/RequiredQty • Applicable only if the order is a Pending Order; may not exceed Product Quantity OrderUpdate/LineItemAdd No 1 Currency Include to override the default product Unit Price /Product/UnitPrice Node • Product-level discounts defined in the OMS are ignored if this node is included • Required if the Product Pricing Model is "BID" OrderUpdate/LineItemAdd No 1 Container Include to add a Subscription to the order /Product/Subscription • If the product is Subscription Only and this container is not included, the first Subscription Option is used

47 Element Xpath Required Occurs Type Description OrderUpdate/LineItemAdd Yes* 1 Integer Node Subscrition Frequency (integer value) /Product/Subscription/Freq uency OrderUpdate/LineItemAdd Yes* 1 Text Attribute Subscrition Frequency Type (Days, Weeks, or /Product/Subscription/Freq (6 chars max) Months) uency @Type OrderUpdate/LineItemAdd No 1 Integer Node Subscription Term (integer value) /Product/Subscription/Ter • Omit for a Subscription of indefinite length m OrderUpdate/LineItemAdd Yes* 1 Text Attribute Subscrition Term Type (Days, Weeks, Months, or /Product/Subscription/Ter (6 chars max) Years) m @Type OrderUpdate/LineItemAdd No 1 Text Node (20 Line Item Status /Product/LineItemStatus chars max) • Pending Orders: Pending • Product Orders: Unshipped, In Process, Shipped, Backordered, or Preordered • Pickup Orders: Not Ready, In Process, Ready, Picked Up, Backordered, or Preordered OrderUpdate/LineItemAdd No 1 Text/Integer/N Line Item Custom Field Value /Product/LineItemCustomF umeric/Curren • Node Type depends on Field Type of Custom ield cy/Date Node Field OrderUpdate/LineItemAdd Yes* 1 Text Attribute Line Item Custom Field Type (Text, Positive /Product/LineItemCustomF (16 chars max) Number, Positive Integer, Currency, Date, ield @Type Yes/No) OrderUpdate/LineItemAdd No 1 Container Required if the Line Item Status is "Shipped” /Product/ShipDate OrderUpdate/LineItemAdd Yes* 1 Container /Product/ShipDate/DateTi me OrderUpdate/LineItemAdd Yes* 1 Date Node Ship Date /Product/ShipDate/DateTi (mm/dd/yyyy) me/Date OrderUpdate/LineItemAdd No 1 Container Required if the Line Item Status is "Picked Up” /Product/PickupDate OrderUpdate/LineItemAdd Yes* 1 Container /Product/PickupDate/DateT ime OrderUpdate/LineItemAdd Yes* 1 Date Node Pickup Date /Product/PickupDate/DateT (mm/dd/yyyy) ime/Date OrderUpdate/LineItemAdd No 1 Text Node (50 First and Last Name of the Customer or Trustee /Product/PickedUpBy chars max) that signed for the Order Line Item • Applicable only to a Pickup Order when the Line Item Status is "Picked Up" OrderUpdate/LineItemAdd No 1 Text Node (50 Tracking Number /Product/TrackingNumber chars max) • Applicable only to a Product Order when the Line Item Status is "Shipped" OrderUpdate/ShippingOpti No 1 Container For updating the Order Line Item(s) Ship Method, onsUpdate Ship Rate, Preferred Ship Date or Preferred Delivery Date OrderUpdate/ShippingOpti No 1 Empty Node For limiting the update to a single Ship From onsUpdate/ShipFrom Address

48 Element Xpath Required Occurs Type Description OrderUpdate/ShippingOpti Yes* 1 Text Attribute Internal Name of the Ship From Address (for onsUpdate/ShipFrom (50 char max) matching purposes only) @Name • The ShipFrom @Name attribute must match the Internal Name of a Ship From Address already used in the existing order OrderUpdate/ShippingOpti No 1 Container For limiting the update to a single Ship To onsUpdate/ShipTo Address • The ShipTo @ID or @Label attribute, or the ShipTo/Name node must match a Ship To Address already used in the existing order OrderUpdate/ShippingOpti No 1 Integer Ship To Address Book ID (for matching purposes onsUpdate/ShipTo @ID Attribute only) • May be determined using the OrderQuery Tool (Order/ShipTo/Address/AddressBook) OrderUpdate/ShippingOpti No 1 Text Attribute Ship To Address Label (for matching purposes onsUpdate/ShipTo @Label (25 char max) only) OrderUpdate/ShippingOpti No 1 Container Ship To Address Name (for matching purposes onsUpdate/ShipTo/Name only) OrderUpdate/ShippingOpti Yes* 1 Text Node (50 Ship To Address First Name onsUpdate/ShipTo/Name/F char max) irstName OrderUpdate/ShippingOpti Yes* 1 Text Node (50 Ship To Address Last Name onsUpdate/ShipTo/Name/L char max) astName OrderUpdate/ShippingOpti No 1 Text Node (50 Updates the Shipping Method onsUpdate/ShipMethod chars max) OrderUpdate/ShippingOpti No 1 Currency Updates the Shipping Rate onsUpdate/ShipRate Node OrderUpdate/ShippingOpti No 1 Container Updates the Preferred Shipping Date onsUpdate/PreferredShipD • Either the PreferredShipDate node or the ate PreferredDeliveryDate node can be present in the query, but not both OrderUpdate/ShippingOpti Yes* 1 Container onsUpdate/PreferredShipD ate/DateTime OrderUpdate/ShippingOpti Yes* 1 Date Node Preferred Ship Date onsUpdate/ShipFrom/Prefe (mm/dd/yyyy) rredShipDate/DateTime/Da te OrderUpdate/ShippingOpti No 1 Container Updates the Preferred Delivery Date onsUpdate/PreferredDelive • Either the PreferredShipDate node or the ryDate PreferredDeliveryDate node can be present in the query, but not both OrderUpdate/ShippingOpti Yes* 1 Container onsUpdate/PreferredDelive ryDate/DateTime OrderUpdate/ShippingOpti Yes* 1 Date Node Preferred Delivery Date onsUpdate/PreferredDelive (mm/dd/yyyy) ryDate/DateTime/Date OrderUpdate/SalesTaxUpd No 1 Container For updating Sales Tax Rate(s) ate

49 Element Xpath Required Occurs Type Description OrderUpdate/SalesTaxUpd No 1 Container For limiting the update to a single Ship To ate/ShipTo Address • The ShipTo @ID or @Label attribute, or the ShipTo/Name node must match a Ship To Address already used in the existing order OrderUpdate/SalesTaxUpd No 1 Integer Ship To AddressBook ID (for matching purposes ate/ShipTo @ID Attribute only) • May be determined using the OrderQuery Tool (Order/ShipTo/Address/AddressBook) OrderUpdate/SalesTaxUpd No 1 Text Attribute Ship To Address Label (for matching purposes ate/ShipTo @Label (25 char max) only) OrderUpdate/SalesTaxUpd No 1 Container Ship To Address Name (for matching purposes ate/ShipTo/Name only) OrderUpdate/SalesTaxUpd Yes* 1 Text Node (50 Ship To Address First Name ate/ShipTo/Name/FirstNam char max) e OrderUpdate/SalesTaxUpd Yes* 1 Text Node (50 Ship To Address Last Name ate/ShipTo/Name/LastNam char max) e OrderUpdate/SalesTaxUpd No 1 Text Node (50 Pickup Location Internal Name (for matching ate/PickupLocation chars max) purposes only) OrderUpdate/SalesTaxUpd Yes* 1 Percentage Updates the Sales Tax Rate ate/SalesTaxRate Node OrderUpdate/PickupLocati No 1 Container For updating Expected Pickup Date onUpdate OrderUpdate/PickupLocati No 1 Text Attribute Internal Name of the Pickup Location to be onUpdate @Location (50 chars max) updated • Required for orders with multiple Pickup Locations OrderUpdate/PickupLocati No 1 Container For Orders that have an Expected Pickup Date onUpdate/ExpectedPickup Date OrderUpdate/PickupLocati Yes* 1 Container onUpdate/ExpectedPickup Date/DateTime OrderUpdate/PickupLocati Yes* 1 Date Node Order Expected Pickup Date onUpdate/ExpectedPickup (mm/dd/yyyy) Date/DateTime/Date OrderUpdate/FulfillmentLo No 1 Container For updating Fulfillment Location at the Line cationUpdate Item level OrderUpdate/FulfillmentLo Yes* 1 Integer Node Order Line Item Number to be updated cationUpdate/LineNo • Changing the Fulfillment Location results in a change to the Line Item Number OrderUpdate/FulfillmentLo Yes* 1 Text Node (50 Internal Name of the new Fulfillment location cationUpdate/NewLocation chars max) • Must be a Ship-From Location (for Product orders) or Pickup Location (for Pickup orders) the is valid for the product OrderUpdate/DiscountsUp No 1 Container For updating order discounts date OrderUpdate/DiscountsUp No 1 Percentage Customer Discount percentage date/CustomerDiscount Node • Applies to the current order only • Include an empty node to delete any pre-existing Customer Discount

50 Element Xpath Required Occurs Type Description OrderUpdate/DiscountsUp No 1 Text Node (50 Coupon Code date/CouponCode chars max) • Include an empty node to delete any pre-existing Coupon Code OrderUpdate/DiscountsUp No 1 Text Node (19 FlexCache Gift Card Number date/GiftCard chars max) • Include an empty node to delete any pre-existing FlexCache Gift Card Number OrderUpdate/DiscountsUp No 1 Text Attribute FlexCache Gift Card PIN date/GiftCard @PIN (4 chars max) OrderUpdate/DiscountsUp No 1 Text Node (20 Gift Certificate Code date/GiftCertificate chars max) • Include an empty node to delete any pre-existing Gift Certificate OrderUpdate/StatusUpdate No 1 Container For updating Order, Line Item, or Gift Certificate Status OrderUpdate/StatusUpdate/ No 1 Integer Node Order Line Item Number (for matching purposes LineNo only) • May be determined using the OrderQuery Tool (Order/ShipTo/ShipFrom/LineItem/LineNo or Order/Pickups/Pickup/LineItem/LineNo) OrderUpdate/StatusUpdate/ No 1 Integer Quantity to update for the specified Order Line LineNo @Qty Attribute Item (if unspecified, the Line Item Quantity is used) • If the specified quantity is less than the Line Item Quantity available for update, the Line Item will be split, resulting in Parent and Child Line Items • If the specified quantity is greater than the Line Item Quantity available for update, but the Line Item has Child Line Items, the Child Line Items will be updated (and split) as needed OrderUpdate/StatusUpdate/ Yes* 1 Text Node (17 Update Status Status char max) • Product Orders: Unshipped, In Process, Shipped, Activate (to activate a Pending Order), Backordered, Preordered, Canceled, Return-Ship Agent, or Return-Customer • Pickup Orders: Not Ready, In Process, Ready, Picked Up, Activate (to activate a Pending Order), Backordered, Preordered, Canceled, or Return-Customer • Gift Certificate Orders: Unsent, Sent, or Canceled OrderUpdate/StatusUpdate/ No 1 Text Attribute If the StatusUpdate/Status value is set to Status @ReasonCanceled (255 char max) "Canceled" you must provide a reason for the order cancellation OrderUpdate/StatusUpdate/ No 1 Text Node (20 Gift Certificate Code (for matching purposes GiftCertificate char max) only) • May be queried via the OrderQuery Tool (Order/GiftCert/GiftCertCode) OrderUpdate/StatusUpdate/ No 1 Container For limiting the Status Update to a single Ship ShipFrom From Address OrderUpdate/StatusUpdate/ Yes* 1 Text Attribute Internal Name of the Ship From Address (for ShipFrom @Name (50 char max) matching purposes only) • The ShipFrom @Name attribute must match the Internal Name of a Ship From Address already used in the existing order

51 Element Xpath Required Occurs Type Description OrderUpdate/StatusUpdate/ No 1 Container For limiting the Status Update to a single Ship To ShipTo Address • The ShipTo @ID or @Label attribute, or the ShipTo/Name node must match a Ship To Address already used in the existing order OrderUpdate/StatusUpdate/ No 1 Integer Ship To AddressBook ID (for matching purposes ShipTo @ID Attribute only) • May be determined using the OrderQuery Tool (Order/ShipTo/Address/AddressBook) OrderUpdate/StatusUpdate/ No 1 Text Attribute Ship To Address Label (for matching purposes ShipTo @Label (25 char max) only) OrderUpdate/StatusUpdate/ No 1 Container Ship To Address Name (for matching purposes ShipTo/Name only) OrderUpdate/StatusUpdate/ Yes* 1 Text Node (50 Ship To Address First Name ShipTo/Name/FirstName char max) OrderUpdate/StatusUpdate/ Yes* 1 Text Node (50 Ship To Address Last Name ShipTo/Name/LastName char max) OrderUpdate/StatusUpdate/ No 1 Container Only valid if the StatusUpdate/Status node is ShipDate Shipped or Sent OrderUpdate/StatusUpdate/ Yes* 1 Container ShipDate/DateTime OrderUpdate/StatusUpdate/ Yes* 1 Date Node Update Ship/Send Date (default value: today's ShipDate/DateTime/Date (mm/dd/yyyy) date) OrderUpdate/StatusUpdate/ No 1 Text Node (50 Pickup Location Internal Name (for matching PickupLocation chars max) purposes only) OrderUpdate/StatusUpdate/ No 1 Container Only valid if the StatusUpdate/Status node is PickupDate Picked Up OrderUpdate/StatusUpdate/ Yes* 1 Container PickupDate/DateTime OrderUpdate/StatusUpdate/ Yes* 1 Date Node Update Pickup Date (default value: today's date) PickupDate/DateTime/Date (mm/dd/yyyy)

OrderUpdate/StatusUpdate/ No 1 Text Node (50 First and Last Name of the Customer or Trustee PickedUpBy chars max) that signed for the Order or Order Line Item • Only valid if the StatusUpdate/Status node is Picked Up OrderUpdate/StatusUpdate/ No 1 Text Node (50 Tracking Number TrackingNumber char max) • Only valid if the StatusUpdate/Status node is Shipped OrderUpdate/StatusUpdate/ No 1 Text Node (17 Used to limit the scope of the update using the Application char max) existing Line Item Status (for matching purposes only; default value: Outstanding) • Product Orders: Unshipped, In Process, Shipped, Backordered, Preordered, Canceled, Return-Ship Agent, or Return-Customer • Pickup Orders: Not Ready, In Process, Ready, Picked Up, Backordered, Preordered, Canceled, or Return-Customer • Gift Certificate Orders: Unsent, Sent, or Canceled • All Orders: Outstanding (all statuses other than Shipped, Picked Up, Sent, Canceled, and Return- Customer) and All (all statuses other than Canceled) are also valid

52 Element Xpath Required Occurs Type Description OrderUpdate/BillingStatus No 1 Container For updating Billing Status Update OrderUpdate/BillingStatus Yes* 1 Text Node (16 Update Billing Status Update/BillingStatus chars max) • Unbilled, Authorized, Billed, Billed-Partial, Paid, Canceled, Refunded, or Declined CC OrderUpdate/CommentsUp No 1 Container date OrderUpdate/CommentsUp No 1 Empty/Text Overrides existing Customer Comments date/CustomerComments Node • Include an empty node to delete any pre-existing Customer Comments OrderUpdate/CommentsUp No 1 Empty/Text Overrides existing Company Comments date/CompanyComments Node • Include an empty node to delete any pre-existing Company Comments OrderUpdate/CommentsUp No 1 Empty Node Indicates Company Comments may be displayed date/DisplayCompanyCom to customer; absence indicates Company ments Comments may not be displayed to customer OrderUpdate/PendingUpda No 1 Container te OrderUpdate/PendingUpda No 1 Container Date that the Pending Order will be automatically te/AutoActivationDate activated OrderUpdate/PendingUpda Yes* 1 Container te/AutoActivationDate/Dat eTime OrderUpdate/PendingUpda Yes* 1 Date Node Activation Date te/AutoActivationDate/Dat (mm/dd/yyyy) eTime/Date OrderUpdate/PendingUpda No 1 Container Date that the Pending Order will be automatically te/AutoCancelDate canceled OrderUpdate/PendingUpda Yes* 1 Container te/AutoCancelDate/DateTi me OrderUpdate/PendingUpda Yes* 1 Date Node Cancellation Date te/AutoCancelDate/DateTi (mm/dd/yyyy) me/Date OrderUpdate/PendingUpda No 1 Integer Node Minimum order quantity te/MinOrderQty OrderUpdate/PendingUpda No 1 Currency Minimum order price te/MinOrderPrice Node OrderUpdate/PendingUpda No 1 Empty Allow customer to cancel the order te/AllowCustomerCancel Node/Containe r OrderUpdate/PendingUpda No 1 Empty Node Prevent customer from cancelling the order te/AllowCustomerCancel/E rase OrderUpdate/CapturePaym No 1 Empty/Text Processes the order’s credit card to Authorize, ent Node (9 chars Capture, Refund, Reconcile (capture or refund as max) appropriate to make the total amount captured equal the order total), or Void a payment (default value: Capture) • Requires that you be using a Payment Gateway (Settings/Compatible Software in the OMS) and that the order’s Payment Method be Credit Card • Applies after any status updates specified in the OrderUpdateRequest

53 Element Xpath Required Occurs Type Description OrderUpdate/Integration No 1 Container See External Mapping for more information ForceProceed No 1 Empty Node Indicates that the Order Update should proceed even if one or more requested updates is invalid

OrderUpdateReply Schema Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) char max) Order Yes 1 - 15 Container Order/OrderNo Yes 1 Integer Node Order Number Order/OrderStatus Yes 1 Text Node (20 Order Status (after update) chars max) • Product Orders: Unshipped, In Process, Shipped, Canceled, Backordered, Preordered, Return-Ship Agent, Return-Customer, Shipped- Partial, or Other-See Line Items • Gift Certificate Orders: Unsent, Sent, Canceled, Sent-Partial, or Other-See Line Items Order/BillingStatus Yes 1 Text Node (16 Billing Status (after update) chars max) • Unbilled, Authorized, Billed, Billed-Partial, Paid, Canceled, Refunded, or Declined CC Order/CapturePayment No 1 Container Included if CapturePayment node was present in the update request Order/CapturePayment/Stat Yes* 1 Text Node Payment transaction status (after update) us • Authorized, Declined CC, Unbilled, Refunded, Canceled, None, or Error Order/CapturePayment/Not Yes* 1 Text Node Payment transaction notes (after update) es Order/Warning No 1 + Text Node Included if an update results in potentially erroneous information in the order (e.g. shipping or delivery date is less than the current date)

OrderUpdateRequest Example

fairway xmlbob XMLDem0Pwd 102554 532 Shipped

OrderUpdateReply Example

54 102554 Shipped-Partial Unbilled

55 7: OrderCalculate

OrderCalculate is used to retrieve information related to an order before the actual order is placed. Information about the possible shipping rates and methods, any potential discounts and taxes, and the current inventory levels for each line item in the order will be returned in the OrderCalculateReply.

Each OrderCalculate node specifies the source of the order using a Customer container, one or more shipping destinations using the ShipTos container, and one or more line items using the Products container. Additional information regarding the order can be specified using the BillTo container and the Discounts container. CustomFields, WriteIns, and Subscription should be included in the OrderCalculateRequest when required.

The OrderCalculate tool may be used to calculate orders for new or pre-existing customers, but products included in the OrderCalculateRequest must already exist. For new customers you must include the Customer/Email node and a completed OrderCalculate/BillTo container. Estimated and Available Delivery Dates can be returned with the response by using the IncludeDeliveryDates with your request.

The ForceProceed node in the OrderCalculateRequest forces the tool to proceed with valid order calculation requests even if an invalid calculation request is encountered. In such a scenario, the corresponding Order containers for the invalid requests in the OrderCalculateReply contain the Error XML elements specified in Chapter 15 (Errors) in lieu of the elements specified in the OrderCalculateReply schema. If the ForceProceed node is not included in the OrderCalculateRequest, any invalid order calculation requests will result in the failure of all subsequent order calculation requests in the query.

A single OrderCalculateRequest may contain no more than 15 OrderCalculate containers. If you wish to calculate more than 15 orders, you must do so in an iterative manner.

Note: Autocoupons and Automatic Add Triggers do not apply.

OrderCalculateRequest URL: https://www.nexternal.com/shared/xml/ordercalculate.rest

OrderCalculateRequest Schema Element Xpath Required Occurs Type Description Credentials Yes 1 Container Note that the supplied Credentials must contain the Client's XML Key or a UserName and Password, but not both Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/Key No 1 Text Node (20 Client's XML Key chars max)

56 Element Xpath Required Occurs Type Description Credentials/UserName No 1 Text Node (50 XML Tools User Name chars max) • See Users / New Users / Access Level in the OMS for more information about the XML Tools Access Level Credentials/Password No 1 Text Node (50 XML Tools User Password chars max) OrderCalculate Yes 1 - 15 Container OrderCalculate/Customer Yes 1 Container OrderCalculate/Customer No 1 Text Attribute Indicates which node in the query will be used to @MatchingField (10 chars max) match an existing customer (CustomerNo, Name, or Email) • The Customer/Email node combined with a completed OrderCalculate/BillTo container can be used if customer matching is not required (e.g. a new customer) OrderCalculate/Customer/ No 1 Integer Node Customer Number (for matching purposes only) CustomerNo • Required if MatchingField="CustomerNo" OrderCalculate/Customer/ No 1 Container Customer Name Name • Required if MatchingField="Name" OrderCalculate/Customer/ Yes* 1 Text Node (50 Customer First Name Name/FirstName chars max) OrderCalculate/Customer/ Yes* 1 Text Node (50 Customer Last Name Name/LastName chars max) OrderCalculate/Customer/ No 1 Text Node (50 Customer E-Mail Address Email chars max) • Required if MatchingField="Email" or for new customers OrderCalculate/Customer/ No 1 Text Node (20 Customer Type CustomerType chars max) • The default customer type is defined at Customers/Types in the OMS OrderCalculate/Customer/ No 1 Text/Integer/N Customer Custom Field #1 Value CustomField1 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field OrderCalculate/Customer/ Yes* 1 Text Attribute Customer Custom Field #1 Type (Text, Positive CustomField1 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderCalculate/Customer/ No 1 Text/Integer/N Customer Custom Field #2 Value CustomField2 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field OrderCalculate/Customer/ Yes* 1 Text Attribute Customer Custom Field #2 Type (Text, Positive CustomField2 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderCalculate/Customer/ No 1 Text/Integer/N Customer Custom Field #3 Value CustomField3 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field OrderCalculate/Customer/ Yes* 1 Text Attribute Customer Custom Field #3 Type (Text, Positive CustomField3 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderCalculate/Customer/ No 1 Text/Integer/N Customer Custom Field #4 Value CustomField4 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field OrderCalculate/Customer/ Yes* 1 Text Attribute Customer Custom Field #4 Type (Text, Positive CustomField4 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No)

57 Element Xpath Required Occurs Type Description OrderCalculate/Customer/ No 1 Text/Integer/N Customer Custom Field #5 Value CustomField5 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field OrderCalculate/Customer/ Yes* 1 Text Attribute Customer Custom Field #5 Type (Text, Positive CustomField5 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderCalculate/Customer/ No 1 Text/Integer/N Customer Custom Field #6 Value CustomField6 umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field OrderCalculate/Customer/ Yes* 1 Text Attribute Customer Custom Field #6 Type (Text, Positive CustomField6 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderCalculate/BillTo No 1 Container Customer Bill To Address • If a pre-existing customer is used and this container is omitted, the customer’s Primary Bill To Address is used (or Contact Address, if there is no Primary Bill To Address) • This container, along with the Customer/Email node, are required for new customers OrderCalculate/BillTo/Add Yes* 1 Container Customer Bill To Address ress OrderCalculate/BillTo/Add Yes* 1 Text Attribute Customer Bill To Address Type (Residential or ress @Type (11 chars max) Business) OrderCalculate/BillTo/Add No 1 Container May be omitted if Customer/Name node exists ress/Name and you wish to use those values OrderCalculate/BillTo/Add Yes* 1 Text Node (50 Customer First Name ress/Name/FirstName chars max) OrderCalculate/BillTo/Add Yes* 1 Text Node (50 Customer Last Name ress/Name/LastName chars max) OrderCalculate/BillTo/Add No 1 Text Node Customer Bill To Company Name ress/CompanyName (100 chars • Usage of the Company Name field is set at max) Customers/Types in the OMS OrderCalculate/BillTo/Add Yes* 1 Text Node Customer Bill To Street Address (Line 1) ress/StreetAddress1 (100 chars max) OrderCalculate/BillTo/Add No 1 Text Node Customer Bill To Street Address (Line 2) ress/StreetAddress2 (100 chars max) OrderCalculate/BillTo/Add Yes* 1 Text Node (50 Customer Bill To City ress/City chars max) OrderCalculate/BillTo/Add No 1 Text Node (2 Customer Bill To State/Province Code ress/StateProvCode chars max) OrderCalculate/BillTo/Add Yes* 1 Text Node (20 Customer Bill To Zip/Postal Code ress/ZipPostalCode chars max) OrderCalculate/BillTo/Add Yes* 1 Text Node (2 Customer Bill To Country Code ress/CountryCode chars max) OrderCalculate/Discounts No 1 Container Discounts applied to the order calculation

OrderCalculate/Discounts/ No 1 Text Node (50 Coupon Code CouponCode chars max) • Note that shipping discounts cannot be included in the order calculation OrderCalculate/Discounts/ No 1 Text Node (19 FlexCache Gift Card Number GiftCard chars max)

58 Element Xpath Required Occurs Type Description OrderCalculate/Discounts/ Yes* 1 Text Attribute FlexCache Gift Card PIN GiftCard @PIN (4 chars max) OrderCalculate/Discounts/ No 1 Text Node (20 Gift Certificate Code GiftCertificate chars max) OrderCalculate/Discounts/ No 1 Empty/Curren Customer Loyalty Discount Amount LoyaltyDiscount cy Node • If empty, the maximum possible Loyalty Discount will be applied, based on the customer’s available Loyalty Points OrderCalculate/Discounts/ No 1 Currency Order Discount OrderDiscount Node • If this node is included, Order Discount is overridden to the value specified • If this node is included, Order Discount is calculated as specified in Settings/Site Options/Order Discounts in the OMS OrderCalculate/Gratuity No 1 Currency Gratuity Amount Node OrderCalculate/ShipCompl No 1 Container If ShipCompliant is in use (Settings/Compatible iant Software/ShipCompliant) this container is used to overide the OMS ShipCompliant Preferences OrderCalculate/ShipCompl Yes* 1 Text Node (14 ShipCompliant Commit Option (All, Compliant iant/CommitOption chars max) Only, or None) OrderCalculate/ShipCompl Yes* 1 Text Node (20 ShipCompliant Override Option (Never Override, iant/OverrideOption chars max) Allow Unless Shipped, Always Allow, or Always Override) OrderCalculate/ShipCompl No 1 Empty Node ShipCompliant Ignore Invalid Address iant/AddressIgnore OrderCalculate/ShipTos No 1 Container For Ship To Addresses OrderCalculate/ShipTos/Sh Yes* 1 + Container ipTo OrderCalculate/ShipTos/Sh No 1 Text Attribute Address Label (for matching purposes) ipTo @Label (25 chars max) • If the Label value is "yourself" the customer’s Primary Ship To Address will be used (or Contact Address, if there is no Primary Ship To) • If the Label value is not "yourself" it must match an existing Customer Address in the OMS OrderCalculate/ShipTos/Sh No 1 Integer Customer Additional Addresses ID ipTo @ID Attribute OrderCalculate/ShipTos/Sh No 1 Container Ship To Address ipTo/Address • If ShipTo @Label or @ID is used, the ShipTo/Address container is ignored • If the ShipTo/Address container is not present the Customer Primary Shipping Address will be used (or Contact Address, if there is no Primary Ship To) OrderCalculate/ShipTos/Sh Yes* 1 Text Attribute Ship To Address Type (Residential or Business) ipTo/Address @Type (11 chars max) OrderCalculate/ShipTos/Sh Yes* 1 Text Attribute Ship To Address Label ipTo/Address @Label (25 chars max) OrderCalculate/ShipTos/Sh Yes* 1 Container ipTo/Address/Name OrderCalculate/ShipTos/Sh Yes* 1 Text Node (50 Ship To First Name ipTo/Address/Name/FirstN chars max) ame

59 Element Xpath Required Occurs Type Description OrderCalculate/ShipTos/Sh Yes* 1 Text Node (50 Ship To Last Name ipTo/Address/Name/LastN chars max) ame OrderCalculate/ShipTos/Sh No 1 Text Node Ship To Company Name ipTo/Address/CompanyNa (100 chars • Usage of the Company Name field is set at me max) Customers/Types in the OMS OrderCalculate/ShipTos/Sh Yes* 1 Text Node Ship To Street Address (Line 1) ipTo/Address/StreetAddres (100 chars s1 max) OrderCalculate/ShipTos/Sh No 1 Text Node Ship To Street Address (Line 2) ipTo/Address/StreetAddres (100 chars s2 max) OrderCalculate/ShipTos/Sh Yes* 1 Text Node (50 Ship To City ipTo/Address/City chars max) OrderCalculate/ShipTos/Sh No 1 Text Node (2 Ship To State/Province Code ipTo/Address/StateProvCo chars max) de OrderCalculate/ShipTos/Sh Yes* 1 Text Node (20 Ship To Zip/Postal Code ipTo/Address/ZipPostalCo chars max) de OrderCalculate/ShipTos/Sh Yes* 1 Text Node (2 Ship To Country Code ipTo/Address/CountryCode chars max) OrderCalculate/ShipTos/Sh Yes 1 Container Indicates the product(s) that will be included in ipTo/Products the order • Products must already exist; see ProductUpdate to add new products OrderCalculate/ShipTos/Sh Yes 1 + Container Products can be matched using the ProductNo, ipTo/Products/Product the ProductName, or the ProductSKU. SKU- level items for a particular Product can be matched using one of the nodes listed above, along with a SKUItem node. The SKU node can be used to match any unique SKU number declared at the Product level or at the SKU level OrderCalculate/ShipTos/Sh No 1 Integer Node Product Number (for matching purposes) ipTo/Products/Product/Pro ductNo OrderCalculate/ShipTos/Sh No 1 Text Node Product Name (for matching purposes) ipTo/Products/Product/Pro (100 chars ductName max) OrderCalculate/ShipTos/Sh No 1 Text Node (50 Product SKU number (for matching purposes) ipTo/Products/Product/Pro chars max) ductSKU OrderCalculate/ShipTos/Sh No 1 Text Node (50 Product-level or SKU-level SKU number (for ipTo/Products/Product/SK chars max) matching purposes) U • Note that this node is used instead of the ProductNo, ProductName, ProductSKU, and SKUItem node(s) to identify a Product or a SKU- level item for a Product OrderCalculate/ShipTos/Sh No 1 Container ipTo/Products/Product/SK UItem OrderCalculate/ShipTos/Sh No 1 Text Attribute SKU-level SKU number (for matching purposes) ipTo/Products/Product/SK (50 chars max) UItem @SKU

60 Element Xpath Required Occurs Type Description OrderCalculate/ShipTos/Sh No 1 Container ipTo/Products/Product/SK UItem/Attributes OrderCalculate/ShipTos/Sh Yes* 1 + Text Node (50 SKU Attribute value ipTo/Products/Product/SK chars max) UItem/Attributes/Attribute OrderCalculate/ShipTos/Sh Yes* 1 Text Attribute SKU Attribute Name ipTo/Products/Product/SK (50 chars max) UItem/Attributes/Attribute @Name OrderCalculate/ShipTos/Sh No 1 Container Include if the product requires Write-In attributes ipTo/Products/Product/Wri teIns OrderCalculate/ShipTos/Sh Yes* 1 + Text Node Write-In attribute value ipTo/Products/Product/Wri (4000 chars teIns/WriteIn max) OrderCalculate/ShipTos/Sh Yes* 1 Text Attribute Write-In attribute name ipTo/Products/Product/Wri (50 chars max) teIns/WriteIn @Name OrderCalculate/ShipTos/Sh Yes 1 Integer Node Product Quantity ipTo/Products/Product/Qty OrderCalculate/ShipTos/Sh No 1 Currency Product Unit Price ipTo/Products/Product/Unit Node Price OrderCalculate/ShipTos/Sh No 1 Container Include to order a Subscription ipTo/Products/Product/Sub • If the product is Subscription Only and this scription container is not included, the first Subscription Option is used OrderCalculate/ShipTos/Sh Yes* 1 Integer Node Subscrition Frequency (integer value) ipTo/Products/Product/Sub scription/Frequency OrderCalculate/ShipTos/Sh Yes* 1 Text Attribute Subscrition Frequency Type (Days, Weeks, or ipTo/Products/Product/Sub (6 chars max) Months) scription/Frequency @Type OrderCalculate/ShipTos/Sh No 1 Integer Node Subscription Term (integer value) ipTo/Products/Product/Sub • Omit for a Subscription of indefinite length scription/Term OrderCalculate/ShipTos/Sh Yes* 1 Text Attribute Subscrition Term Type (Days, Weeks, Months, or ipTo/Products/Product/Sub (6 chars max) Years) scription/Term @Type OrderCalculate/Pickups No 1 Container For Product Orders that are Picked Up OrderCalculate/Pickups/Pic Yes* 1 + Container kup OrderCalculate/Pickups/Pic No 1 Text Attribute Internal Name of Pickup Location kup @Location (25 chars max) OrderCalculate/Pickups/Pic Yes 1 Container Indicates the product(s) that will be included in kup/Products the order • Products must already exist; see ProductUpdate to add new products

61 Element Xpath Required Occurs Type Description OrderCalculate/Pickups/Pic Yes 1 + Container Products can be matched using the ProductNo, kup/Products/Product the ProductName, or the ProductSKU. SKU- level items for a particular Product can be matched using one of the nodes listed above, along with a SKUItem node. The SKU node can be used to match any unique SKU number declared at the Product level or at the SKU level OrderCalculate/Pickups/Pic No 1 Integer Node Product Number (for matching purposes) kup/Products/Product/Prod uctNo OrderCalculate/Pickups/Pic No 1 Text Node Product Name (for matching purposes) kup/Products/Product/Prod (100 chars uctName max) OrderCalculate/Pickups/Pic No 1 Text Node (50 Product SKU number (for matching purposes) kup/Products/Product/Prod chars max) uctSKU OrderCalculate/Pickups/Pic No 1 Text Node (50 Product-level or SKU-level SKU number (for kup/Products/Product/SKU chars max) matching purposes) • Note that this node is used instead of the ProductNo, ProductName, ProductSKU, and SKUItem node(s) to identify a Product or a SKU- level item for a Product OrderCalculate/Pickups/Pic No 1 Container kup/Products/Product/SKU Item OrderCalculate/Pickups/Pic No 1 Text Attribute SKU-level SKU number (for matching purposes) kup/Products/Product/SKU (50 chars max) Item @SKU OrderCalculate/Pickups/Pic No 1 Container kup/Products/Product/SKU Item/Attributes OrderCalculate/Pickups/Pic Yes* 1 + Text Node (50 SKU Attribute value kup/Products/Product/SKU chars max) Item/Attributes/Attribute OrderCalculate/Pickups/Pic Yes* 1 Text Attribute SKU Attribute Name kup/Products/Product/SKU (50 chars max) Item/Attributes/Attribute @Name OrderCalculate/Pickups/Pic No 1 Container Include if the product requires Write-In attributes kup/Products/Product/Writ eIns OrderCalculate/Pickups/Pic Yes* 1 + Text Node Write-In attribute value kup/Products/Product/Writ (4000 chars eIns/WriteIn max) OrderCalculate/Pickups/Pic Yes* 1 Text Attribute Write-In attribute name kup/Products/Product/Writ (50 chars max) eIns/WriteIn @Name OrderCalculate/Pickups/Pic Yes 1 Integer Node Product Quantity kup/Products/Product/Qty OrderCalculate/Pickups/Pic No 1 Currency Product Unit Price kup/Products/Product/Unit Node Price

62 Element Xpath Required Occurs Type Description OrderCalculate/Pickups/Pic No 1 Container Include to order a Subscription kup/Products/Product/Subs • If the product is Subscription Only and this cription container is not included, the first Subscription Option is used OrderCalculate/Pickups/Pic Yes* 1 Integer Node Subscrition Frequency (integer value) kup/Products/Product/Subs cription/Frequency OrderCalculate/Pickups/Pic Yes* 1 Text Attribute Subscrition Frequency Type (Days, Weeks, or kup/Products/Product/Subs (6 chars max) Months) cription/Frequency @Type OrderCalculate/Pickups/Pic No 1 Integer Node Subscription Term (integer value) kup/Products/Product/Subs • Omit for a Subscription of indefinite length cription/Term OrderCalculate/Pickups/Pic Yes* 1 Text Attribute Subscrition Term Type (Days, Weeks, Months, or kup/Products/Product/Subs (6 chars max) Years) cription/Term @Type IncludeDeliveryDates No 1 Empty Node Indicates that the Estimated Delivery Date and a list of Available Delivery Dates should be included in the OrderCalculateReply • Only present if the carrier has provided this information to Nexternal ForceProceed No 1 Empty Node Indicates that the OrderCalculateRequest should proceed even if one or more requested OrderCalculate nodes is invalid

OrderCalculateReply Schema Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) char max) Order Yes 1 - 15 Container Order/Customer Yes 1 Container Order/Customer No 1 Text Attribute Indicates which node in the query was used to @MatchingField (10 chars max) match an existing customer (CustomerNo, Name, or Email) • Only present if a "MatchingField" attribute was included in the OrderCalculateQuery and an existing customer was found Order/Customer/Customer No 1 Integer Node Customer Number (for matching purposes only) No • Only present if MatchingField="CustomerNo" was included in the OrderCalculateQuery and an existing customer was found Order/Customer/Name No 1 Container Customer Name • Only present if MatchingField="Name" was included in the OrderCalculateQuery and an existing customer was found Order/Customer/Name/Firs Yes* 1 Text Node (50 Customer First Name tName chars max) Order/Customer/Name/Las Yes* 1 Text Node (50 Customer Last Name tName chars max) Order/Customer/Email No 1 Text Node (50 Customer E-Mail Address chars max) • Only present if MatchingField="Email" was included in the OrderCalculateQuery and an existing customer was found

63 Element Xpath Always Occurs Type Description Order/Customer/Customer Yes 1 Text Node (20 Customer Type Type chars max) Order/ShipTos No 1 Container Indicates the address(es) that the order product(s) will be shipped to Order/ShipTos/ShipTo Yes 1 + Container Order/ShipTos/ShipTo/Ad Yes 1 Container Ship To Address dress Order/ShipTos/ShipTo/Ad Yes 1 Container dress/Name Order/ShipTos/ShipTo/Ad Yes 1 Text Node (50 Ship To First Name dress/Name/FirstName chars max) Order/ShipTos/ShipTo/Ad Yes 1 Text Node (50 Ship To Last Name dress/Name/LastName chars max) Order/ShipTos/ShipTo/Ad No 1 Text Node Ship To Company Name dress/CompanyName (100 chars max) Order/ShipTos/ShipTo/Ad Yes 1 Text Node Ship To Street Address (Line 1) dress/StreetAddress1 (100 chars max) Order/ShipTos/ShipTo/Ad No 1 Text Node Ship To Street Address (Line 2) dress/StreetAddress2 (100 chars max) Order/ShipTos/ShipTo/Ad Yes 1 Text Node (50 Ship To City dress/City chars max) Order/ShipTos/ShipTo/Ad No 1 Text Node (2 Ship To State/Province Code dress/StateProvCode chars max) Order/ShipTos/ShipTo/Ad Yes 1 Text Node (20 Ship To Zip/Postal Code dress/ZipPostalCode chars max) Order/ShipTos/ShipTo/Ad Yes 1 Text Node (2 Ship To Country Code dress/CountryCode chars max) Order/ShipTos/ShipTo/Shi Yes 1 Container pFrom Order/ShipTos/ShipTo/Shi Yes* 1 Text Attribute Internal Name of Ship From Address pFrom @Name (50 chars max) Order/ShipTos/ShipTo/Shi Yes* 1 Percentage ShipFrom Address Sales Tax Rate pFrom @SalesTaxRate Attribute Order/ShipTos/ShipTo/Pro Yes 1 Container Indicates the product(s) that will be included in ducts the order Order/ShipTos/ShipTo/Shi Yes 1 + Container pFrom/Products/Product Order/ShipTos/ShipTo/Shi Yes 1 Text Attribute Product is Taxable (Yes or No) pFrom/Products/Product (3 chars max) @Taxable Order/ShipTos/ShipTo/Shi Yes 1 Text Node Product Name pFrom/Products/Product/Pr (100 chars oductName max) Order/ShipTos/ShipTo/Shi No 1 Text Node (50 Product SKU number pFrom/Products/Product/Pr chars max) oductSKU Order/ShipTos/ShipTo/Shi No 1 Container SKU-level item pFrom/Products/Product/S KUItem

64 Element Xpath Always Occurs Type Description Order/ShipTos/ShipTo/Shi No 1 Container pFrom/Products/Product/S KUItem/Attributes Order/ShipTos/ShipTo/Shi Yes* 1 + Text Node (50 SKU Attribute value pFrom/Products/Product/S chars max) KUItem/Attributes/Attribut e Order/ShipTos/ShipTo/Shi Yes* 1 Text Attribute SKU Attribute Name pFrom/Products/Product/S (50 chars max) KUItem/Attributes/Attribut e @Name Order/ShipTos/ShipTo/Shi Yes 1 Integer Node Product Quantity pFrom/Products/Product/Qt y Order/ShipTos/ShipTo/Shi Yes 1 Integer Node Product Inventory pFrom/Products/Product/Qt y @Inventory Order/ShipTos/ShipTo/Shi Yes 1 Numeric Node Product Unit Weight pFrom/Products/Product/U nitWeight Order/ShipTos/ShipTo/Shi Yes 1 Currency Product Unit Price pFrom/Products/Product/U Node nitPrice Order/ShipTos/ShipTo/Shi No 1 Currency Product Discounted Price (if applicable) pFrom/Products/Product/Di Node scountedPrice Order/ShipTos/ShipTo/Shi No 1 Container For Product Subscription (if applicable) pFrom/Products/Product/S ubscription Order/ShipTos/ShipTo/Shi Yes* 1 Integer Node Subscrition Frequency (integer value) pFrom/Products/Product/S ubscription/Frequency Order/ShipTos/ShipTo/Shi Yes* 1 Text Attribute Subscrition Frequency Type (Days, Weeks, or pFrom/Products/Product/S (6 chars max) Months) ubscription/Frequency @Type Order/ShipTos/ShipTo/Shi No 1 Integer Node Subscription Term (integer value) pFrom/Products/Product/S • Omitted for a Subscription of indefinite length ubscription/Term Order/ShipTos/ShipTo/Shi Yes* 1 Text Attribute Subscrition Term Type (Days, Weeks, Months, or pFrom/Products/Product/S (6 chars max) Years) ubscription/Term @Type Order/ShipTos/ShipTo/Shi Yes 1 Numeric Node Shipping Weight pFrom/ShipWeight Order/ShipTos/ShipTo/Shi Yes 1 Container All available Shipping Options (see: pFrom/ShippingOptions ShipTo/ShipFrom @Name) • See Settings/Shipping/Show Zones & Rates in the OMS for all configured Shipping Options Order/ShipTos/ShipTo/Shi Yes 1 + Container pFrom/ShippingOptions/Sh ipOption Order/ShipTos/ShipTo/Shi Yes 1 Text Node (50 Shipping Method pFrom/ShippingOptions/Sh chars max) ipOption/ShipMethod

65 Element Xpath Always Occurs Type Description Order/ShipTos/ShipTo/Shi Yes 1 Currency Shipping Rate pFrom/ShippingOptions/Sh Node ipOption/ShipRate Order/ShipTos/ShipTo/Shi No 1 Currency Shipping Tax (if applicable) pFrom/ShippingOptions/Sh Node ipOption/ShipTax Order/ShipTos/ShipTo/Shi No 1 Date Node Expected Ship Date (if applicable) pFrom/ShippingOptions/Sh ipOption/ExpectedShipDat e Order/ShipTos/ShipTo/Shi No 1 Date Node Expected Delivery Date pFrom/ShippingOptions/Sh • Included if IncludeDeliveryDates was requested ipOption/ExpectedDelivery and the carrier has returned an expected delivery Date date Order/ShipTos/ShipTo/Shi No 1 Integer Number of days the shipment will be in transit pFrom/ShippingOptions/Sh Attribute • Included if IncludeDeliveryDates was requested ipOption/ExpectedDelivery and the carrier has returned the number of days Date @TimeInTransit the shipment will be in transit Order/ShipTos/ShipTo/Shi No 1 Container List of available delivery dates pFrom/ShippingOptions/Sh • Included if IncludeDeliveryDates was requested ipOption/AvailableDeliver and the carrier has returned a list of available yDates delivery dates Order/ShipTos/ShipTo/Shi Yes* 1 + Date Node One or more Available Delivery Dates pFrom/ShippingOptions/Sh ipOption/AvailableDeliver yDates/Date Order/ShipTos/ShipTo/Shi No 1 Empty Node Present if this is the Default Shipping Option pFrom/ShippingOptions/D efault Order/Pickups No 1 Container Indicates the Location where the order can be Picked Up Order/Pickups/Pickup Yes 1 + Container Order/Pickups/Pickup Yes 1 Text Attribute The Location name @Location Order/Pickups/Pickup Yes 1 Percentage The Location Sales Tax Rate @SalesTaxRate Attribute Order/Pickups/Pickup/Prod Yes 1 Container Indicates the product(s) that will be included in ucts the order Order/Pickups/Pickup/Prod Yes 1 + Container ucts/Product Order/Pickups/Pickup/Prod Yes 1 Text Attribute Product is Taxable (Yes or No) ucts/Product @Taxable (3 chars max) Order/Pickups/Pickup/Prod Yes 1 Text Node Product Name ucts/Product/ProductName (100 chars max) Order/Pickups/Pickup/Prod No 1 Integer Node Product Number ucts/Product/ProductNo Order/Pickups/Pickup/Prod No 1 Text Node (50 Product SKU number ucts/Product/ProductSKU chars max) Order/Pickups/Pickup/Prod No 1 Container SKU-level item ucts/Product/SKUItem Order/Pickups/Pickup/Prod No 1 Container ucts/Product/SKUItem/Attr ibutes

66 Element Xpath Always Occurs Type Description Order/Pickups/Pickup/Prod Yes* 1 + Text Node (50 SKU Attribute value ucts/Product/SKUItem/Attr chars max) ibutes/Attribute Order/Pickups/Pickup/Prod Yes* 1 Text Attribute SKU Attribute Name ucts/Product/SKUItem/Attr (50 chars max) ibutes/Attribute @Name Order/Pickups/Pickup/Prod Yes 1 Integer Node Product Quantity ucts/Product/Qty Order/Pickups/Pickup/Prod Yes 1 Integer Node Product Inventory ucts/Product/Qty @Inventory Order/Pickups/Pickup/Prod Yes 1 Numeric Node Product Unit Weight ucts/Product/UnitWeight Order/Pickups/Pickup/Prod Yes 1 Currency Product Unit Price ucts/Product/UnitPrice Node Order/Pickups/Pickup/Prod No 1 Currency Product Discounted Price (if applicable) ucts/Product/DiscountedPri Node ce Order/Pickups/Pickup/Prod No 1 Container For Product Subscription (if applicable) ucts/Product/Subscription Order/Pickups/Pickup/Prod Yes* 1 Integer Node Subscrition Frequency (integer value) ucts/Product/Subscription/ Frequency Order/Pickups/Pickup/Prod Yes* 1 Text Attribute Subscrition Frequency Type (Days, Weeks, or ucts/Product/Subscription/ (6 chars max) Months) Frequency @Type Order/Pickups/Pickup/Prod No 1 Integer Node Subscription Term (integer value) ucts/Product/Subscription/ • Omitted for a Subscription of indefinite length Term Order/Pickups/Pickup/Prod Yes* 1 Text Attribute Subscrition Term Type (Days, Weeks, Months, or ucts/Product/Subscription/ (6 chars max) Years) Term @Type Order/SubTotal Yes 1 Currency Order Subtotal Node Order/Discounts No 1 Container

Order/Discounts/Category No 1 + Currency Category Discount Amount Discount Node Order/Discounts/Category Yes* 1 Text Attribute Category Name (for Category Discount) Discount @Name (50 chars max) • Subcategories appear as category paths separated by " / " (e.g. Golf Clubs / Putters). Note that there is a space on either side of the forward slash Order/Discounts/OrderDisc No 1 Currency Order Discount Amount ount Node Order/Discounts/CouponDi No 1 Currency Coupon Discount Amount scount Node Order/Discounts/CouponDi Yes* 1 Text Attribute Coupon Code (for Coupon Discount) scount @Code (50 chars max) Order/Discounts/Customer No 1 Currency Customer Discount Amount Discount Node Order/Discounts/Customer No 1 Percent Customer Discount Percent Discount @Percent Attribute

67 Element Xpath Always Occurs Type Description Order/Discounts/GiftCard No 1 Currency Gift Card Discount Amount Node Order/Discounts/GiftCertifi No 1 Currency Gift Certificate Discount Amount cate Node Order/Discounts/LoyaltyDi No 1 Currency Customer Loyalty Discount Amount scount Node Order/Gratuity No 1 Currency Gratuity Amount Node Order/SalesTaxTotal Yes 1 Currency Order Sales Tax Node

OrderCalculateRequest Example

fairway Nk5\#/K#0:{!C:SfqVs0 demo @demo.com Nike Sphere Dry Polo Black Small 1

OrderCalculateReply Example

demo @demo.com Consumer

68

Adam Scott 956 18th St. La Jolla CA 92037 US
Nike Sphere Dry Polo Black Small 1 2.00 60.00 2.00 FedEx Ground 7.32 06/24/2014 06/25/2014 06/26/2014 06/27/2014 06/30/2014 07/01/2014 07/02/2014 07/03/2014 07/07/2014 07/08/2014 07/09/2014 07/10/2014 07/11/2014 07/14/2014 60.00 6.00

69 4.32

70 8: OrderCreate

The OrderCreate tool is used to create new orders (Add Mode), create new Pending Orders (Pending Mode), or to import pre-existing orders from an external system (Import Mode).

Each OrderCreate node specifies the source of the order using a Customer container, one or more shipping destinations using the ShipTos container, one or more pickup locations using the Pickups container, and one or more line items using the Products and GiftCertificates containers. Additional information regarding the order can be specified using the BillTo container, the Payment container, the Discounts container, the PlacedBy container, the Affiliate container, and the ShipCompliant container. In Import Mode, you may include other information that might be relevant to the order using the OrderDate node, the BillingStatus node, the LineItemStatus node, the ExpectedPickupDate and PickupDate nodes, the PickedUpBy node, the ShipDate node, and the TrackingNumber node.

The OrderCreate tool may be used to create orders for new or pre-existing customers, but products included in the OrderCreateRequest must be pre-existing. In Add Mode, automatic e-mails (e.g. Order Confirmation E-Mails, Order Notification E-Mails, Gift Certificate E-Mails, Drop Ship E-Mails) are sent when an OrderCreateRequest is processed, subject to the appropriate settings in the OMS. Please note that an OrderCreate request cannot contain both a Pickups container and a ShipTos container within the same order.

The Strict node in the OrderCreateRequest will cause the tool to enforce all existing settings and configurations from the OMS. If the Strict node is included, all applicable validations are applied against all information in the OrderCreateRequest.

The AllowNonPreferredCreditCard node in the OrderCreateRequest will allow the Order to be created if the Customer has at least one unexpired credit card on file as a Saved Credit Card in the OMS.

The ForceProceed node in the OrderCreateRequest forces the tool to proceed with valid order requests even if there is an invalid order request. In such a scenario, the corresponding Order containers for the invalid requests in the OrderCreateReply contain the Error XML elements specified in Chapter 15 (Errors) in lieu of the elements specified in the OrderCreateReply schema. If the ForceProceed node is not included in the OrderCreateRequest, any invalid Order requests result in the failure of all subsequent Order requests in the query.

The ReplaceExistingOrder node in the OrderCreate container will completely replace everything in an existing order with a new order based on the contents of the OrderCreate XML. Note that nothing from the existing order will be preserved, and the Customer in the new order must match the Customer in the existing order. Also note that any existing charges associated with the order being replaced must be accounted for, and dealt with

71 (e.g. credit card charges must be refunded or voided in the Credit Card Terminal, carrier charges and fees must be reversed, etc.).

When new orders are added, most of the settings and configurations are applied by default, regardless of the presence or absence of the Strict node. In Import Mode, it is recommend that you not include the Strict node in the OrderCreateRequest if any of the nodes listed in the OrderCreateRequest Schema contain information that isn't aligned with the current settings and configuration of your OMS (e.g. some pre-existing orders were paid for with American Express and your storefront only accepts Visa and MasterCard).

A single OrderCreateRequest may contain no more than 15 OrderCreate containers. If you wish to create more than 15 orders, you must do so in an iterative manner.

Note: Customer Type Upgrades do apply to OrderCreate. Autocoupons and Automatic Add Triggers do not apply.

OrderCreateRequest URL: https://www.nexternal.com/shared/xml/ordercreate.rest

OrderCreateRequest Schema Element Xpath Required Occurs Type Description Credentials Yes 1 Container Note that the supplied Credentials must contain the Client's XML Key or a UserName and Password, but not both Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/Key No 1 Text Node (20 Client's XML Key chars max) Credentials/UserName No 1 Text Node (50 XML Tools User Name chars max) • See Users / New Users / Access Level in the OMS for more information about the XML Tools Access Level Credentials/Password No 1 Text Node (50 XML Tools User Password chars max) OrderCreate Yes 1 - 15 Container OrderCreate @Mode Yes 1 Text Attribute Order Create Mode (Add, Import, or Pending) (6 chars max) OrderCreate/ReplaceExisti No 1 Integer Node Existing Order Number ngOrder • Completely replace an existing order with a new order based on the contents of the remaining XML OrderCreate request. • The Customer and Order Type of the existing order must match the Customer and Order Type in the new order. Gift Certificate Orders cannot be replaced after one or more certificates have been used. OrderCreate/Customer Yes 1 Container

72 Element Xpath Required Occurs Type Description OrderCreate/Customer No 1 Text Attribute Indicates which node in the query will be used to @MatchingField (10 chars max) match an existing customer (CustomerNo, Name, or Email) • If MatchingField is included and a customer match is found, the existing customer will be used; otherwise a new customer will be created • If MatchingField is not included, a new customer will be created OrderCreate/Customer/Cus No 1 Integer Node Customer Number (for matching purposes only) tomerNo • Required if MatchingField="CustomerNo" OrderCreate/Customer/Na No 1 Container Customer Name me • Required if MatchingField="Name" OrderCreate/Customer/Na Yes* 1 Text Node (50 Customer First Name me/FirstName chars max) OrderCreate/Customer/Na Yes* 1 Text Node (50 Customer Last Name me/LastName chars max) OrderCreate/Customer/Em No 1 Text Node (50 Customer E-Mail Address ail chars max) • Required if MatchingField="Email" OrderCreate/Customer/Em No 1 Text Attribute Default To value when duplicate Customer ail @DefaultTo (21 chars max) records are encountered (Most Recently Created, Most Recently Updated, Most Orders Placed, or Highest Customer Rank) • If a query based on the Customer E-Mail Address returns more than one Customer record the query will use the DefaultTo attribute value to determine which Customer record to use • If no value is specified and duplicate Customer records are encountered, an error response will be returned OrderCreate/Customer/Cus No 1 Container Customer Password and Password Reminder (for tomerPassword creating new customers only) OrderCreate/Customer/Cus No 1 Text Node (50 Customer Password tomerPassword/Password chars max) • If Mode="Add" or "Pending", password may be auto-generated, based on the XML Passwords field (Customers/Password Preferences in the OMS) OrderCreate/Customer/Cus No 1 Text Node Customer Password Reminder tomerPassword/PasswordR (100 chars eminder max) OrderCreate/Customer/Cus No 1 Text Node (20 Customer Type (for creating new customers only) tomerType chars max) • The default customer type is defined at Customers/Types in the OMS OrderCreate/Customer/Cus No 1 Text/Integer/N Customer Custom Field #1 Value (for creating tomField1 umeric/Curren new customers only) cy/Date Node • Node Type depends on Field Type of Custom Field OrderCreate/Customer/Cus Yes* 1 Text Attribute Customer Custom Field #1 Type (Text, Positive tomField1 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderCreate/Customer/Cus No 1 Text/Integer/N Customer Custom Field #2 Value (for creating tomField2 umeric/Curren new customers only) cy/Date Node • Node Type depends on Field Type of Custom Field

73 Element Xpath Required Occurs Type Description OrderCreate/Customer/Cus Yes* 1 Text Attribute Customer Custom Field #2 Type (Text, Positive tomField2 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderCreate/Customer/Cus No 1 Text/Integer/N Customer Custom Field #3 Value (for creating tomField3 umeric/Curren new customers only) cy/Date Node • Node Type depends on Field Type of Custom Field OrderCreate/Customer/Cus Yes* 1 Text Attribute Customer Custom Field #3 Type (Text, Positive tomField3 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderCreate/Customer/Cus No 1 Text/Integer/N Customer Custom Field #4 Value (for creating tomField4 umeric/Curren new customers only) cy/Date Node • Node Type depends on Field Type of Custom Field OrderCreate/Customer/Cus Yes* 1 Text Attribute Customer Custom Field #4 Type (Text, Positive tomField4 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderCreate/Customer/Cus No 1 Text/Integer/N Customer Custom Field #5 Value (for creating tomField5 umeric/Curren new customers only) cy/Date Node • Node Type depends on Field Type of Custom Field OrderCreate/Customer/Cus Yes* 1 Text Attribute Customer Custom Field #5 Type (Text, Positive tomField5 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderCreate/Customer/Cus No 1 Text/Integer/N Customer Custom Field #6 Value (for creating tomField6 umeric/Curren new customers only) cy/Date Node • Node Type depends on Field Type of Custom Field OrderCreate/Customer/Cus Yes* 1 Text Attribute Customer Custom Field #6 Type (Text, Positive tomField6 @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) OrderCreate/BillTo No 1 Container Customer Bill To Address • If a pre-existing customer is used and this container is omitted, the customer’s Primary Bill To Address is used (or Contact Address, if there is no Primary Bill To Address) • Required if you are creating a new customer OrderCreate/BillTo/Addres Yes* 1 Container Customer Bill To Address s OrderCreate/BillTo/Addres Yes* 1 Text Attribute Customer Bill To Address Type (Residential or s @Type (11 chars max) Business) OrderCreate/BillTo/Addres No 1 Container May be omitted if Customer/Name node exists s/Name and you wish to use those values OrderCreate/BillTo/Addres Yes* 1 Text Node (50 Customer First Name s/Name/FirstName chars max) OrderCreate/BillTo/Addres Yes* 1 Text Node (50 Customer Last Name s/Name/LastName chars max) OrderCreate/BillTo/Addres No 1 Text Node Customer Bill To Company Name s/CompanyName (100 chars • Usage of the Company Name field is set at max) Customers/Types in the OMS OrderCreate/BillTo/Addres Yes* 1 Text Node Customer Bill To Street Address (Line 1) s/StreetAddress1 (100 chars max)

74 Element Xpath Required Occurs Type Description OrderCreate/BillTo/Addres No 1 Text Node Customer Bill To Street Address (Line 2) s/StreetAddress2 (100 chars max) OrderCreate/BillTo/Addres Yes* 1 Text Node (50 Customer Bill To City s/City chars max) OrderCreate/BillTo/Addres No 1 Text Node (2 Customer Bill To State/Province Code s/StateProvCode chars max) OrderCreate/BillTo/Addres Yes* 1 Text Node (20 Customer Bill To Zip/Postal Code s/ZipPostalCode chars max) OrderCreate/BillTo/Addres Yes* 1 Text Node (2 Customer Bill To Country Code s/CountryCode chars max) OrderCreate/BillTo/Addres Yes* 1 Text Node (50 Customer Bill To Phone Number s/PhoneNumber chars max) OrderCreate/BillTo/Addres No 1 Text Node (30 Customer Bill To Phone Extension s/PhoneExt chars max) OrderCreate/BillTo/Addres No 1 Empty Node Include only if Mode="Import" and data is being s/DoNotSaveAddress imported into an existing storefront OMS! • Used to prevent existing Customer Address / Address Book information from being overwritten by orders imported from an external source. Note that a Customer Contact Address will be created for the imported order if a matching Customer Address record cannot be found in the OMS. OrderCreate/Payment No 1 Container Indicates the method of payment for the order • If a pre-existing Customer is used and the Payment container is not present the customer’s Preferred Credit Card will be used. If the AllowNonPreferredCreditCard node is present in the OrderCreateRequest any credit card with a valid expiration date can also be used • A Payment container is required if a new Customer is being added to the OMS OrderCreate/Payment/Pay Yes* 1 Text Node (13 Payment Method (CreditCard, COD, mentMethod chars max) CustomPayment, Invoice, or Paypal) • If Mode="Add" or "Pending", only the Payment Methods selected in Settings/Billing Options in the OMS are valid • If Mode="Import", any one of the five Payment Method values listed above may be used OrderCreate/Payment/Cred No 1 Container Required if the PaymentMethod is "CreditCard"; itCard otherwise may not be used OrderCreate/Payment/Cred Yes* 1 Text Node (10 Credit Card Type (Visa, MasterCard, American itCard/CreditCardType chars max) Express, Diners Club, Discover, enRoute, or JCB) • If Mode="Add" or "Pending", or Mode="Import" but the order has not yet been billed or paid, only the Credit Card Types selected in Settings/Billing Options in the OMS are valid • If Mode="Import" and the order has already been billed or paid, any Credit Card Type may be used

75 Element Xpath Required Occurs Type Description OrderCreate/Payment/Cred No 1 Text Node (16 Credit Card Number itCard/CreditCardNumber chars max) • If the PaymentMethod is "CreditCard”: optional for Mode=”Import”, required for Mode=”Add” or "Pending" OrderCreate/Payment/Cred No 1 Date Node Credit Card Expiration Date itCard/CreditCardExpDate (mm/yyyy) • If Mode="Add" or "Pending", or Mode="Import" but the order has not yet been billed or paid, the Credit Card Expiration Date must be in the future • If Mode="Import" and the order has already been billed or paid, any Expiration Date is valid • Default value: current month and year OrderCreate/Payment/Cust No 1 Text Node (20 Required if the PaymentMethod is omPayment chars max) "CustomPayment"; otherwise may not be used • If Mode="Add" or "Pending", only the Custom Payment Names entered in Settings/Billing Options in the OMS are valid • If Mode="Import" any currently undefined Payment Method or Name may be used OrderCreate/Payment/PON No 1 Text Node (40 Purchase Order Number umber chars max) • Applicable only if the selected PaymentMethod allows Purchase Order Numbers (Settings/Billing Options in the OMS) OrderCreate/Discounts No 1 Container Discounts applied to the order

OrderCreate/Discounts/Co No 1 Text Node (50 Coupon Code uponCode chars max) • Ignored if Mode="Import" OrderCreate/Discounts/Gift No 1 Text Node (19 FlexCache Gift Card Number Card chars max) • Ignored if Mode="Import" OrderCreate/Discounts/Gift Yes* 1 Text Attribute FlexCache Gift Card PIN Card @PIN (4 chars max) OrderCreate/Discounts/Gift No 1 Text Node (20 Gift Certificate Code Certificate chars max) • Ignored if Mode="Import" OrderCreate/Discounts/Loy No 1 Empty/Curren Customer Loyalty Discount Amount altyDiscount cy Node • If empty, the maximum possible Loyalty Discount will be applied, based on the customer’s available Loyalty Points OrderCreate/Discounts/Ord No 1 Currency Order Discount erDiscount Node • Ignored if Mode="Add" or "Pending" OrderCreate/Gratuity No 1 Currency Gratuity Amount Node OrderCreate/PlacedBy No 1 Container

OrderCreate/PlacedBy/Plac Yes* 1 Text Node (25 Placed By (Internet, Phone, Fax, Mail, or Other) edByMethod chars max) OrderCreate/PlacedBy/Oth Yes* 1 Text Node (25 Include only if PlacedByMethod is "Other" erMethod chars max) OrderCreate/PlacedBy/Cus No 1 Text Node (15 Customer IP Address tomerIPAddress chars max) • Include only if PlacedByMethod is "Internet" OrderCreate/PlacedBy/Plac No 1 Container Values entered into the PlacedWith container edWith must belong to an existing User • Include only if PlacedByMethod is not "Internet"

76 Element Xpath Required Occurs Type Description OrderCreate/PlacedBy/Plac Yes* 1 Container edWith/Name OrderCreate/PlacedBy/Plac Yes* 1 Text Node (50 Placed With First Name edWith/Name/FirstName chars max) OrderCreate/PlacedBy/Plac Yes* 1 Text Node (50 Placed With Last Name edWith/Name/LastName chars max) OrderCreate/ShipComplian No 1 Container If ShipCompliant is in use (Settings/Compatible t Software/ShipCompliant) this container is used to overide the OMS ShipCompliant Preferences • If Mode="Import" and ShipCompliant is in use, this container is required OrderCreate/ShipComplian Yes* 1 Text Node (14 ShipCompliant Commit Option (All, Compliant t/CommitOption chars max) Only, or None) • If Mode="Import" and the order being imported has already been processed by ShipCompliant, set this node to "None" to prevent duplicate processing OrderCreate/ShipComplian Yes* 1 Text Node (20 ShipCompliant Override Option (Never Override, t/OverrideOption chars max) Allow Unless Shipped, Always Allow, or Always Override) • If Mode="Import" and the order being imported has already been processed by ShipCompliant set this node to "Never Override" to prevent duplicate processing OrderCreate/ShipComplian No 1 Empty Node ShipCompliant Ignore Invalid Address t/AddressIgnore OrderCreate/ShipTos No 1 Container For Ship To Addresses OrderCreate/ShipTos/Ship Yes* 1 + Container To OrderCreate/ShipTos/Ship No 1 Text Attribute Address Label (for matching purposes) To @Label (25 chars max) • If the Label value is "yourself" the customer’s Primary Ship To Address will be used (or Contact Address, if there is no Primary Ship To) • If the Label value is not "yourself" it must match an existing Customer Address OrderCreate/ShipTos/Ship No 1 Integer Customer Additional Addresses ID To @ID Attribute OrderCreate/ShipTos/Ship No 1 Container Ship To Address To/Address • If ShipTo @Label or @ID is used, the ShipTo/Address container is ignored • If the ShipTo/Address container is not present the Customer Primary Shipping Address will be used (or Contact Address, if there is no Primary Ship To) OrderCreate/ShipTos/Ship Yes* 1 Text Attribute Ship To Address Type (Residential or Business) To/Address @Type (11 chars max) OrderCreate/ShipTos/Ship Yes* 1 Text Attribute Ship To Address Label To/Address @Label (25 chars max) OrderCreate/ShipTos/Ship Yes* 1 Container To/Address/Name OrderCreate/ShipTos/Ship Yes* 1 Text Node (50 Ship To First Name To/Address/Name/FirstNa chars max) me

77 Element Xpath Required Occurs Type Description OrderCreate/ShipTos/Ship Yes* 1 Text Node (50 Ship To Last Name To/Address/Name/LastNa chars max) me OrderCreate/ShipTos/Ship No 1 Text Node Ship To Company Name To/Address/CompanyNam (100 chars • Usage of the Company Name field is set at e max) Customers/Types in the OMS OrderCreate/ShipTos/Ship Yes* 1 Text Node Ship To Street Address (Line 1) To/Address/StreetAddress1 (100 chars max) OrderCreate/ShipTos/Ship No 1 Text Node Ship To Street Address (Line 2) To/Address/StreetAddress2 (100 chars max) OrderCreate/ShipTos/Ship Yes* 1 Text Node (50 Ship To City To/Address/City chars max) OrderCreate/ShipTos/Ship No 1 Text Node (2 Ship To State/Province Code To/Address/StateProvCode chars max) OrderCreate/ShipTos/Ship Yes* 1 Text Node (20 Ship To Zip/Postal Code To/Address/ZipPostalCode chars max) OrderCreate/ShipTos/Ship Yes* 1 Text Node (2 Ship To Country Code To/Address/CountryCode chars max) OrderCreate/ShipTos/Ship Yes* 1 Text Node (50 Ship To Phone Number To/Address/PhoneNumber chars max) OrderCreate/ShipTos/Ship No 1 Text Node (30 Ship To Phone Extension To/Address/PhoneExt chars max) OrderCreate/ShipTos/Ship No 1 Empty Node Sets address as customer’s Primary Shipping To/Address/PrimaryShip Address OrderCreate/ShipTos/Ship No 1 Empty Node • Used to prevent existing Customer Address / To/Address/DoNotSaveAd Address Book information from being dress overwritten by orders imported from an external source. OrderCreate/ShipTos/Ship No 1 Empty Node Indicates Gift Wrapping is requested To/GiftWrap OrderCreate/ShipTos/Ship No 1 Text Node Gift Message To/GiftMessage OrderCreate/ShipTos/Ship Yes 1 Container To/Shipping OrderCreate/ShipTos/Ship Yes 1 Container To/Shipping/Shipments OrderCreate/ShipTos/Ship No 1 + Container Include if you would like to declare preferred To/Shipping/Shipments/Shi shipping methods for one or more ShipFrom pFrom locations (Settings/Site Options/Ship From Addresses in the OMS) OrderCreate/ShipTos/Ship Yes* 1 Text Attribute Ship-From Location Internal Name To/Shipping/Shipments/Shi (50 chars max) pFrom @Name OrderCreate/ShipTos/Ship Yes* 1 Text Node (60 Preferred Shipping Method (see Settings/ To/Shipping/Shipments/Shi chars max) Shipping/Show Zones & Rates in the OMS) pFrom/ShipMethod OrderCreate/ShipTos/Ship No 1 Currency Shipping Rate To/Shipping/Shipments/Shi Node • Required if Mode="Import" and ShipMethod is pFrom/ShipRate not one of the Shipping Options available for the ShipFrom location (see Settings/Shipping/Show Zones & Rates in the OMS)

78 Element Xpath Required Occurs Type Description OrderCreate/ShipTos/Ship No 1 Container To/Shipping/Shipments/Shi pFrom/PreferredDeliveryD ate OrderCreate/ShipTos/Ship Yes* 1 Container To/Shipping/Shipments/Shi pFrom/DateTime OrderCreate/ShipTos/Ship Yes* 1 Date Node Preferred Delivery Date To/Shipping/Shipments/Shi (mm/dd/yyyy) • Preferred Delivery Date must be enabled in the pFrom/DateTime/Date OMS (Settings/Site Options) and Time In Transit information must be available OrderCreate/ShipTos/Ship Yes* 1 Container Default shipping method to be used if the To/Shipping/Shipments/De preferred shipping method is not defined in faultShipFrom Shipments/ShipFrom • DefaultShipFrom is required if a Shipping container is present in the query OrderCreate/ShipTos/Ship Yes* 1 Text Node (60 Default Shipping Method To/Shipping/Shipments/De chars max) • You can omit any special characters (e.g. ®) faultShipFrom/ShipMethod that appear in the method name OrderCreate/ShipTos/Ship No 1 Currency Shipping Rate To/Shipping/Shipments/De Node • Required if Mode="Import" and ShipMethod is faultShipFrom/ShipRate not one of the Shipping Options available for the ShipFrom location (see Settings/Shipping/Show Zones & Rates) OrderCreate/ShipTos/Ship No 1 Container To/Shipping/Shipments/De faultShipFrom/PreferredDe liveryDate OrderCreate/ShipTos/Ship Yes* 1 Container To/Shipping/Shipments/De faultShipFrom/DateTime OrderCreate/ShipTos/Ship Yes* 1 Date Node Preferred Delivery Date To/Shipping/Shipments/De (mm/dd/yyyy) • Preferred Delivery Date must be enabled in the faultShipFrom/DateTime/D OMS (Settings/Site Options) and Time In Transit ate information must be available OrderCreate/ShipTos/Ship No 1 Percent Node Sales Tax Rate charged (if defined) To/SalesTaxRate • Invalid if ShipTo/SalesTaxAmount is used • If Sales Tax is not specified, the value configured in the OMS (Settings/Sales Tax) is used. OrderCreate/ShipTos/Ship No 1 Currency Sales Tax Amount charged (if defined) To/SalesTaxAmount Node • Invalid if ShipTo/SalesTaxRate is used • If Sales Tax is not specified, the value configured in the OMS (Settings/Sales Tax) is used OrderCreate/ShipTos/Ship Yes 1 Container Indicates the product(s) that will be included in To/Products the order • Products must already exist; see ProductUpdate to add new products

79 Element Xpath Required Occurs Type Description OrderCreate/ShipTos/Ship Yes 1 + Container Products can be matched using the ProductNo, To/Products/Product the ProductName, or the ProductSKU. SKU- level items for a particular Product can be matched using one of the nodes listed above, along with a SKUItem node. The SKU node can be used to match any unique SKU number declared at the Product level or at the SKU level OrderCreate/ShipTos/Ship No 1 Text Attribute Ship-From Location Internal Name To/Products/Product (50 chars max) • If Ship-From Location is not specified, it is @ShipFrom assigned automatically as in the Online Store OrderCreate/ShipTos/Ship No 1 Integer Node Product Number (for matching purposes) To/Products/Product/Produ ctNo OrderCreate/ShipTos/Ship No 1 Text Node Product Name (for matching purposes) To/Products/Product/Produ (100 chars ctName max) OrderCreate/ShipTos/Ship No 1 Text Node (50 Product SKU number (for matching purposes) To/Products/Product/Produ chars max) ctSKU OrderCreate/ShipTos/Ship No 1 Text Node (50 Product-level or SKU-level SKU number (for To/Products/Product/SKU chars max) matching purposes) • Note that this node is used instead of the ProductNo, ProductName, ProductSKU, and SKUItem node(s) to identify a Product or a SKU- level item for a Product OrderCreate/ShipTos/Ship No 1 Container To/Products/Product/SKUI tem OrderCreate/ShipTos/Ship No 1 Text Attribute SKU-level SKU number (for matching purposes) To/Products/Product/SKUI (50 chars max) tem @SKU OrderCreate/ShipTos/Ship No 1 Container To/Products/Product/SKUI tem/Attributes OrderCreate/ShipTos/Ship Yes* 1 + Text Node (50 SKU Attribute Value To/Products/Product/SKUI chars max) tem/Attributes/Attribute OrderCreate/ShipTos/Ship Yes* 1 Text Attribute SKU Attribute Name To/Products/Product/SKUI (50 chars max) tem/Attributes/Attribute @Name OrderCreate/ShipTos/Ship No 1 Container Include if the product has write-in attributes To/Products/Product/Write Ins OrderCreate/ShipTos/Ship Yes* 1 + Text Node Write-In attribute value To/Products/Product/Write (4000 chars Ins/WriteIn max) OrderCreate/ShipTos/Ship Yes* 1 Text Attribute Write-In attribute name To/Products/Product/Write (50 chars max) Ins/WriteIn @Name

80 Element Xpath Required Occurs Type Description OrderCreate/ShipTos/Ship Yes 1 Integer Node Product Quantity To/Products/Product/Qty • If Mode="Import" and neither ReplaceExistingOrder nor AllowInventoryUpdate applies; or Mode=“Pending”; the Product Quantity will not be deducted from product inventory OrderCreate/ShipTos/Ship No 1 Integer Node Required Quantity To/Products/Product/Requi • Applicable only if Mode=”Pending”; may not redQty exceed Product Quantity • Ignored if Mode=”Add” or “Import” OrderCreate/ShipTos/Ship No 1 Currency Include to override the default product Unit Price To/Products/Product/UnitP Node • Product-level discounts defined in the OMS are rice ignored if this node is included • Required if the Product Pricing Model is "BID" OrderCreate/ShipTos/Ship No 1 Container Include to order a Subscription To/Products/Product/Subsc • If the product is Subscription Only and this ription container is not included, the first Subscription Option is used OrderCreate/ShipTos/Ship Yes* 1 Integer Node Subscrition Frequency (integer value) To/Products/Product/Subsc ription/Frequency OrderCreate/ShipTos/Ship Yes* 1 Text Attribute Subscrition Frequency Type (Days, Weeks, or To/Products/Product/Subsc (6 chars max) Months) ription/Frequency @Type OrderCreate/ShipTos/Ship No 1 Integer Node Subscription Term (integer value) To/Products/Product/Subsc • Omit for a Subscription of indefinite length ription/Term OrderCreate/ShipTos/Ship Yes* 1 Text Attribute Subscrition Term Type (Days, Weeks, Months, or To/Products/Product/Subsc (6 chars max) Years) ription/Term @Type OrderCreate/ShipTos/Ship No 1 Text Node (20 Line Item Status (Unshipped, In Process, To/Products/Product/LineIt chars max) Shipped, Backordered, or Preordered) emStatus • Ignored if Mode="Add" or "Pending" • Required if Mode="Import" OrderCreate/ShipTos/Ship No 1 Text/Integer/N Line Item Custom Field Value To/Products/Product/LineIt umeric/Curren • Node Type depends on Field Type of Custom emCustomField cy/Date Node Field OrderCreate/ShipTos/Ship Yes* 1 Text Attribute Line Item Custom Field Type (Text, Positive To/Products/Product/LineIt (16 chars max) Number, Positive Integer, Currency, Date, emCustomField @Type Yes/No) OrderCreate/ShipTos/Ship No 1 Container • Ignored if Mode="Add" or "Pending" To/Products/Product/ShipD • Required if Mode="Import" and the Line Item ate Status is "Shipped" OrderCreate/ShipTos/Ship Yes* 1 Container To/Products/Product/ShipD ate/DateTime OrderCreate/ShipTos/Ship Yes* 1 Date Node Ship Date To/Products/Product/ShipD (mm/dd/yyyy) ate/DateTime/Date OrderCreate/ShipTos/Ship No 1 Text Node (50 Tracking Number To/Products/Product/Track chars max) • Ignored if Mode="Add" or "Pending" ingNumber • Include if Mode="Import" and the Line Item Status is "Shipped"

81 Element Xpath Required Occurs Type Description OrderCreate/GiftCertificate No 1 Container Indicates the gift certificate purchase(s) that will s be included in the order • The GiftCertificates container and all child nodes are ignored if Mode="Import" • The GiftCertificates container cannot be included in the same query as the Products container OrderCreate/GiftCertificate Yes* 1 + Container s/GiftCert OrderCreate/GiftCertificate Yes* 1 Container s/GiftCert/GiftCertRecipie nt OrderCreate/GiftCertificate Yes* 1 Container s/GiftCert/GiftCertRecipie nt/Name OrderCreate/GiftCertificate Yes* 1 Text Node (50 Recipient First Name s/GiftCert/GiftCertRecipie chars max) nt/Name/FirstName OrderCreate/GiftCertificate Yes* 1 Text Node (50 Recipient Last Name s/GiftCert/GiftCertRecipie chars max) nt/Name/LastName OrderCreate/GiftCertificate Yes* 1 Text Node (50 Recipient E-Mail Address s/GiftCert/GiftCertRecipie chars max) nt/Email OrderCreate/GiftCertificate Yes* 1 Currency Gift Certificate Amount s/GiftCert/GiftCertAmount Node OrderCreate/GiftCertificate No 1 Text Node Gift Certificate Message (if provided) s/GiftCert/GiftCertMessage OrderCreate/Pickups No 1 Container For Pickup Locations OrderCreate/Pickups/Picku Yes* 1 + Container p OrderCreate/Pickups/Picku Yes* 1 Text Attribute Pickup Location Internal Name p @Location (50 chars max) OrderCreate/Pickups/Picku No 1 Percent Node Sales Tax Rate charged (if defined) p/SalesTaxRate • Invalid if ShipTo/SalesTaxAmount is used • If Sales Tax is not specified, the value configured in the OMS (Settings/Sales Tax) is used. OrderCreate/Pickups/Picku No 1 Currency Sales Tax Amount charged (if defined) p/SalesTaxAmount Node • Invalid if ShipTo/SalesTaxRate is used • If Sales Tax is not specified, the value configured in the OMS (Settings/Sales Tax) is used. OrderCreate/Pickups/Picku Yes 1 Container Indicates the product(s) that will be included in p/Products the order • Products must already exist; see ProductUpdate to add new products OrderCreate/Pickups/Picku Yes 1 + Container Products can be matched using the ProductNo, p/Products/Product the ProductName, or the ProductSKU. SKU- level items for a particular Product can be matched using one of the nodes listed above, along with a SKUItem node. The SKU node can be used to match any unique SKU number declared at the Product level or at the SKU level

82 Element Xpath Required Occurs Type Description OrderCreate/Pickups/Picku No 1 Integer Node Product Number (for matching purposes) p/Products/Product/Product No OrderCreate/Pickups/Picku No 1 Text Node Product Name (for matching purposes) p/Products/Product/Product (100 chars Name max) OrderCreate/Pickups/Picku No 1 Text Node (50 Product SKU number (for matching purposes) p/Products/Product/Product chars max) SKU OrderCreate/Pickups/Picku No 1 Text Node (50 Product-level or SKU-level SKU number (for p/Products/Product/SKU chars max) matching purposes) • Note that this node is used instead of the ProductNo, ProductName, ProductSKU, and SKUItem node(s) to identify a Product or a SKU- level item for a Product OrderCreate/Pickups/Picku No 1 Container p/Products/Product/SKUIte m OrderCreate/Pickups/Picku No 1 Text Attribute SKU-level SKU number (for matching purposes) p/Products/Product/SKUIte (50 chars max) m @SKU OrderCreate/Pickups/Picku No 1 Container p/Products/Product/SKUIte m/Attributes OrderCreate/Pickups/Picku Yes* 1 + Text Node (50 SKU Attribute Value p/Products/Product/SKUIte chars max) m/Attributes/Attribute OrderCreate/Pickups/Picku Yes* 1 Text Attribute SKU Attribute Name p/Products/Product/SKUIte (50 chars max) m/Attributes/Attribute @Name OrderCreate/Pickups/Picku No 1 Container Include if the product has write-in attributes p/Products/Product/WriteIn s OrderCreate/Pickups/Picku Yes* 1 + Text Node Write-In attribute value p/Products/Product/WriteIn (4000 chars s/WriteIn max) OrderCreate/Pickups/Picku Yes* 1 Text Attribute Write-In attribute name p/Products/Product/WriteIn (50 chars max) s/WriteIn @Name OrderCreate/Pickups/Picku Yes 1 Integer Node Product Quantity p/Products/Product/Qty • If Mode="Import" and neither ReplaceExistingOrder nor AllowInventoryUpdate applies; or Mode=“Pending”; the Product Quantity will not be deducted from product inventory OrderCreate/Pickups/Picku No 1 Integer Required Quantity p/Products/Product/Require Attribute • Applicable only if Mode=”Pending”; may not dQty exceed Product Quantity • Ignored if Mode=”Add” or “Import” OrderCreate/Pickups/Picku No 1 Currency Include to override the default product Unit Price p/Products/Product/UnitPri Node • Product-level discounts defined in the OMS are ce ignored if this node is included • Required if the Product Pricing Model is "BID"

83 Element Xpath Required Occurs Type Description OrderCreate/Pickups/Picku No 1 Container Include to order a Subscription p/Products/Product/Subscri • If the product is Subscription Only and this ption container is not included, the first Subscription Option is used OrderCreate/Pickups/Picku Yes* 1 Integer Node Subscrition Frequency (integer value) p/Products/Product/Subscri ption/Frequency OrderCreate/Pickups/Picku Yes* 1 Text Attribute Subscrition Frequency Type (Days, Weeks, or p/Products/Product/Subscri (6 chars max) Months) ption/Frequency @Type OrderCreate/Pickups/Picku No 1 Integer Node Subscription Term (integer value) p/Products/Product/Subscri • Omit for a Subscription of indefinite length ption/Term OrderCreate/Pickups/Picku Yes* 1 Text Attribute Subscrition Term Type (Days, Weeks, Months, or p/Products/Product/Subscri (6 chars max) Years) ption/Term @Type OrderCreate/Pickups/Picku No 1 Text Node (20 Line Item Status (Not Ready, In Process, Ready, p/Products/Product/LineIte chars max) Picked Up, Backordered, or Preordered) mStatus • Ignored if Mode="Add" or "Pending" • Required if Mode="Import" OrderCreate/Pickups/Picku No 1 Text/Integer/N Line Item Custom Field Value p/Products/Product/LineIte umeric/Curren • Node Type depends on Field Type of Custom mCustomField cy/Date Node Field OrderCreate/Pickups/Picku Yes* 1 Text Attribute Line Item Custom Field Type (Text, Positive p/Products/Product/LineIte (16 chars max) Number, Positive Integer, Currency, Date, mCustomField @Type Yes/No) OrderCreate/Pickups/Picku No 1 Container • Ignored if Mode="Add" or "Pending" p/Products/Product/Pickup • Required if Mode="Import" and the Line Item Date Status is "Picked Up" OrderCreate/Pickups/Picku Yes* 1 Container p/Products/Product/Pickup Date/DateTime OrderCreate/Pickups/Picku Yes* 1 Date Node Pickup Date p/Products/Product/Pickup (mm/dd/yyyy) Date/DateTime/Date OrderCreate/ShipTos/Ship No 1 Text Node (50 First and Last Name of the Customer or Trustee To/Products/Product/Picke chars max) that signed for the Order Line Item dUpBy • Ignored if Mode="Add" or "Pending" • Include if Mode="Import" and the Line Item Status is "Picked Up" OrderCreate/Pickups/Picku No 1 Container p/ExpectedPickupDate OrderCreate/Pickups/Picku Yes* 1 Container p/ExpectedPickupDate/Dat eTime OrderCreate/Pickups/Picku Yes* 1 Date Node Expected Pickup Date p/ExpectedPickupDate/Dat (mm/dd/yyyy) eTime/Date OrderCreate/CustomerCom No 1 Text Node Customer Comments ments OrderCreate/CompanyCom No 1 Text Node Company Comments ments OrderCreate/DisplayComp No 1 Empty Node Include to display Company Comments to the anyComments Customer

84 Element Xpath Required Occurs Type Description OrderCreate/Affiliate No 1 Text Node (50 Affiliate Name chars max) • Affiliates must already exist in the OMS; new affiliates cannot be created with this query. • If Mode="Add" or "Pending" and this node is not included the Affiliate associated with the Customer in the OMS will be credited • If Mode="Import" the Affiliate node must be included to credit the Affiliate associated with the Customer OrderCreate/Affiliate No 1 Text Attribute Affiliate Category @Category (50 chars max) OrderCreate/BillingStatus No 1 Text Node (16 Billing Status (Unbilled, Authorized, Billed, chars max) Billed-Partial, Paid, Paid-Partial) • Ignored if Mode="Add" or "Pending" • Required if Mode="Import" OrderCreate/OrderDate No 1 Container Order Date • Ignored if Mode="Add" or "Pending" • Required if Mode="Import" OrderCreate/OrderDate/Da Yes* 1 Container teTime OrderCreate/OrderDate/Da Yes* 1 Date Node Order Date teTime/Date (mm/dd/yyyy) OrderCreate/OrderDate/Da Yes* 1 Time Node Order Time (default value: 00:00) teTime/Time (hh:mm) OrderCreate/Integration No 1 Container See External Mapping for more information AllowNonPreferredCreditC No 1 Empty Node Indicates that the OrderCreate Request should ard proceed if there is at least one Saved Credit Card on file in the OMS with a valid expiration date AllowInventoryUpdate No 1 Empty Node By default any orders that are imported (Mode="Import") will not adjust the Product Quantity inventory level in the OMS. Include this node during an order import to adjust the product inventory level • Ignored if Mode="Add" or "Pending" ForceProceed No 1 Empty Node Indicates that the OrderCreate Request should proceed even if one or more requested OrderCreate nodes is invalid SendConfirmationEmail No 1 Empty Node By default any orders that are imported (Mode="Import") will not send order or shipment confirmation email. Include this node during an order import to send order and shipment confirmation email • Ignored if Mode is not "Import" Strict No 1 Empty Node Indicates the OrderCreate Request will be processed in strict accordance with all existing settings from the OMS

OrderCreateReply Schema Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) char max) Order Yes 1 - 15 Container Order @No Yes 1 Integer Order Number assigned by the OMS Attribute

85 Element Xpath Always Occurs Type Description Order/OrderStatus Yes 1 Text Node (20 Order Status chars max) • Product Orders: Unshipped, In Process, Shipped, Pending, Backordered, Preordered, Return-Ship Agent, Return-Customer, Shipped- Partial, or Other-See Line Items • Gift Certificate Orders: Unsent, Sent, Sent- Partial, or Other-See Line Items Order/BillingStatus Yes 1 Text Node (14 Billing Status chars max) • Unbilled, Authorized, Billed, Billed-Partial, or Paid Order/CustomerNo Yes 1 Integer Node Nexternal Customer Number

Order/Warning No 1 + Text Node Included if an Add or Import directive overrides an existing Customer or Product setting in the OMS

OrderCreateRequest Example: Mode="Add"

fairway xmlbob XMLDem0Pwd demo @demo.com CreditCard Visa 4111111111111111 08/2018 Caddyshack DVD 1

OrderCreateRequest Example: Mode="Import"

86 fairway Nk5\#/K#0:{!C:SfqVs0 ssmith @somewhere.com digby name of your pet Consumer

Susan Smith 123 Main St. San Diego CA 92107 US 123-123-1234
CreditCard Discover 6011111111111117 06/2006
Susan Smith 123 Main St. San Diego CA 92107 US 123-123-1234
FedEx Home Delivery

87 Caddyshack DVD 1 Shipped 01/03/2006 Paid 01/02/2006

OrderCreateReply Example

Unshipped Authorized 3

88 9: CustomerQuery

The CustomerQuery is used to query customer data, thus "exporting" customers from the OMS so that they may be "imported" into an external system.

You may submit a query based on Customer Address, Customer Email address, Customer Number Range, Customer Created Range, Customer Last Updated Range, Order Number Range, Order Date Range, or Ship/Send Date Range (but not more than one; the order- based queries refer to the customers who placed the orders). For ranges you may specify a Range Start, Range End, or both. Specifying only a Range Start has the meaning of "greater than or equal to", while only a Range End has the meaning of "less than or equal to". For example, a query based on only a Customer Number Range Start of 100 queries Customer Numbers 100 and greater.

In the case of a Customer Created Range, Customer Last Updated Range, or Order Date Range, you may specify a Start and/or End Date, and optionally a Time. If you do not specify a Time, a default value of 00:00 (i.e. 12:00 AM) is used. If you wish to specify the end of the day (particularly for a Range End), you must use a Time value of 23:59.

In the case of a Ship/Send Date Range, only customers who have placed orders in the queried range with an Order Status of Shipped (for product orders) or Sent (for gift certificate orders) are returned. Other customers are necessarily excluded from the query.

The CustomerQuery gives you the option, via the IncludePasswords node in the CustomerQueryRequest, of including Customer Passwords in the query. This can be useful if you need to integrate login information with an external system. If you choose to include Customer Passwords, you are responsible for taking the precautions that customers expect with such sensitive information.

A single CustomerQueryRequest returns no more than 15 Customer nodes in the corresponding CustomerQueryReply, even if the requested query includes more than 15 resulting customers. The presence of a NextPage node in the CustomerQueryReply indicates that a subsequent "page" of results exists. You may then use the Page node in the CustomerQueryRequest to iteratively request all orders in the query. Customers are always returned in the CustomerQueryReply in ascending order of Customer Name (Last Name, then First Name).

Note: If the Page node in the CustomerQueryRequest contains a page number greater than the maximum page number in the query results, the maximum page number is returned.

CurrentStatus Node

The CurrentStatus node in the CustomerQueryRequest gives you the option of obtaining a simple status snapshot on a large number of customers. To do so, specify a query range (Customer Number Range, Customer Created Range, Customer Last Updated Range,

89 Order Number Range, Order Date Range, or Ship/Send Date Range) along with the CurrentStatus node. The CustomerQueryReply will return a single node per customer, containing the Customer Number, Customer Last Name, Customer First Name, Customer Email address, Customer Type, and Customer Status. The maximum CustomerQueryReply page size with the CurrentStatus node is 2000.

CustomerQueryRequest URL: https://www.nexternal.com/shared/xml/customerquery.rest

CustomerQueryRequest Schema Element Xpath Required Occurs Type Description Credentials Yes 1 Container Note that the supplied Credentials must contain the Client's XML Key or a UserName and Password, but not both Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/Key No 1 Text Node (20 Client's XML Key chars max) Credentials/UserName No 1 Text Node (50 XML Tools User Name chars max) • See Users / New Users / Access Level in the OMS for more information about the XML Tools Access Level Credentials/Password No 1 Text Node (50 XML Tools User Password chars max) CustomerNoRange No 1 Container For query by Customer Number Range CustomerNoRange/Custom No 1 Integer Node Customer Number Range Start erNoStart CustomerNoRange/Custom No 1 Integer Node Customer Number Range End erNoEnd CustomerCreatedRange No 1 Container For query by Customer Created Range CustomerCreatedRange/Cu No 1 Container stomerCreatedStart CustomerCreatedRange/Cu Yes* 1 Container stomerCreatedStart/DateTi me CustomerCreatedRange/Cu Yes* 1 Date Node Created Date Range Start stomerCreatedStart/DateTi (mm/dd/yyyy) me/Date CustomerCreatedRange/Cu No 1 Time Node Created Date Range Start Time (default value: stomerCreatedStart/DateTi (hh:mm) 00:00) me/Time CustomerCreatedRange/Cu No 1 Container stomerCreatedEnd CustomerCreatedRange/Cu Yes* 1 Container stomerCreatedEnd/DateTi me CustomerCreatedRange/Cu Yes* 1 Date Node Created Date Range End stomerCreatedEnd/DateTi (mm/dd/yyyy) me/Date CustomerCreatedRange/Cu No 1 Time Node Created Date Range End Time (default value: stomerCreatedEnd/DateTi (hh:mm) 00:00) me/Time

90 Element Xpath Required Occurs Type Description CustomerUpdRange No 1 Container For query by Customer Last Updated Range CustomerUpdRange/Custo No 1 Container merUpdStart CustomerUpdRange/Custo Yes* 1 Container merUpdStart/DateTime CustomerUpdRange/Custo Yes* 1 Date Node Last Updated Date Range Start merUpdStart/DateTime/Da (mm/dd/yyyy) te CustomerUpdRange/Custo No 1 Time Node Last Updated Date Range Start Time (default merUpdStart/DateTime/Ti (hh:mm) value: 00:00) me CustomerUpdRange/Custo No 1 Container merUpdEnd CustomerUpdRange/Custo Yes* 1 Container merUpdEnd/DateTime CustomerUpdRange/Custo Yes* 1 Date Node Last Updated Date Range End merUpdEnd/DateTime/Dat (mm/dd/yyyy) e CustomerUpdRange/Custo No 1 Time Node Last Updated Date Range End Time (default merUpdEnd/DateTime/Tim (hh:mm) value: 00:00) e OrderNoRange No 1 Container For query by Order Number Range OrderNoRange/OrderNoSt No 1 Integer Node Order Number Range Start art OrderNoRange/OrderNoEn No 1 Integer Node Order Number Range End d OrderDateRange No 1 Container For query by Order Date Range OrderDateRange/OrderDat No 1 Container eStart OrderDateRange/OrderDat Yes* 1 Container eStart/DateTime OrderDateRange/OrderDat Yes* 1 Date Node Order Date Range Start eStart/DateTime/Date (mm/dd/yyyy) OrderDateRange/OrderDat No 1 Time Node Order Date Range Start Time (default value: eStart/DateTime/Time (hh:mm) 00:00) OrderDateRange/OrderDat No 1 Container eEnd OrderDateRange/OrderDat Yes* 1 Container eEnd/DateTime OrderDateRange/OrderDat Yes* 1 Date Node Order Date Range End eEnd/DateTime/Date (mm/dd/yyyy) OrderDateRange/OrderDat No 1 Time Node Order Date Range End Time (default value: eEnd/DateTime/Time (hh:mm) 00:00) ShipDateRange No 1 Container For query by Ship/Send Date Range ShipDateRange/ShipDateSt No 1 Container art ShipDateRange/ShipDateSt Yes* 1 Container art/DateTime ShipDateRange/ShipDateSt Yes* 1 Date Node Ship/Send Date Range Start art/DateTime/Date (mm/dd/yyyy) ShipDateRange/ShipDateE No 1 Container nd

91 Element Xpath Required Occurs Type Description ShipDateRange/ShipDateE Yes* 1 Container nd/DateTime ShipDateRange/ShipDateE Yes* 1 Date Node Ship/Send Date Range End nd/DateTime/Date (mm/dd/yyyy) CustomerAddress No 1 Container Used to query for a partial or complete Customer Contact Address CustomerAddress/Name No 1 Container CustomerAddress/Name/Fi No 1 Text Node (50 Customer Contact First Name rstName chars max) CustomerAddress/Name/L No 1 Text Node (50 Customer Contact Last Name astName chars max) CustomerAddress/Compan No 1 Text Node Customer Contact Company Name yName (100 chars • Usage of the Company Name field is set at max) Customers/Types in the OMS CustomerAddress/StreetAd No 1 Text Node Customer Contact Street Address 1 dress1 (100 chars max) CustomerAddress/StreetAd No 1 Text Node Customer Contact Street Address 2 dress2 (100 chars max) CustomerAddress/City No 1 Text Node (50 Customer Contact City chars max) CustomerAddress/StatePro No 1 Text Node (2 Customer Contact State/Province Code vCode chars max) CustomerAddress/ZipPosta No 1 Text Node (20 Customer Contact Zip/Postal Code lCode chars max) CustomerAddress/Country No 1 Text Node (2 Customer Contact Country Code Code chars max) CustomerAddress/PhoneN No 1 Text Node (50 Customer Contact Phone Number umber chars max) IsTrustee No 1 Empty Node Used to query for Customers that are Trustees • Applicable only if Pickup Trustee Preferences is in use (Customers/Preferences in the OMS) HasTrustee No 1 Empty Node Used to query for Customers that have a Trustee • Applicable only if Pickup Trustee Preferences is in use (Customers/Preferences in the OMS) Trustee No 1 Container Used to query for a specific Trustee • Must contain a Trustee Customer ID, a Trustee Email Address, or a Trustee Name • Applicable only if Pickup Trustee Preferences is in use (Customers/Preferences in the OMS) Trustee/CustomerID No 1 Integer Node Trustee Customer Number

Trustee/Email No 1 Text Node Trustee Email Address

Trustee/Name No 1 Container Trustee/Name/FirstName Yes* 1 Text Node (50 Trustee First Name chars max) Trustee/Name/LastName Yes* 1 Text Node (50 Trustee Last Name chars max) CustomerEmail No 1 Text Node Used to query for a partial or complete Customer Contact Email address

92 Element Xpath Required Occurs Type Description CreatedByNote No 1 Text Node (25 Used to query by Created By Note chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Customers LastUpdByNote No 1 Text Node (25 Used to query by Last Updated By Note chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Customers IncludePasswords No 1 Empty Node Indicates that Customer Passwords should be included in the CustomerQueryReply IncludeActivities No 1 Empty Node Indicates that Customer Activities should be included in the CustomerQueryReply IncludeOrderCount No 1 Empty Node Indicates that Customer Order Count should be included in the CustomerQueryReply Integration No 1 Container See External Mapping for more information CurrentStatus No 1 Empty Node Used to return the Customer Status (Active or Inactive) of all Customers that fall within the specified range • Allowed only when this node is combined with CustomerNoRange, CustomerCreatedRange, CustomerUpdRange, OrderNoRange, OrderDateRange, or ShipDateRange Page No 1 Integer Node Requested page number of query results (default value: 1)

CustomerQueryReply Schema (without CurrentStatus node) Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) @Page Yes 1 Integer Page number of query results Attribute Customer Yes 1 - 15 Container Customer/CustomerNo Yes 1 Integer Node Customer Number Customer/Email Yes 1 Text Node (50 Customer E-Mail Address chars max) Customer/Address Yes 1 Container For Customer Contact Address Customer/Address @Type Yes 1 Text Attribute Customer Contact Address Type (Residential or (11 chars max) Business) Customer/Address @ID Yes 1 Integer Customer Address Book ID Attribute Customer/Address @Label No 1 Text Attribute Customer Contact Address Label (25 chars max) Customer/Address/Name Yes 1 Container Customer/Address/Name/F Yes 1 Text Node (50 Customer First Name irstName chars max) Customer/Address/Name/L Yes 1 Text Node (50 Customer Last Name astName chars max) Customer/Address/Compan No 1 Text Node Customer Contact Company Name yName (100 chars • Usage of the Company Name field is set at max) Customers/Types in the OMS Customer/Address/StreetA Yes 1 Text Node Customer Contact Street Address (Line 1) ddress1 (100 chars max)

93 Element Xpath Always Occurs Type Description Customer/Address/StreetA No 1 Text Node Customer Contact Street Address (Line 2) ddress2 (100 chars max) Customer/Address/City Yes 1 Text Node (50 Customer Contact City chars max) Customer/Address/StatePro No 1 Text Node (2 Customer Contact State/Province Code vCode chars max) Customer/Address/ZipPost Yes 1 Text Node (20 Customer Contact Zip/Postal Code alCode chars max) Customer/Address/Country Yes 1 Text Node (2 Customer Contact Country Code Code chars max) Customer/Address/PhoneN Yes 1 Text Node (50 Customer Contact Phone Number umber chars max) Customer/Address/PhoneE No 1 Text Node (30 Customer Contact Phone Extension xt chars max) Customer/Address/Primary No 1 Empty Node Indicates Primary Shipping Address Ship Customer/Address/Primary No 1 Empty Node Indicates Primary Billing Address Bill Customer/Address/Invalid No 1 Empty Node Indicates Customer Contact Address has been Address flagged as invalid by UPS Address Validation Customer/CustomField1 No 1 Text/Integer/N Customer Custom Field #1 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Customer/CustomField1 Yes* 1 Text Attribute Customer Custom Field #1 Name @Name (50 chars max) Customer/CustomField1 Yes* 1 Text Attribute Customer Custom Field #1 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Customer/CustomField2 No 1 Text/Integer/N Customer Custom Field #2 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Customer/CustomField2 Yes* 1 Text Attribute Customer Custom Field #2 Name @Name (50 chars max) Customer/CustomField2 Yes* 1 Text Attribute Customer Custom Field #2 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Customer/CustomField3 No 1 Text/Integer/N Customer Custom Field #3 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Customer/CustomField3 Yes* 1 Text Attribute Customer Custom Field #3 Name @Name (50 chars max) Customer/CustomField3 Yes* 1 Text Attribute Customer Custom Field #3 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Customer/CustomField4 No 1 Text/Integer/N Customer Custom Field #4 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Customer/CustomField4 Yes* 1 Text Attribute Customer Custom Field #4 Name @Name (50 chars max)

94 Element Xpath Always Occurs Type Description Customer/CustomField4 Yes* 1 Text Attribute Customer Custom Field #4 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Customer/CustomField5 No 1 Text/Integer/N Customer Custom Field #5 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Customer/CustomField5 Yes* 1 Text Attribute Customer Custom Field #5 Name @Name (50 chars max) Customer/CustomField5 Yes* 1 Text Attribute Customer Custom Field #5 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Customer/CustomField6 No 1 Text/Integer/N Customer Custom Field #6 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field Customer/CustomField6 Yes* 1 Text Attribute Customer Custom Field #6 Name @Name (50 chars max) Customer/CustomField6 Yes* 1 Text Attribute Customer Custom Field #6 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Customer/CustomerDiscou Yes 1 Percent Node Customer Discount Percent nt Customer/LoyaltyDiscount No 1 Currency Customer Loyalty Discount Available Amount Node Customer/LoyaltyDiscount Yes* 1 Currency Customer Loyalty Points Available @Points Attribute Customer/CustomerType Yes 1 Text Node (20 Customer Type chars max) Customer/AgeVerification No 1 Container For Age Verification Results Customer/AgeVerification/ Yes* 1 Text Node (6 Age Verification Flag (Green, Yellow, or Red) VerificationFlag chars max) Customer/AgeVerify/Verifi No 1 Text Node Age Verification Notes cationNotes Customer/Trustee No 1 Container For customers assigned aTtrustee • Applicable only if Pickup Trustee Preferences is in use (Customers/Preferences in the OMS) Customer/Trustee/Custome Yes* 1 Integer Node Trustee Customer Number rID Customer/Trustee/Email Yes* 1 Text Node Trustee Email Address

Customer/Trustee/Name Yes* 1 Container Customer/Trustee/Name/Fi Yes* 1 Text Node (50 Trustee First Name rstName chars max) Customer/Trustee/Name/L Yes* 1 Text Node (50 Trustee Last Name astName chars max) Customer/CustomerPasswo No 1 Text Node (30 Customer Password rd chars max) • Included only if the IncludePasswords node is present in the CustomerQueryRequest, and the customer has a Password Customer/CustomerPasswo No 1 Text Node Customer Password Reminder rdReminder (100 chars • Included only if the IncludePasswords node is max) present in the CustomerQueryRequest, and the customer has a Password

95 Element Xpath Always Occurs Type Description Customer/Affiliate No 1 Container Customer/Affiliate/Affiliat No 1 Text Node Affiliate Category eCategory (100 chars max) Customer/Affiliate/Affiliat Yes* 1 Text Node Affiliate Name eName (100 chars max) Customer/Active No 1 Empty Node Indicates Customer is Active Customer/MailingList No 1 Empty Node Indicates Customer in on Mailing List Customer/IsTrustee No 1 Empty Node Indicates Customer is a Trustee • Applicable only if Pickup Trustee Preferences is in use (Customers/Preferences in the OMS) Customer/Owner No 1 Container For customers assigned an owner Customer/Owner/Name Yes* 1 Container Customer/Owner/Name/Fir Yes* 1 Text Node (50 Owner First Name stName chars max) Customer/Owner/Name/La Yes* 1 Text Node (50 Owner Last Name stName chars max) Customer/FollowUpDate No 1 Container For customers assigned a follow-up date Customer/ Yes* 1 Container FollowUpDate /DateTime Customer/ Yes* 1 Date Node Follow-up Date FollowUpDate (mm/dd/yyyy) /DateTime/Date Customer/Comments No 1 Text Node Notes/Comments Customer/OrderCount No 1 Container Included only if the IncludeOrderCount node is present in the CustomerQueryRequest Customer/OrderCount/Cou Yes* 1 Integer Node Number of orders the customer has placed nt Customer/OrderCount/First No 1 Date Node Date of the customer's first order OrderDate (mm/dd/yyyy) • Included only if OrderCount/Count is greater than zero Customer/AdditionalAddre No 1 Container For Additional Addresses sses Customer/AdditionalAddre Yes* 1 + Container sses/Address Customer/AdditionalAddre Yes* 1 Text Attribute Additional Address Type (Residential or sses/Address @Type (11 chars max) Business) Customer/AdditionalAddre Yes* 1 Integer Additional Address ID sses/Address @ID Attribute Customer/AdditionalAddre No 1 Text Attribute Additional Address Label sses/Address @Label (25 chars max) Customer/AdditionalAddre Yes* 1 Container sses/Address/Name Customer/AdditionalAddre Yes* 1 Text Node (50 Additional Address First Name sses/Address/Name/FirstNa chars max) me Customer/AdditionalAddre Yes* 1 Text Node (50 Additional Address Last Name sses/Address/Name/LastNa chars max) me Customer/AdditionalAddre No 1 Text Node Additional Address Company Name sses/Address/CompanyNa (100 chars • Usage of the Company Name field is set at me max) Customers/Types in the OMS

96 Element Xpath Always Occurs Type Description Customer/AdditionalAddre Yes* 1 Text Node Additional Address Street Address (Line 1) sses/Address/StreetAddress (100 chars 1 max) Customer/AdditionalAddre No 1 Text Node Additional Address Street Address (Line 2) sses/Address/StreetAddress (100 chars 2 max) Customer/AdditionalAddre Yes* 1 Text Node (50 Additional Address City sses/Address/City chars max) Customer/AdditionalAddre No 1 Text Node (2 Additional Address State/Province Code sses/Address/StateProvCod chars max) e Customer/AdditionalAddre Yes* 1 Text Node (20 Additional Address Zip/Postal Code sses/Address/ZipPostalCod chars max) e Customer/AdditionalAddre Yes* 1 Text Node (2 Additional Address Country Code sses/Address/CountryCode chars max) Customer/AdditionalAddre Yes* 1 Text Node (50 Additional Address Phone Number sses/Address/PhoneNumbe chars max) r Customer/AdditionalAddre No 1 Text Node (30 Additional Address Phone Extension sses/Address/PhoneExt chars max) Customer/AdditionalAddre No 1 Empty Node Indicates Primary Shipping Address sses/Address/PrimaryShip Customer/AdditionalAddre No 1 Empty Node Indicates Primary Billing Address sses/Address/PrimaryBill Customer/AdditionalAddre No 1 Empty Node Indicates Additional Address has been flagged as sses/Address/InvalidAddre invalid by UPS Address Validation ss Customer/SavedCreditCard No 1 Container For Saved Credit Cards s Customer/SavedCreditCard Yes* 1 + Container s/CreditCard Customer/SavedCreditCard Yes* 1 Text Node (16 Credit Card Type (Visa, MasterCard, American s/CreditCard/CreditCardTy chars max) Express, Diners Club, Discover, enRoute, or JCB) pe Customer/SavedCreditCard Yes* 1 Text Node (16 Credit Card Number s/CreditCard/CreditCardNu chars max) •Entire number included only if the Full CC mber Access option (Settings/Site Options in the OMS) is on Customer/SavedCreditCard Yes* 1 Date Node Credit Card Expiration Date s/CreditCard/CreditCardEx (mm/yyyy) pDate Customer/SavedCreditCard No 1 Empty Node Indicates Preferred Credit Card s/CreditCard/PreferredCred itCard Customer/Activities No 1 Container Included only if the IncludeActivities node is present in the CustomerQueryRequest and the customer has Activities Customer/Activities/Activit No 1 + Container y Customer/Activities/Activit No 1 Container y/Timestamp Customer/Activities/Activit Yes* 1 Container y/Timestamp/DateTime

97 Element Xpath Always Occurs Type Description Customer/Activities/Activit Yes* 1 Date Node Activity Date (default value: today's date) y/Timestamp/DateTime/Da (mm/dd/yyyy) te Customer/Activities/Activit No 1 Time Node Activity Time (default value: 00:00) y/Timestamp/DateTime/Ti (hh:mm) me Customer/Activities/Activit No 1 Container The Name of the User associated with this y/User Activity (see Users in the OMS) Customer/Activities/Activit Yes* 1 Container y/User/Name Customer/Activities/Activit Yes* 1 Text Node (50 User First Name y/User/Name/FirstName chars max) Customer/Activities/Activit Yes* 1 Text Node (50 User Last Name y/User/Name/LastName chars max) Customer/Activities/Activit Yes* 1 Text Node Activity Types and their list order are defined in y/Type Customers/Types in the OMS Customer/Activities/Activit Yes* 1 Text Node Activity Description y/Description Customer/Created Yes 1 Container Customer/Created/DateTim Yes 1 Container e Customer/Created/DateTim Yes 1 Date Node Customer Created Date e/Date (mm/dd/yyyy) Customer/Created/DateTim Yes 1 Time Node Customer Created Time e/Time (hh:mm) Customer/CreatedBy No 1 Container For customers created by OMS User Customer/CreatedBy/Name Yes* 1 Container Customer/CreatedBy/Name Yes* 1 Text Node (50 Created By First Name /FirstName chars max) Customer/CreatedBy/Name Yes* 1 Text Node (50 Created By Last Name /LastName chars max) Customer/CreatedBy/Creat No 1 Text Node (25 Created By Note edByNote chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Customers Customer/LastUpd Yes 1 Container Customer/LastUpd/DateTi Yes 1 Container me Customer/LastUpd/DateTi Yes 1 Date Node Last Updated Date me/Date (mm/dd/yyyy) Customer/LastUpd/DateTi Yes 1 Time Node Last Updated Time me/Time (hh:mm) Customer/LastUpdBy No 1 Container For customers last updated by OMS User Customer/LastUpdBy/Nam No 1 Container e Customer/LastUpdBy/Nam Yes* 1 Text Node (50 Last Updated By First Name e/FirstName chars max) Customer/LastUpdBy/Nam Yes* 1 Text Node (50 Last Updated By Last Name e/LastName chars max) Customer/LastUpdBy/Last No 1 Text Node (25 Last Updated By Note UpdByNote chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Customers

98 Element Xpath Always Occurs Type Description NextPage No 1 Empty Node Indicates the existence of a subsequent page of customers

CustomerQueryRequest Example (without CurrentStatus node)

fairway Nk5\#/K#0:{!C:SfqVs0 1 1 1

CustomerQueryReply Example (without CurrentStatus node)

1 ookoshi @bellsouth.net

Roy McKutchen 567 Shaker Lane New Canaan CT 06840 US 517-453-2432
07/27/1975 5 Consumer
Roy McKutchen Nexternal Solutions 199 Elm St New Canaan CT

99 06840 US 203-972-5726 204

Visa xxxxxxxxxxxx1111 04/2008 09/22/2000 07/18/2005 Demonstration User

CustomerQueryReply Schema (with CurrentStatus node) Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) @Page Yes 1 Integer Page number of query results Attribute CurrentStatus No 1 Container Current Status of Customers that fall within the specified query range • Included only if a query range is specified and the CurrentStatus node is present in the CustomerQueryRequest CurrentStatus/Customer Yes 1 - Text Node Customer Status (Active, Inactive, or Not Found) 2000 CurrentStatus/Customer Yes 1 Integer Customer Number @No Attribute CurrentStatus/Customer Yes 1 Text Attribute Customer Last Name @LastName CurrentStatus/Customer Yes 1 Text Attribute Customer First Name @FirstName

100 Element Xpath Always Occurs Type Description CurrentStatus/Customer Yes 1 Text Attribute Customer Email Address @Email CurrentStatus/Customer Yes 1 Text Attribute Customer Type (as defined in the OMS) @CustomerType NextPage No 1 Empty Node Indicates the existence of a subsequent page of customers

CustomerQueryRequest Example (with CurrentStatus node)

fairway Nk5\#/K#0:{!C:SfqVs0 12/01/2000 12/15/2000

CustomerQueryReply Example (with CurrentStatus node)

Active Active Active Active Active Active Active Active Active

101 Active Active Active Active Active Active Active

102 10: CustomerUpdate

The CustomerUpdate is used to add or update customer information in the OMS. This allows you to "import" existing customer data, including saved credit cards, mailing and shipping addresses, and other relevant customer information from an external system.

When updating existing customer information, customers may be identified by their Full Name, E-Mail Address, or Customer Number in the CustomerUpdateRequest. You can add or update Customer Contact information via the Address container, Additional Addresses via the AdditionalAddresses container, and Credit Cards through the SavedCreditCards container. You may also add Customer Activities via the Activities container. For existing customers you can selectively clear (erase) Password, Saved Credit Cards, Additional Addresses, Follow Up Date, Affiliate, Company Comments, Active, Mailing List, Customer Type, and AgeVerification via the Erase container.

If UPS Address Validation is enabled (Settings/Compatible Software/Online Shipping Tools in the OMS), all US addresses are checked for validity. If the Allow Invalid Addresses option (Settings/Compatible Software/Online Shipping Tools/Preferences) is off, an ErrorMessage node is returned, and the customer address is not added or updated.

The CustomerUpdateRequest may not be used to delete customers or Customer Activities.

For each successful add and/or update the CustomerUpdateReply will return a Customer container with the Customer Number, Customer Name, and E-Mail Address, and a Status container outlining the general operations that were performed (number of AdditionalAddresses processed, number of SavedCreditCards processed, etc.).

The ForceProceed node in the CustomerUpdateRequest forces the tool to proceed with valid customer updates even if there is invalid update request. In such a scenario the corresponding Customer container for the invalid request(s) in the CustomerUpdateReply will contain the Error XML elements specified in Chapter 15 (Errors) in lieu of the elements specified in the CustomerUpdateReply schema. If the ForceProceed node is not included in the CustomerUpdateRequest any invalid Customer container will result in the failure of all subsequent Customer container(s) in the request.

A single CustomerUpdateRequest may contain no more than 15 Customer containers. If you wish to update more than 15 customers you must do so in an iterative manner.

CustomerUpdateRequest URL: https://www.nexternal.com/shared/xml/customerupdate.rest

CustomerUpdateRequest Schema

103 Element Xpath Required Occurs Type Description Credentials Yes 1 Container Note that the supplied Credentials must contain the Client's XML Key, or a UserName and Password, but not both Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/Key No 1 Text Node (20 Client's XML Key chars max) Credentials/UserName No 1 Text Node (50 XML Tools User Name chars max) • See Users / New Users / Access Level in the OMS for more information about the XML Tools Access Level Credentials/Password No 1 Text Node (50 XML Tools User Password chars max) Customer Yes 1 - 15 Container Customer @Mode Yes 1 Text Attribute Update Mode (Add or Update) (6 chars max) Customer @MatchingField No 1 Text Attribute Indicates which node in the query will be used to (10 chars max) match an existing customer (CustomerNo, Name, or Email) • Optional if Mode="Add"; if this field is included and a customer match is found, the existing customer is used, and Mode switches to Update • Required if Mode="Update" Customer/CustomerNo No 1 Integer Node Customer Number (for matching purposes) • Required if MatchingField="CustomerNo" • If Mode="Add" and a customer match is found, the Mode will be changed to "Update"

104 Element Xpath Required Occurs Type Description Customer/Name No 1 Container Customer Name (for matching purposes) • Required if MatchingField="Name" • If Mode="Add" and a customer match is found, the Mode will be changed to "Update" Customer/Name/FirstName Yes* 1 Text Node (50 Customer First Name chars max) Customer/Name/LastName Yes* 1 Text Node (50 Customer Last Name chars max) Customer/Email No 1 Text Node (50 Customer E-Mail Address (for matching chars max) purposes) • Required if MatchingField="Email" • If Mode="Add" and a customer match is found, the Mode will be changed to "Update" Customer/Address No 1 Container Customer Contact Address • Required if Mode="Add" Customer/Address @Type Yes* 1 Text Attribute Customer Contact Address Type (Residential or (11 chars max) Business) Customer/Address @Label No 1 Text Attribute Customer Contact Address Label (25 chars max) Customer/Address/Name No 1 Container May be omitted if Customer/Name node exists, and you wish to use those values Customer/Address/Name/F Yes* 1 Text Node (50 Customer Contact First Name irstName chars max) Customer/Address/Name/L Yes* 1 Text Node (50 Customer Contact Last Name astName chars max) Customer/Address/Compan No 1 Text Node Customer Contact Company Name yName (100 chars • Usage of the Company Name field is set at max) Customers/Types in the OMS Customer/Address/StreetA Yes* 1 Text Node Customer Contact Street Address (Line 1) ddress1 (100 chars max) Customer/Address/StreetA No 1 Text Node Customer Contact Street Address (Line 2) ddress2 (100 chars max) Customer/Address/City Yes* 1 Text Node (50 Customer Contact City chars max) Customer/Address/StatePro Yes* 1 Text Node (2 Customer Contact State/Province Code vCode chars max) Customer/Address/ZipPost Yes* 1 Text Node (20 Customer Contact Zip/Postal Code alCode chars max) Customer/Address/Country Yes* 1 Text Node (2 Customer Contact Country Code Code chars max) Customer/Address/PhoneN Yes* 1 Text Node (50 Customer Contact Phone Number umber chars max) Customer/Address/PhoneE No 1 Text Node (30 Customer Contact Phone Extension xt chars max) Customer/Address/Primary No 1 Empty Node Indicates Primary Shipping Address Ship Customer/Address/Primary No 1 Empty Node Indicates Primary Billing Address Bill

105 Element Xpath Required Occurs Type Description Customer/CustomField1 No 1 Text/Integer/N Customer Custom Field #1 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Customer/CustomField1 Yes* 1 Text Attribute Customer Custom Field #1 Type (Text, Positive @Type (50 chars max) Number, Positive Integer, Currency, Date, Yes/No) Customer/CustomField2 No 1 Text/Integer/N Customer Custom Field #2 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Customer/CustomField2 Yes* 1 Text Attribute Customer Custom Field #2 Type (Text, Positive @Type (50 chars max) Number, Positive Integer, Currency, Date, or Yes/No) Customer/CustomField3 No 1 Text/Integer/N Customer Custom Field #3 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Customer/CustomField3 Yes* 1 Text Attribute Customer Custom Field #3 Type (Text, Positive @Type (50 chars max) Number, Positive Integer, Currency, Date, or Yes/No) Customer/CustomField4 No 1 Text/Integer/N Customer Custom Field #4 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Customer/CustomField4 Yes* 1 Text Attribute Customer Custom Field #4 Type (Text, Positive @Type (50 chars max) Number, Positive Integer, Currency, Date, or Yes/No) Customer/CustomField5 No 1 Text/Integer/N Customer Custom Field #5 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Customer/CustomField5 Yes* 1 Text Attribute Customer Custom Field #5 Type (Text, Positive @Type (50 chars max) Number, Positive Integer, Currency, Date, or Yes/No) Customer/CustomField6 No 1 Text/Integer/N Customer Custom Field #6 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Customer/CustomField6 Yes* 1 Text Attribute Customer Custom Field #6 Type (Text, Positive @Type (50 chars max) Number, Positive Integer, Currency, Date, or Yes/No) Customer/CustomerPasswo No 1 Container rd Customer/CustomerPasswo No 1 Text Node (50 Customer Password rd/Password chars max) • If Mode="Add", password may be auto- generated, based on the XML Passwords field (Customers/Password Preferences in the OMS) Customer/CustomerPasswo No 1 Text Node Customer Password Reminder rd/PasswordReminder (100 chars max) Customer/CustomerType No 1 Text Node (20 Customer Type (default is defined at chars max) Customers/Types in the OMS)

106 Element Xpath Required Occurs Type Description Customer/CustomerDiscou No 1 Percent Node Customer Discount Percent nt • Applicable only if Customer Discount is not defined by Customer Type (Customers/Types in the OMS) • Default value is 0% Customer/Owner No 1 Container Customer/Owner/Name Yes* 1 Container Customer’s Owner (OMS User) Customer/Owner/Name/Fir Yes* 1 Text Node (50 Owner First Name stName chars max) Customer/OwnerName/Las Yes* 1 Text Node (50 Owner Last Name tName chars max) Customer/FollowUpDate No 1 Container Customer/ Yes* 1 Container FollowUpDate /DateTime Customer/ Yes* 1 Date Node Follow-up Date FollowUpDate (mm/dd/yyyy) /DateTime/Date Customer/Affiliate No 1 Text Node Affiliate Name (100 chars max) Customer/Affiliate No 1 Text Node Affiliate Category @Category (100 chars max) Customer/CompanyComm No 1 Text Node Internal Notes/Comments ents Customer/AgeVerification No 1 Container Applicable only if the Age Verification tool is in use (Settings/Compatible Software in the OMS) Customer/AgeVerification/ Yes* 1 Text Node (6 Age Verification Flag (Green, Yellow, or Red) VerificationFlag chars max) Customer/Trustee No 1 Container Applicable only if Pickup Trustee Preferences is in use (Customers/Preferences in the OMS) • Must contain either the Trustee CustomerID or the Trustee Email address Customer/Trustee/Custome No 1 Integer Node Trustee Customer Number rID Customer/Trustee/Email No 1 Text Node Trustee Email Address

Customer/AdditionalAddre No 1 Container sses Customer/AdditionalAddre Yes* 1 + Container sses/Address Customer/AdditionalAddre Yes* 1 Text Attribute Additional Address Type (Residential or sses/Address @Type (11 chars max) Business) Customer/AdditionalAddre No 1 Text Attribute Additional Address Label sses/Address @Label (25 chars max) Customer/AdditionalAddre No 1 Container May be omitted if Customer/Name node exists, sses/Address/Name and you wish to use those values Customer/AdditionalAddre Yes* 1 Text Node (50 Additional Address First Name sses/Address/Name/FirstNa chars max) me Customer/AdditionalAddre Yes* 1 Text Node (50 Additional Address Last Name sses/Address/Name/LastNa chars max) me

107 Element Xpath Required Occurs Type Description Customer/AdditionalAddre No 1 Text Node Additional Address Company Name ss/Address/CompanyName (100 chars • Usage of the Company Name field is set at max) Customers/Types in the OMS Customer/AdditionalAddre Yes* 1 Text Node Additional Address Street Address (Line 1) sses/Address/StreetAddress (100 chars 1 max) Customer/AdditionalAddre No 1 Text Node Additional Address Street Address (Line 2) sses/Address/StreetAddress (100 chars 2 max) Customer/AdditionalAddre Yes* 1 Text Node (50 Additional Address City sses/Address/City chars max) Customer/AdditionalAddre Yes* 1 Text Node (2 Additional Address State/Province Code sses/Address/StateProvCod chars max) e Customer/AdditionalAddre Yes* 1 Text Node (20 Additional Address Zip/Postal Code sses/Address/ZipPostalCod chars max) e Customer/AdditionalAddre Yes* 1 Text Node (2 Additional Address Country Code sses/Address/CountryCode chars max) Customer/AdditionalAddre Yes* 1 Text Node (50 Additional Address Phone Number sses/Address/PhoneNumbe chars max) r Customer/AdditionalAddre No 1 Text Node (30 Additional Address Phone Extension sses/Address/PhoneExt chars max) Customer/AdditionalAddre No 1 Empty Node Indicates Primary Shipping Address sses/Address/PrimaryShip Customer/AdditionalAddre No 1 Empty Node Indicates Primary Billing Address sses/Address/PrimaryBill Customer/SavedCreditCard No 1 Container For Saved Credit Cards s • Usage of SavedCreditCards is set at Settings/Boolean Options/Allow Saved CC in the OMS Customer/SavedCreditCard Yes* 1 + Container s/CreditCard Customer/SavedCreditCard No 1 Text Node (16 Credit Card Type (Visa, MasterCard, American s/CreditCard/CreditCardTy chars max) Express, Diners Club, Discover, enRoute, or JCB) pe • The Credit Card Type is validated against the types allowed by Settings/Billing Options in the OMS • Required if Mode="Add" Customer/SavedCreditCard No 1 Text Node (16 Credit Card Number s/CreditCard/CreditCardNu chars max) • Required if Mode="Add" mber • If Mode="Update", you may use only the last 4 digits of the credit card number to match an existing Saved Credit Card Customer/SavedCreditCard Yes* 1 Date Node Credit Card Expiration Date s/CreditCard/CreditCardEx (mm/yyyy) pDate Customer/SavedCreditCard No 1 Empty Node Indicates Preferred Credit Card s/CreditCard/PreferredCred itCard Customer/Activities No 1 Container For adding new Activities only Customer/Activities/Activit No 1 + Container y

108 Element Xpath Required Occurs Type Description Customer/Activities/Activit No 1 Container y/Timestamp Customer/Activities/Activit Yes* 1 Container y/Timestamp/DateTime Customer/Activities/Activit Yes* 1 Date Node Activity Date (default value: today’s date) y/Timestamp/DateTime/Da (mm/dd/yyyy) te Customer/Activities/Activit No 1 Time Node Activity Time (default value: 00:00) y/Timestamp/DateTime/Ti (hh:mm) me Customer/Activities/Activit Yes* 1 Container OMS User associated with the Activity y/User Customer/Activities/Activit Yes* 1 Container y/User/Name Customer/Activities/Activit Yes* 1 Text Node (50 User First Name y/User/Name/FirstName chars max) Customer/Activities/Activit Yes* 1 Text Node (50 User Last Name y/User/Name/LastName chars max) Customer/Activities/Activit Yes* 1 Text Node Activity Types as defined at Customers/Types in y/Type the OMS Customer/Activities/Activit Yes* 1 Text Node Activity Description y/Comment Customer/Erase No 1 Container Used to clear / reset information for an existing customer record • Ignored if Mode="Add" Customer/Erase/Password No 1 Empty Node Clears any existing Customer Password and Customer Password Reminder Customer/Erase/SavedCred No 1 Empty Node Clears all existing Customer Credit Cards itCards • Usage of SavedCreditCards is set at Settings/Boolean Options/Allow Saved CC in the OMS Customer/Erase/Additional No 1 Empty Node Clears all existing Customer Additional Addresses Addresses Customer/Erase/FollowUp No 1 Empty Node Clears any existing Follow-Up Date Date Customer/Erase/Affiliate No 1 Empty Node Clears any existing Customer Affiliate Customer/Erase/Company No 1 Empty Node Clears any existing Notes/Comments Comments Customer/Erase/Active No 1 Empty Node Sets the customer record to Inactive Customer/Erase/MailingLis No 1 Empty Node Removes the customer from the Mailing List t Customer/Erase/AgeVerifi No 1 Empty Node Clears any existing customer Age Verification cation information • Usage of Age Verification is set at Settings/Compatible Software/Alcohol Beverage Tools/Preferences/IDology Customer/Erase/Customer No 1 Empty Node Sets the customer CustomerType to the default Type type assigned in the OMS • Default Customer Type is set at Customers/Types/Edit Customer & Activity Types Customer/Trustee No 1 Empty Node Clears all existing Trustee information • Applicable only if Pickup Trustee Preferences is in use (Customers/Preferences in the OMS)

109 Element Xpath Required Occurs Type Description Customer/Active No 1 Empty Node Sets the customer record to Active Customer/MailingList No 1 Empty Node Adds the customer to the Mailing List Customer/IsTrustee No 1 Empty Node Allows the Customer to be assigned as a Trustee Customer/Integration No 1 Container See External Mapping for more information AllowExpiredCreditCards No 1 Empty Node Indicates that the CustomerUpdate should proceed even if one or more requested Customer Containers contains an expired CreditCard ForceProceed No 1 Empty Node Indicates that the CustomerUpdate should proceed even if one or more requested Customer Containers contains invalid information

CustomerUpdateReply Schema Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) char max) Customer Yes 1 - 15 Container Customer @Mode Yes 1 Text Attribute Add or Update (6 chars max) Customer/CustomerNo Yes 1 Integer Node Customer Number from the OMS Customer/Name Yes 1 Container Customer/Name/FirstName Yes 1 Text Node (50 Customer First Name char max) Customer/Name/LastName Yes 1 Text Node (50 Customer Last Name char max) Customer/Email Yes 1 Text Node (50 Customer E-Mail Address chars max) Customer/Status Yes 1 Container

Customer/Status/Additiona No 1 Integer Node Number of Additional Addresses added and/or lAddresses updated Customer/Status/Additiona Yes* 1 Text Attribute Add or Update lAddresses @Type Customer/Status/InvalidCo No 1 Container Invalid Contact Address Warning ntactAddress • Applicable if UPS Address Validation or FedEx Address Validation is enabled (Settings/Compatible Software/Online Shipping Tools in the OMS) and the Allow Invalid Addresses option (Settings/Compatible Software/Online Shipping Tools/Preferences) is off Customer/Status/InvalidCo Yes* 1 Text Attribute The reason the address failed validation ntactAddress @Reason Customer/Status/InvalidCo Yes* 1 Container Invalid Address ntactAddress/Address Customer/Status/InvalidCo Yes* 1 Text Attribute Invalid Address Type (Residential or Business) ntactAddress/Address (11 chars max) @Type Customer/Status/InvalidCo No 1 Text Attribute Invalid Address Label ntactAddress/Address (25 chars max) @Label Customer/Status/InvalidCo No 1 Container Invalid Address First and Last Name ntactAddress/Address/Nam e

110 Element Xpath Always Occurs Type Description Customer/Status/InvalidCo Yes* 1 Text Node (50 Invalid Address First Name ntactAddress/Address/Nam chars max) e/FirstName Customer/Status/InvalidCo Yes* 1 Text Node (50 Invalid Address Last Name ntactAddress/Address/Nam chars max) e/LastName Customer/Status/InvalidCo Yes* 1 Text Node Invalid Address Street Address (Line 1) ntactAddress/Address/Stree (100 chars tAddress1 max) Customer/Status/InvalidCo Yes* 1 Text Node (50 Invalid Address City ntactAddress/Address/City chars max) Customer/Status/InvalidCo Yes* 1 Text Node (2 Invalid Address State/Province Code ntactAddress/Address/State chars max) ProvCode Customer/Status/InvalidCo Yes* 1 Text Node (20 Invalid Address Zip/Postal Code ntactAddress/Address/ZipP chars max) ostalCode Customer/Status/InvalidAd No 1 + Container Invalid Additional Address Warning ditionalAddress • Applicable if UPS Address Validation or FedEx Address Validation is enabled (Settings/Compatible Software/Online Shipping Tools in the OMS) and the Allow Invalid Addresses option (Settings/Compatible Software/Online Shipping Tools/Preferences) is off Customer/Status/InvalidAd Yes* 1 Text Attribute The reason the address failed validation ditionalAddress @Reason Customer/Status/InvalidAd Yes* 1 Container Invalid Address ditionalAddress/Address Customer/Status/InvalidAd Yes* 1 Text Attribute Invalid Address Type (Residential or Business) ditionalAddress/Address (11 chars max) @Type Customer/Status/InvalidAd No 1 Text Attribute Invalid Address Label ditionalAddress/Address (25 chars max) @Label Customer/Status/InvalidAd No 1 Container Invalid Address First and Last Name ditionalAddress/Address/N ame Customer/Status/InvalidAd Yes* 1 Text Node (50 Invalid Address First Name ditionalAddress/Address/N chars max) ame/FirstName Customer/Status/InvalidAd Yes* 1 Text Node (50 Invalid Address Last Name ditionalAddress/Address/N chars max) ame/LastName Customer/Status/InvalidAd Yes* 1 Text Node Invalid Address Street Address (Line 1) ditionalAddress/Address/St (100 chars reetAddress1 max) Customer/Status/InvalidAd Yes* 1 Text Node (50 Invalid Address City ditionalAddress/Address/Ci chars max) ty Customer/Status/InvalidAd Yes* 1 Text Node (2 Invalid Address State/Province Code ditionalAddress/Address/St chars max) ateProvCode

111 Element Xpath Always Occurs Type Description Customer/Status/InvalidAd Yes* 1 Text Node (20 Invalid Address Zip/Postal Code ditionalAddress/Address/Zi chars max) pPostalCode Customer/Status/SavedCre No 1 - 2 Integer Node Number of Saved Credit Cards added and/or ditCards updated Customer/Status/SavedCre Yes* 1 Text Attribute Add or Update ditCards @Type Customer/Status/Activity No 1 - 2 Integer Node Number of Activity records added

Customer/Status/Activity Yes* 1 Text Attribute Add or Update @Type Customer/Status/EraseActi No 1 Empty Node Customer status was set to inactive ve Customer/Status/EraseAffil No 1 Empty Node Customer affiliation was removed iate Customer/Status/EraseAge No 1 Empty Node Customer Age Verification Flag was cleared Verification Customer/Status/EraseCom No 1 Empty Node Internal Notes / Comments for the customer were panyComments cleared Customer/Status/EraseFoll No 1 Empty Node Customer FollowUpDate was cleared owUpDate Customer/Status/EraseMail No 1 Empty Node Customer was removed from the mailing list ingList Customer/Status/ErasePass No 1 Empty Node Customer Password and Password Reminder were word cleared Customer/Status/EraseAddi No 1 Integer Node Number of customer Additional Addresses that tionalAddresses were cleared Customer/Status/EraseSave No 1 Integer Node Number of customer Saved Credit Cards that dCreditCards were cleared Customer/Status/EraseTrus No 1 Integer Node Customer Trustee was removed tee

CustomerUpdateRequest Example

fairway xmlbob XMLDem0Pwd Bob Smith bobsmith @somewhere.com

123 Main St. San Diego CA

112 92107 US 760 123 1234

01/02/1960 bobsmith123 the usual password Consumer 0 Nexternal Solutions Visa 4111111111111111 04/2015

CustomerUpdateReply Example

904 Bob Smith bobsmith @somewhere.com 1

113 11: InventoryUpdate

The InventoryUpdate is used to update product inventory, thus allowing you to "import" inventory data from an external system. To be eligible for the InventoryUpdate tool, Inventory Control must be on at Settings/Site Options/Inventory Control in the OMS.

In the InventoryUpdateRequest, products are identified via their Product Number, SKU Number, or SKU (i.e. Stock Keeping Unit or Part Number). When using the SKU to identify the product, products that define inventory on the Product level must use a product-level SKU value; for products that define inventory on the attribute-based SKU level a SKU-level SKU value must be used.

For each inventory value included in the InventoryUpdateRequest, you may have that value processed in "Update", “OnHand”, or "Add" mode via the Mode attribute. Update mode updates the current inventory for the product (or SKU) to the specified value; OnHand mode represents “inventory on hand”, updating the current inventory to the specified value minus the total unfulfilled quantity in outstanding orders (or updating the on hand quantity, if Enhanced Inventory is use at Settings/Site Options/Inventory Control in the OMS, and is enabled for the product); and Add mode adds the specified value to the current inventory. Be aware that negative inventory values are allowed only if the Allow Negative option (Settings/Site Options/Inventory Control) is on. If an inventory change via the InventoryUpdate necessitates a change in Product Status, that change is made automatically.

If Enhanced Inventory is active for one or more products, you may also perform Transfer and Remove transactions, and specify Source and/or Destination containers. For Transfers, both the Source and Destination containers are required. When the Source and/or Destination containers are in use, the Location, Location Type, and Purpose are required; while Transaction Code, Transaction Date, and Note are optional. If you elect to not use the Source container, all InventoryUpdate actions are performed against the product’s default location.

The ForceProceed node in the InventoryUpdateRequest forces the tool to proceed with valid inventory updates even if an invalid update request (e.g. no match is found for the ProductSKU node specified) is found. In such a scenario, the corresponding InventoryProduct container for invalid requests in the InventoryUpdateReply contains the Error XML elements specified in Chapter 15 (Errors) in lieu of the elements specified in the InventoryUpdateReply Schema. If the ForceProceed node is not included in the InventoryUpdateRequest, any invalid request results in the failure of all requests, and only the Error elements are returned.

A single InventoryUpdateRequest may contain no more than 15 InventoryUpdate containers. If you wish to update more than 15 inventory values, you must do so in an iterative manner.

114 Note: InventoryUpdate may also be used to query inventory – use the Add mode and an Inventory Value of 0.

InventoryUpdateRequest URL: https://www.nexternal.com/shared/xml/inventoryupdate.rest

InventoryUpdateRequest Schema Element Xpath Required Occurs Type Description Credentials Yes 1 Container Note that the supplied Credentials must contain the Client's XML Key or a UserName and Password, but not both Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/Key No 1 Text Node (20 Client's XML Key chars max) Credentials/UserName No 1 Text Node (50 XML Tools User Name chars max) • See Users / New Users / Access Level in the OMS for more information about the XML Tools Access Level Credentials/Password No 1 Text Node (50 XML Tools User Password chars max) InventoryUpdate Yes 1 - 15 Container InventoryUpdate @Mode No 1 Text Attribute Update Mode (Add, OnHand, Remove, Transfer, (8 chars max) or Update; default value: Update) InventoryUpdate/ProductN No* 1 Integer Node Product Number o • Your XML request must contain only one of the following: ProductNo, SKUNo, ProductSKU

InventoryUpdate/SKUNo No* 1 Integer Node SKU Number • Your XML request must contain only one of the following: ProductNo, SKUNo, ProductSKU

InventoryUpdate/ProductS No* 1 Text Node (50 SKU or Item Number KU chars max) • Your XML request must contain only one of the following: ProductNo, SKUNo, ProductSKU • Must be an exact match for an existing SKU on the Product or SKU (Attribute) level • If more than one match is found only the first matching Product or SKU will be updated InventoryUpdate/Inventory Yes 1 Integer Node Add, Remove, Transfer, or Update Inventory Value • May be a negative number if Update Mode is Add and/or the Allow Negative option (Settings/Site Options/Inventory Control in the OMS) is on InventoryUpdate/Source No 1 Container Included if Enhanced Inventory is enabled in the OMS InventoryUpdate/Source/L Yes* 1 Text Node (50 Inventory Source Location Internal Name ocation chars max) InventoryUpdate/Source/L Yes* 1 Text Attribute Inventory Location Type (S or P; default value: ocation @Type (1 char max) S), where "S" indicates a Shipping location and "P" indicates a Pickup location

115 Element Xpath Required Occurs Type Description InventoryUpdate/Source/P Yes* 1 Text Node (9 Inventory Purpose (Available, Pending, or urpose chars max) Reserved) InventoryUpdate/Source/S No 1 Text Node (50 Inventory Shelf Location helf chars max) InventoryUpdate/Destinati No 1 Container Required if Enhanced Inventory is enabled for on the Product and Inventory is being transferred InventoryUpdate/Destinati Yes* 1 Text Node (50 Inventory Source Location Internal Name on/Location chars max) InventoryUpdate/Destinati Yes* 1 Text Attribute Inventory Location Type (S or P; default value: on/Location @Type (1 char max) S), where "S" indicates a Shipping location and "P" indicates a Pickup location InventoryUpdate/Destinati Yes* 1 Text Node (9 Inventory Purpose (Available, Pending, or on/Purpose chars max) Reserved) InventoryUpdate/Destinati No 1 Text Node (50 Inventory Shelf Location on/Shelf chars max) InventoryUpdate/COGS No 1 Currency Inventory Cost Of Goods Sold Node • Only valid when Mode="Add" InventoryUpdate/Transacti Yes* 1 Text Node (50 Add, Convert, Remove, Transfer, or Update onCode chars max) • Used only if Enhanced Inventory is enabled for the Product InventoryUpdate/Transacti No 1 Container onDate InventoryUpdate/Transacti Yes* 1 Date Node Inventory Transaction Date onDate/Date (mm/dd/yyyy) • Used only if Enhanced Inventory is enabled for the Product InventoryUpdate/Note No 1 Text Node (50 Inventory Transaction Note chars max) • Used only if Enhanced Inventory is enabled for the Product InventoryUpdate/Integratio No 1 Container See External Mapping for more information n ForceProceed No 1 Empty Node Indicates that the Inventory Update should proceed even if one or more requested updates is invalid

InventoryUpdateReply Schema Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) char max) InventoryProduct Yes 1 - 15 Container InventoryProduct/ProductN Yes 1 Integer Node Product Number of updated product o InventoryProduct/ProductN Yes 1 Text Node Product Name of updated product ame (100 chars max) InventoryProduct/ProductS Yes 1 Text Node (50 SKU value of the updated product, or the KU chars max) attribute-based SKU InventoryProduct/Attribute No 1 + Text Node (50 Attribute Value for updated attribute-based SKU chars max) items InventoryProduct/Attribute Yes* 1 Text Attribute Attribute Name for updated attribute-based SKU @Name (50 chars items max)

116 Element Xpath Always Occurs Type Description InventoryProduct/Inventor No 1 Text Node (50 Updated Inventory Value y chars max) • Present only if Enhanced Inventory is not active for the product InventoryProduct/Source No 1 Container Updated Inventory Value for the Source Location • Present only if Enhanced Inventory is active for the product InventoryProduct/Source/L Yes* 1 Text Node (50 Inventory Source Location Internal Name ocation chars max) InventoryProduct/Source/L Yes* 1 Text Attribute Inventory Location Type (S or P; default value: ocation @Type (1 char max) S), where "S" indicates a Shipping location and "P" indicates a Pickup location InventoryProduct/Source/A Yes* 1 Integer Node Available inventory at this Location vailable InventoryProduct/Source/I No 1 Integer Node In cart inventory at this Location nCart • Applicable only if the product uses an Inventory Reservation InventoryProduct/Source/P Yes* 1 Integer Node Pending inventory at this Location ending InventoryProduct/Source/R Yes* 1 Integer Node Reserved inventory at this Location eserved InventoryProduct/Source/O Yes* 1 Integer Node OnHand inventory at this Location nHand InventoryProduct/Destinati No 1 Container Updated Inventory Value at the Destination on Location • Present only if Enhanced Inventory is active for the product and inventory has been transferred InventoryProduct/Destinati Yes* 1 Text Node (50 Inventory Destination Location Internal Name on/Location chars max) InventoryProduct/Destinati Yes* 1 Text Attribute Inventory Location Type (S or P; default value: on/Location @Type (1 char max) S), where "S" indicates a Shipping location and "P" indicates a Pickup location InventoryProduct/Destinati Yes* 1 Integer Node Available inventory at this Location on/Available InventoryProduct/Destinati No 1 Integer Node In cart inventory at this Location on/InCart • Applicable only if the product uses an Inventory Reservation InventoryProduct/Destinati Yes* 1 Integer Node Pending inventory at this Location on/Pending InventoryProduct/Destinati Yes* 1 Integer Node Reserved inventory at this Location on/Reserved InventoryProduct/Destinati Yes* 1 Integer Node OnHand inventory at this Location on/OnHand InventoryProduct/ProductS Yes 1 Text Node (12 Updated Product Status (Normal, Backordered, tatus chars max) Preordered, Sold Out, or Discontinued)

InventoryUpdateRequest Example

fairway xmlbob

117 XMLDem0Pwd ff036 -2

InventoryUpdateReply Example

36 Caddyshack DVD ff036 989 Normal

InventoryUpdateRequest Example (Enhanced Inventory)

fairway xmlbob XMLDem0Pwd ff006 10 Arizona Available Arizona Will-Call Available

InventoryUpdateReply Example (Enhanced Inventory)

6 Ashworth Golf Carry Bag ff006 Arizona 90

118 0 0 90 Arizona Will-Call 14 0 0 14 Normal

119 12: ProductQuery

The ProductQuery is used to query product data, thus "exporting" products from the OMS so that they may be "imported" into an external system.

You may submit a query based on Product Number Range, Product Created Range, Product Last Updated Range, Product Name, Product SKU, Product Vendor, Product Category, Product Ship From, Product Pickup Location, Product Attribute, Product Custom Field, Product Status, and Product Visibility. Where a range is allowed you may specify a Range Start, a Range End, or both. Specifying only the Range Start is the equivalent of querying for all products that are "greater than or equal to" the submitted value, while a query containing only the Range End is the equivalent of querying for all products that are "less than or equal to" the submitted value. For example, a query for a Product Number Range with a Range Start of 100 and no Range End will return all products with a Product Number of 100 or more.

In the case of a Product Created Range or Product Last Updated Range you may specify a Start and/or End Date, and optionally a Time. If you do not specify a Time, a default value of 00:00 (i.e. 12:00 AM) is used. If you wish to specify the end of the day (particularly for a Range End), you must use a Time value of 23:59.

The ProductQuery gives you the option of returning additional product information in the query result(s) by adding one or more "include" nodes to the query. If the requested information is present in the OMS it will be exported with each related product.

A single ProductQueryReply returns no more than 15 product nodes in the corresponding ProductQueryReply, even if the requested query includes more than 15 resulting products. The presence of a NextPage node in the ProductQueryReply will indicate a subsequent "page" of results exists. You may then use the Page node in the ProductQueryRequest to iteratively request all results from your query.

Note: If the Page node in the ProductQueryRequest contains a page number greater than the maximum page number in the query results, the maximum page number is returned.

CurrentStatus Node

The CurrentStatus node in the ProductQueryRequest gives you the option of obtaining a simple status snapshot on a large number of products. To do so, specify a query range (Product Number Range, Product Created Range, or Product Last Updated Range) along with the CurrentStatus node. The ProductQueryReply will return a single node per product, containing the Product Number, Product Name, Product SKU (if one has been assigned), and Product Status. The maximum ProductQueryReply page size with the CurrentStatus node is 2000.

ProductQueryRequest URL: https://www.nexternal.com/shared/xml/productquery.rest

120 ProductQueryRequest Schema Element Xpath Required Occurs Type Description Credentials Yes 1 Container Note that the supplied Credentials must contain the Client's XML Key, or a UserName and Password, but not both Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/Key No 1 Text Node (20 Client's XML Key chars max) Credentials/UserName No 1 Text Node (50 XML Tools User Name chars max) • See Users / New Users / Access Level in the OMS for more information about the XML Tools Access Level Credentials/Password No 1 Text Node (50 XML Tools User Password chars max) ProductNoRange No 1 Container For query by Product Number Range ProductNoRange/ProductN No 1 Integer Node Product Number Range Start oStart ProductNoRange/ProductN No 1 Integer Node Product Number Range End oEnd ProductCreatedRange No 1 Container For query by Product Created Range ProductCreatedRange/Prod No 1 Container uctCreatedDateStart ProductCreatedRange/Prod Yes* 1 Container uctCreatedDateStart/DateT ime ProductCreatedRange/Prod Yes* 1 Date Node Created Date Range Start uctCreatedDateStart/DateT (mm/dd/yyyy) ime/Date ProductCreatedRange/Prod No 1 Time Node Created Date Range Start Time (default value: uctCreatedDateStart/DateT (hh:mm) 00:00) ime/Time ProductCreatedRange/Prod No 1 Container uctCreatedDateEnd ProductCreatedRange/Prod Yes* 1 Container uctCreatedDateEnd/DateTi me ProductCreatedRange/Prod Yes* 1 Date Node Created Date Range End uctCreatedDateEnd/DateTi (mm/dd/yyyy) me/Date ProductCreatedRange/Prod No 1 Time Node Created Date Range End Time (default value: uctCreatedDateEnd/DateTi (hh:mm) 00:00) me/Time ProductLastUpdRange No 1 Container For query by Product Last Updated Range ProductLastUpdRange/Pro No 1 Container ductLastUpdDateStart ProductLastUpdRange/Pro Yes* 1 Container ductLastUpdDateStart/Date Time ProductLastUpdRange/Pro Yes* 1 Date Node Last Updated Date Range Start ductLastUpdDateStart/Date (mm/dd/yyyy) Time/Date

121 Element Xpath Required Occurs Type Description ProductLastUpdRange/Pro No 1 Time Node Last Updated Date Range Start Time (default ductLastUpdDateStart/Date (hh:mm) value: 00:00) Time/Time ProductLastUpdRange/Pro No 1 Container ductLastUpdDateEnd ProductLastUpdRange/Pro Yes* 1 Container ductLastUpdDateEnd/Date Time ProductLastUpdRange/Pro Yes* 1 Date Node Last Updated Date Range End ductLastUpdDateEnd/Date (mm/dd/yyyy) Time/Date ProductLastUpdRange/Pro No 1 Time Node Last Updated Date Range End Time (default ductLastUpdDateEnd/Date (hh:mm) value: 00:00) Time/Time ProductName No 1 Text Node Used to query for a partial or complete Product (100 chars Name max) ProductSKU No 1 Text Node (50 Used to query for a partial or complete Product chars max) SKU ProductVendor No 1 Text Node (75 Used to query for a specific Product Vendor chars max) ProductCategory No 1 Text Node Used to query for a Product Category or for a set of Product Subcategories • When specifying a Product Category parameter you can enter the Subcategory Name that the Product(s) belong to, a complete Category hierarchy, or a partial Category hierarchy to retrieve all products contained within that hierarchy. Note that the Category Names must be separated by forward slashes with leading and trailing spaces (" / ") ProductCategory No 1 Text Attribute Preserve Product Category Ordering (Yes or No; @PreserveOrdering (3 chars max) default value: No) • See Categories/Category/Products in Category/Change Order in the OMS for more information about Category Ordering ProductShipFrom No 1 Text Node (50 Used to query for the Internal Name of a Ship chars max) From Address ProductPickupLocation No 1 Text Node (50 Used to query for the Internal Name of a Pickup chars max) Location ProductAttribute No 1 - 10 Text Node (50 Product Attribute Value chars max) • Used to query for one or more specific Product Attribute Name / Value pairs ProductAttribute @Name Yes* 1 Text Attribute Product Attribute Name (50 chars max) ProductCustomField No 1 - 6 Text/Integer/N Product Custom Field Value umeric/Curren • Used to query for one or more specific Product cy/Date Node Custom Field Name / Value pairs • Node Type depends on Field Type of the Custom Field. For Field Type "Yes/No" the value must be either "Yes" or "No" ProductCustomField Yes* 1 Text Attribute Custom Field Name @Name (50 chars max)

122 Element Xpath Required Occurs Type Description ProductCustomField Yes* 1 Text Attribute Custom Field Type (Text, Positive Number, @Type (16 chars max) Positive Integer, Currency, Date, Yes/No) ProductVisibility No 1 Text Node Used to query by Product Visibility Type (All, BtoB, BtoC, Internal, None, or a Visibility Type defined by the client) ProductStatus No 1 Text Node Used to query by Product Status (Normal, Backordered, Preordered, Sold Out, or Discontinued) CreatedByNote No 1 Text Node (25 Used to query by Created By Note chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Products LastUpdByNote No 1 Text Node (25 Used to query by Last Updated By Note chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Products IncludeAllocation No 1 Empty Node Indicates that Product Allocation information should be included with the ProductQueryReply IncludeOverrides No 1 Empty Node Indicates that Product Override information should be included with the ProductQueryReply IncludeEMailAddenda No 1 Empty Node Indicates that Product EMail Addenda should be included with the ProductQueryReply IncludeMarketplaceOption No 1 Empty Node Indicates that Product Marketplace Options s should be included with the ProductQueryReply IncludeSearchEngineMark No 1 Empty Node Indicates that Product Search Engine Friendly up Catalog information should be included with the ProductQueryReply IncludeCustomerBasedPric No 1 Empty Node Indicates that Product Customer Based Pricing ing information should be included with the ProductQueryReply IncludeRelatedProducts No 1 Empty Node Indicates that information about Related Products should be included with the ProductQueryReply IncludeReviews No 1 Empty Node Indicates that Customer Reviews of the Product should be included with the ProductQueryReply IncludeQuestions No 1 Empty Node Indicates that Customer Questions about the Product should be included with the ProductQueryReply IncludeCustomSections No 1 Empty Node Indicates that Product Custom Sections should be included with the ProductQueryReply IncludeAllocation No 1 Empty Node Indicates that Product Allocation information should be included with the ProductQueryReply IncludeProductLocations No 1 Empty Node Indicates that products with Enhanced Inventory enabled should return inventory information by location CurrentStatus No 1 Empty Node Used to return the Product Status of all Products that fall within the specified range • Allowed only when this node is combined with ProductNoRange, ProductCreatedRange, or ProductLastUpdRange Page No 1 Integer Node Requested page number of query results (default value: 1)

ProductQueryReply Schema (without CurrentStatus node)

123 Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Attribute Client's Account Name (e.g. fairway) @Page Yes 1 Integer Page number of query results Attribute Product Yes 1 - 15 Container Product/ProductName Yes 1 Text Node Product Name (100 chars max) Product/ProductSKU No 1 Text Node (50 Product-Level SKU chars max) Product/ProductNo Yes 1 Integer Node Product Number Product/COGS No 1 Currency Product Cost Of Goods Sold Node Product/Pricing No 1 Container Included if Product Pricing is not defined at the SKU level Product/Pricing @Type Yes* 1 Text Attribute Indicates how Product Pricing is defined (Single, (20 chars max) Category, Volume, or Bid) Product/Pricing/Price Yes* 1 + Currency Product Price Node Product/Pricing/Price No 1 Integer Price Quantity level @Qty Attribute • Included if Product Pricing is Volume or Category Product/Pricing/Price No 1 Text Attribute Customer Type @Type • Included only if the IncludeCustomerBasedPricing node is present in the ProductQueryRequest and the Product uses customer based pricing • If the IncludeCustomerBasedPricing node is present the default Product Level Price Type will appear as "Default" Product/Pricing/Price Yes* 1 Percent Price Discount percentage @PercentDiscount Attribute Product/Weight No 1 Numeric Node Product Weight, in pounds, if defined at the Product level Product/OrderQty No 1 Container Minimum / Maximum Order Quantities • Included only if Minimum and Maximum Order Quantities are defined at the Product level Product/OrderQty/MinQty No 1 Integer Node Minimum Order Quantity Product/OrderQty/MaxQty No 1 Integer Node Maximum Order Quantity

Product/Inventory No 1 Integer Node Product Inventory Value • Included only if Inventory Control is enabled at Settings/Site Options/Inventory Control in the OMS, and Inventory is defined at the Product level • Present only for products where Enhanced Inventory is inactive Product/InventoryByLocati No 1 Container Included only if Enhanced Inventory is active for on the product Product/InventoryByLocati Yes* 1 + Container on/Location Product/InventoryByLocati Yes* 1 Text Attribute Inventory Location Type (S or P), where "S" on/Location @Type (1 char max) indicates a Shipping location and "P" indicates a Pickup location

124 Element Xpath Always Occurs Type Description Product/InventoryByLocati Yes 1 Text Attribute Inventory Location Internal Name on/Location @Name (50 chars max) Product/InventoryByLocati Yes* 1 Integer Node Available inventory at this Location on/Location/Available Product/InventoryByLocati No 1 Integer Node In cart inventory at this Location on/Location/InCart • Applicable only if the product uses an Inventory Reservation Product/InventoryByLocati Yes* 1 Integer Node Pending inventory at this Location on/Location/Pending Product/InventoryByLocati Yes* 1 Integer Node Reserved inventory at this Location on/Location/Reserved Product/InventoryByLocati Yes* 1 Integer Node OnHand inventory at this Location on/Location/OnHand Product/InventoryReservati No 1 Container Included only if Enhanced Inventory is active for on the product, and Inventory Reservation is in use Product/InventoryReservati Yes* 1 Integer Node Inventory Reservation (in minutes) on/Minutes Product/ShippingRates No 1 Container Included if Shipping Rates are overridden at the Product level; or Shipping Cost Calculation (Settings/Shipping in the OMS) is UNIT and Shipping Rates are defined at the Product level Product/ShippingRates/Zon Yes* 1 + Container e Product/ShippingRates/Zon Yes* 1 Integer Shipping Zone Number (1 – 100) e @ID Attribute • Zones are defined at Settings/Shipping in the OMS Product/ShippingRates/Zon Yes* 1 + Container e/ShippingOption Product/ShippingRates/Zon Yes* 1 Text Node Shipping Method e/ShippingOption/ShipMet hod Product/ShippingRates/Zon Yes* 1 Currency Shipping Rate e/ShippingOption/ShipRate Node Product/Allocation No 1 Container Product Allocation information • Included only if the IncludeAllocation node is present in the ProductQueryRequest and the product is allocated Product/Allocation/StartDa No 1 Container te Product/Allocation/StartDa Yes* 1 Container te/DateTime Product/Allocation/StartDa Yes* 1 Date Node Product Allocation Start Date te/DateTime/Date (mm/dd/yyyy) Product/Allocation/EndDat No 1 Container e Product/Allocation/EndDat Yes* 1 Container e/DateTime Product/Allocation/EndDat Yes* 1 Date Node Product Allocation End Date e/DateTime/Date (mm/dd/yyyy) Product/Allocation/Custom Yes* 1 + Integer Node Quantity allocated for the specified Customer erType Type

125 Element Xpath Always Occurs Type Description Product/Allocation/Custom Yes* 1 Text Attribute Name of Customer Type erType @Name (20 chars max)

Product/Images No 1 Container Included if images are defined at the Product level, or if the product uses an Image Gallery Product/Images/Audio No 1 URL Node URL of Product Audio clip

Product/Images/Audio No 1 Text Attribute Audio Clip Repetition (Once, Continuously, or a @Repetition (10 chars max) integer value; default value: Once) Product/Images/Thumbnail No 1 URL Node URL of Product Thumbnail Image

Product/Images/Main No 1 URL Node URL of Product Main Image

Product/Images/Large No 1 URL Node URL of Product Large Image

Product/Images/Gallery No 1 + Container Included if the product uses Image Galleries

Product/Images/Gallery/Th No 1 URL Node URL of Gallery Thumbnail Image umbnail

Product/Images/Gallery/M No 1 URL Node URL of Gallery Main Image ain Product/Images/Gallery/La No 1 URL Node URL of Gallery Large Image rge Product/Images/Gallery/De No 1 Empty Node Indicates the default Gallery Image fault

Product/InStockDate No 1 Container Included only if the Product has a zero or negative inventory, and an Expected In Stock Date is defined Product/InStockDate/Date Yes* 1 Container Time Product/InStockDate/Date Yes* 1 Date Node Product In Stock Date Time/Date (mm/dd/yyyy) Product/SKU No 1 + Container Included if one or more attribute-based SKUs are defined for the product Product/SKU @SKU No 1 Text Attribute Item-Level SKU (50 chars max) Product/SKU/Attribute No 1 + Text Node (50 SKU Attribute Value chars max) Product/SKU/Attribute Yes* 1 Text Attribute SKU Attribute Name @Name (50 chars max) Product/SKU/COGS No 1 Currency SKU Cost of Goods Sold Node Product/SKU/Pricing No 1 Container Included if Pricing is defined at the SKU level Product/SKU/Pricing/Price Yes* 1 Currency SKU Price Node

126 Element Xpath Always Occurs Type Description Product/SKU/Pricing/Price No 1 Text Attribute Customer Type @Type • Included only if the IncludeCustomerBasedPricing node is present in the ProductQueryRequest and the SKU uses customer based pricing • If the IncludeCustomerBasedPricing node is present the default SKU Level Price Type will appear as "Default" Product/SKU/Pricing/Price Yes* 1 Percent Price Discount Percentage @PercentDiscount Attribute Product/SKU/UPC No 1 Text Node (14 SKU UPC Number chars max) Product/SKU/Manufacturer No 1 Text Node (50 SKU Manufacturer Part Number PartNo chars max) Product/SKU/WarehouseL No 1 Text Node Warehouse Location ocation Product/SKU/CustomerTy No 1 Text Node Customer Type Upgrade (from Customers/Types peUpgrade in the OMS) Product/SKU/Weight No 1 Numeric Node SKU Weight, in pounds Product/SKU/OrderQty No 1 Container Minimum / Maximum Order Quantities • Included only if minimum and/or maximum order quantities are defined at the SKU level Product/SKU/OrderQty/Mi No 1 Integer Node SKU Minimum Order Quantity nQty Product/SKU/OrderQty/Ma No 1 Integer Node SKU Maximum Order Quantity xQty Product/SKU/Inventory No 1 Integer Node SKU Inventory Value • Included only if Inventory Control is enabled at Settings/Site Options/Inventory Control in the OMS, and Inventory is defined at the SKU level • Present only for products where Enhanced Inventory is inactive Product/SKU/InventoryBy No 1 Container Included only if Enhanced Inventory is active for Location the product Product/SKU/InventoryBy Yes* 1 + Container Location/Location Product/SKU/InventoryBy Yes* 1 Text Attribute Inventory Location Type (S or P), where "S" Location/Location @Type (1 char max) indicates a Shipping location and "P" indicates a Pickup location Product/SKU/InventoryBy Yes 1 Text Attribute Inventory Location Internal Name Location/Location @Name (50 chars max) Product/SKU/InventoryBy Yes* 1 Integer Node Available inventory at this Location Location/Location/Availabl e Product/SKU/InventoryBy Yes* 1 Integer Node Pending inventory at this Location Location/Location/Pending Product/SKU/InventoryBy Yes* 1 Integer Node Reserved inventory at this Location Location/Location/Reserve d Product/SKU/InventoryBy Yes* 1 Integer Node OnHand inventory at this Location Location/Location/OnHand

127 Element Xpath Always Occurs Type Description Product/SKU/ShippingRate No 1 Container Included if Shipping Rates are overridden at the s SKU level; or Shipping Cost Calculation (Settings/Shipping in the OMS) is UNIT and Shipping Rates are defined at the SKU level Product/SKU/ShippingRate Yes* 1 + Container s/Zone Product/SKU/ShippingRate Yes* 1 Integer Shipping Zone Number that was overridden (1 – s/Zone @ID Attribute 100) • See Settings / Shipping in the OMS for the number of defined zones Product/SKU/ShippingRate Yes* 1 + Container s/Zone/ShippingOption Product/SKU/ShippingRate Yes* 1 Text Node Shipping Method that was overridden s/Zone/ShippingOption/Shi pMethod Product/SKU/ShippingRate Yes* 1 Currency Shipping Rate that was overridden s/Zone/ShippingOption/Shi Node pRate Product/SKU/Allocation No 1 Container SKU Allocation information • Included only if the IncludeAllocation node is present in the ProductQueryRequest and the SKU is allocated Product/SKU/Allocation/St Yes* 1 Container artDate Product/SKU/Allocation/St Yes* 1 Container artDate/DateTime Product/SKU/Allocation/St Yes* 1 Date Node SKU Allocation Start Date artDate/DateTime/Date (mm/dd/yyyy) Product/SKU/Allocation/E Yes* 1 Container ndDate Product/SKU/Allocation/E Yes* 1 Container ndDate/DateTime Product/SKU/Allocation/E Yes* 1 Date Node SKU Allocation End Date ndDate/DateTime/Date (mm/dd/yyyy) Product/SKU/Allocation/C Yes* 1 + Integer Node Quantity allocated for the specified Customer ustomerType Type Product/SKU/Allocation/C Yes* 1 Text Attribute Name of Customer Type ustomerType @Name (20 chars max)

Product/SKU/Images No 1 Container Included if images are defined at the SKU level

Product/SKU/Images/Main No 1 URL Node URL of SKU Main Image

Product/SKU/Images/Larg No 1 URL Node URL of SKU Large Image e Product/SKU/Images/Defa No 1 Empty Node Indicates the Default Image for the SKU ult

Product/SKU/InStockDate No 1 Container Included only if the SKU has a zero or negative inventory, and an Expected In Stock Date is defined

128 Element Xpath Always Occurs Type Description Product/SKU/InStockDate/ Yes* 1 Container DateTime Product/SKU/InStockDate/ Yes* 1 Date Node SKU In Stock Date DateTime/Date (mm/dd/yyyy) Product/SKU/VinNow No 1 Container Included only if integrated with VinNow (Settings/Compatible Software/VinNow in the OMS) Product/SKU/VinNow/Key No 1 Text Attribute VinNow SKU-level Product Key (50 chars max) Product/SKU/Default No 1 Empty Node Indicates the Default SKU for the Product

Product/Categories No 1 Container Included if Categories are defined at the Product level Product/Categories/Categor Yes* 1 + Container y Product/Categories/Categor Yes* 1 Integer Product Category Number y @No Attribute Product/Categories/Categor Yes* 1 Text Node Product Category Name y/CategoryName • Subcategories appear as category paths separated by " / " (e.g. Golf Clubs / Putters). Note that there is a space on either side of the forward slash Product/Category/Primary No 1 Empty Node Indicates the Primary Category for the Product

Product/Attributes No 1 Container Included if the product has Attributes

Product/Attributes/Attribut Yes* 1 + Container e Product/Attributes/Attribut Yes* 1 Text Attribute Product Attribute Name e @Name (50 chars max) Product/Attributes/Attribut Yes* 1 + Text Node (50 Product Attribute Value e/Option chars max) Product/Attributes/Attribut No 1 URL Attribute URL of Gallery Main Image e/Option • Included only if the product uses an Image @GalleryMainImage Gallery, and this option is associated with a Gallery Image Product/WriteIns No 1 Container Included if the product has Write-In Attributes Product/WriteIns/WriteIn Yes* 1 + Container Product/WriteIns/WriteIn/ Yes* 1 Text Node (50 Write-In Attribute Name Name chars max) Product/WriteIns/WriteIn/ Yes* 1 Text Node (10 Write-In Attribute Type (Text, TextArea, EntryType chars max) Checkbox, or SelectBox) Product/WriteIns/WriteIn/ No 1 Integer Node Write-In Attribute Maximum Length MaxLength Product/WriteIns/WriteIn/ Yes* 1 Text Node (10 Write-In Attribute Required (Yes, No, or Charge) Required chars max) Product/WriteIns/WriteIn/ No 1 Currency Write-In Attribute Additional Charge AdditionalCharge Node • Included if Product/WriteIns/WriteIn/Required is "Charge"

129 Element Xpath Always Occurs Type Description Product/WriteIns/WriteIn/ Yes* 1 Text Node Product WriteIn Allowed Values (all types of AllowedValues input; only letters, numbers, and spaces; only letters and numbers; only letters and spaces; only letters; only numbers; only whole numbers; only positive numbers and zero; only positive numbers; only positive whole numbers and zero; only positive whole numbers; none) Product/WriteIns/WriteIn/ No 1 Container Included if EntryType is SelectBox Options Product/WriteIns/WriteIn/ Yes* 1 + Text Node SelectBox Option Value Option Product/Specifications No 1 Container Included if Specifications are defined at the Product level Product/Specifications/Spe Yes* 1 + Text Node Product Specification Value cification (255 chars max) Product/Specifications/Spe Yes* 1 Text Attribute Product Specification Name cification @Name (100 chars max) Product/Status Yes 1 Text Attribute Product Status (Normal, Preordered, (20 chars max) Backordered, Sold Out, Discontinued) Product/Vendor No 1 Text Node (75 Vendor Internal Name chars max) Product/ShipFrom Yes 1 Text Node (50 Primary Ship From Internal Name chars max) Product/AddlShipFroms No 1 Container Included if any Additional Ship-From Locations are defined for the Product • Requires that Directed Fulfillment (Settings/Site Options/Inventory Control in the OMS) be enabled Product/AddlShipFroms Yes* 1 + Text Node (50 Ship-From Location Internal Name /InternalName chars max) Product/PickupLocations No 1 Container Included if any Pickup Locations are defined for the Product Product/PickupLocations Yes* 1 Text Attribute Pickup is enabled for this Product (Yes or No) @EnablePickup (3 chars max) Product/PickupLocations Yes* 1 Text Attribute Product is designated as Pickup Only (Yes or No) @PickupOnly (3 chars max) • If set to "Yes" this indicates the Product cannot be shipped Product/PickupLocations/I Yes* 1 + Text Node (50 Pickup Location Internal Name nternalName chars max) Product/WarehouseLocatio No 1 Text Node WarehouseLocation n Product/CustomField1 No 1 Text/Integer/N Product Custom Field #1 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. Product/CustomField1 Yes* 1 Text Attribute Product Custom Field #1 Name @Name (50 chars max) Product/CustomField1 Yes* 1 Text Attribute Product Custom Field #1 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Product/CustomField2 No 1 Text/Integer/N Product Custom Field #2 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field.

130 Element Xpath Always Occurs Type Description Product/CustomField2 Yes* 1 Text Attribute Product Custom Field #2 Name @Name (50 chars max) Product/CustomField2 Yes* 1 Text Attribute Product Custom Field #2 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Product/CustomField3 No 1 Text/Integer/N Product Custom Field #3 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. Product/CustomField3 Yes* 1 Text Attribute Product Custom Field #3 Name @Name (50 chars max) Product/CustomField3 Yes* 1 Text Attribute Product Custom Field #3 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Product/CustomField4 No 1 Text/Integer/N Product Custom Field #4 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. Product/CustomField4 Yes* 1 Text Attribute Product Custom Field #4 Name @Name (50 chars max) Product/CustomField4 Yes* 1 Text Attribute Product Custom Field #4 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Product/CustomField5 No 1 Text/Integer/N Product Custom Field #5 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. Product/CustomField5 Yes* 1 Text Attribute Product Custom Field #5 Name @Name (50 chars max) Product/CustomField5 Yes* 1 Text Attribute Product Custom Field #5 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Product/CustomField6 No 1 Text/Integer/N Product Custom Field #6 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. Product /CustomField6 Yes* 1 Text Attribute Product Custom Field #6 Name @Name (50 chars max) Product /CustomField6 Yes* 1 Text Attribute Product Custom Field #6 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Product/Taxable Yes 1 Text Node (5 Product Taxability (All, None, or State) chars max) Product/Taxable @States No 1 Text Attribute For Product Taxability of State, this attribute contains a comma-delimited list of taxable states Product/Visibility Yes 1 Text Node (20 Product Visibility (All, BtoB, BtoC, Internal, chars max) None, or Type) Product/Visibility @Types No 1 Text Attribute For Product Visibility of Type, this attribute contains a comma-delimited list of Customer Types with visibility Product/HidePrice No 1 Empty Node Indicates that Product Price(s) are hidden Product/Restricted No 1 Empty Node Indicates that the product is Restricted Product /Expedited No 1 Empty Node Indicates that the product requires Expedited Shipping Product /RequiresDryIce No 1 Empty Node Indicates that the product requires Dry Ice Product/Required No 1 Empty Node Indicates that the product is Required

131 Element Xpath Always Occurs Type Description Product/DiscountEligible No 1 Empty Node Indicates that the product is eligible for Category Discounts, Order Discounts, and Customer Discounts Product/CartAddendumEli No 1 Empty Node Indicates that the product is eligible for the Cart gible Addendum Product/PendingEditEligibl No 1 Empty Node Indicates that the product may be included in a e Pending Edit Product/AllowDirectCheck No 1 Empty Node Indicates that Direct Checkout is available out Product/AllowReviews No 1 Empty Node Indicates that the product is Reviewable Product/AllowQuestions No 1 Empty Node Indicates that the product allows Questions Product/ProductLink No 1 Container Included if E-Business Type (Settings/Site Options in the OMS) is BtoC or Both Product/ProductLink/Store Yes* 1 URL Node URL to access the product page in the BtoC Store Front Product/ProductLink/Direc No 1 URL Node If Direct Checkout is enabled (Settings/Boolean tCheckout Options in the OMS) and the Product/AllowDirectCheckout node is present, this node contains the Direct Checkout URL Product/CustomerTypeUpg No 1 Text Node Customer Type Upgrade (from Customers/Types rade in the OMS) Product/Description Yes 1 Container Product/Description/Short No 1 Text Node Product Short Description (255 chars max) Product/Description/Long No 1 Text Node Product Long Description Product/Description/Custo No 1 Text Node Product Custom Section 1 Text mSection1 • Included only if the IncludeCustomSections node is present in the ProductQueryRequest Product/Description/Custo Yes* 1 Text Node Product Custom Section 1 Label mSection1 @Label (255 chars max) Product/Description/Custo No 1 Text Node Product Custom Section 2 Text mSection2 • Included only if the IncludeCustomSections node is present in the ProductQueryRequest Product/Description/Custo Yes* 1 Text Node Product Custom Section 2 Label mSection2 @Label (255 chars max) Product/Description/Intern No 1 Text Node Product Internal Memo al Product/Description/Keyw No 1 Text Node Product Search Keywords ords Product/Created Yes 1 Container Product/Created/DateTime Yes 1 Container Product/Created/DateTime/ Yes 1 Date Node Product Created Date Date (mm/dd/yyyy) Product/Created/DateTime/ Yes 1 Time Node Product Created Time Time (hh:mm) Product/CreatedBy Yes 1 Container Product/CreatedBy/Name Yes 1 Container Product/CreatedBy/Name/ No 1 Text Node (50 Created By User First Name FirstName chars max)

132 Element Xpath Always Occurs Type Description Product/CreatedBy/Name/ No 1 Text Node (50 Created By User Last Name LastName chars max) Product/CreatedBy/Created No 1 Text Node (25 Created By Note ByNote chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Products Product/LastUpd Yes 1 Container Product/LastUpd/DateTime Yes 1 Container Product/LastUpd/DateTime Yes 1 Date Node Product Last Updated Date /Date (mm/dd/yyyy) Product/LastUpd/DateTime Yes 1 Time Node Product Last Updated Time /Time (hh:mm) Product/LastUpdBy Yes 1 Container Product/LastUpdBy/Name Yes 1 Container Product/LastUpdBy/Name/ No 1 Text Node (50 Last Updated By User First Name FirstName chars max) Product/LastUpdBy/Name/ No 1 Text Node (50 Last Updated By User Last Name LastName chars max) Product/LastUpdBy/LastU No 1 Text Node (25 Last Updated By Note pdByNote chars max) • The list of available values for this field can be viewed in the OMS Advanced Search Options for Products Product/Overrides No 1 Container Product Override information • Included only if the IncludeOverrides node is present in the ProductQueryRequest Product/Overrides/QuickB No 1 Text Node QuickBooks Sales Account Value ookSalesAccount (100 chars max) Product/Overrides/Review No 1 Integer Node Review Reminder Time Delay in Days (optional) ReminderDelay • Included only if Use Review Reminders is enabled in Reviews/Setup/Review Reminders in the OMS and the product Review Reminder Time Delay has a value Product/Overrides/Individu No 1 Container Included if an Individual Shipping Package alShippingPackage Override is defined at the Product level Product/Overrides/Individu No 1 Numeric Node Shipping Package Length (in inches) alShippingPackage/Length Product/Overrides/Individu No 1 Numeric Node Shipping Package Width (in inches) alShippingPackage/Width Product/Overrides/Individu No 1 Numeric Node Shipping Package Height (in inches) alShippingPackage/Height Product/Overrides/Individu No 1 Numeric Node Weight of Dry Ice for Package (in pounds) alShippingPackage/DryIce Weight Product/Overrides/Individu No 1 Text Node Shipping Package Type as defined by UPS alShippingPackage/UPSPa ckaging Product/Overrides/Individu No 1 Text Node Shipping Package Type as defined by FedEx alShippingPackage/FedExP ackaging Product/Overrides/Individu No 1 Text Node Shipping Package Type as defined by USPS alShippingPackage/USPSP ackaging

133 Element Xpath Always Occurs Type Description Product/Overrides/Alcohol No 1 Container Included if an Alcohol Designation Override is Designation defined at the Product level Product/Overrides/Alcohol Yes* 1 Text Attribute Alcohol Designation Override (Yes, No, or Designation @Enabled Default) Product/Overrides/Alcohol Yes* 1 Numeric Node Liters of Alcohol being Shipped Designation/Liters Product/Overrides/Alcohol Yes* 1 Text Node (16 Type of Alcohol being Shipped Designation/Type chars max) Product/Overrides/Alcohol Yes* 1 Integer Node Number of Alcohol Packages being Shipped Designation/PackingUnits Product/Overrides/Alcohol Yes* 1 Text Node (6 Alcohol Package Type Designation for Alcohol Designation/PackingType chars max) being Shipped

Product/Overrides/ShipCo No 1 Container If ShipCompliant processing is enabled mpliant (Settings/Compatible Software/ShipCompliant), this field overrides the default settings for ShipCompliant web service. Product/Overrides/ShipCo Yes* 1 Text Node (50 ShipCompliant Product Key mpliant/ProductKey chars max) Product/Overrides/ShipCo Yes* 1 Text Node (50 ShipCompliant Brand Key mpliant/BrandKey chars max) Product/Overrides/VinNow No 1 Container Included only if integrated with VinNow (Settings/Compatible Software/VinNow in the OMS) Product/Overrides/VinNow No 1 Text Node (50 VinNow Product Key /ProductKey chars max) Product/Overrides/VinNow No 1 Text Node (50 VinNow Brand Key /BrandKey chars max) Product/Overrides/Inventor No 1 Integer Node If Inventory Control is on (Settings/Site yWarningLevel Options/Inventory Control in the OMS), this field overrides the default Warning Level, which is the inventory level at which a notification e- mail is sent to the Primary Contact and any Secondary Contacts as defined at the User Level Product/Overrides/Depletio No 1 Text Node (20 Product Depletion Status (Preordered, nStatus chars max) Backordered, Sold Out, Discontinued) Product/Overrides/Expecte No 1 Integer Node The number of days within which the product is dShippingDays expected to ship (when in stock) • Applicable only if Expected Shipping Time is on at Settings/Site Options/Expected Shipping Time in the OMS • Calendar days, business days, or shipping days may apply, depending on the value selected at Settings/Site Options/Expected Shipping Time/ Product/Overrides/InStock No 1 Text Node Product In Stock Message Message (200 chars • If Expected Shipping Time is on (Settings/Site max) Options/Expected Shipping Time in the OMS) this field overrides the default In Stock Message Product/Overrides/Sharing No 1 Currency Product Sharing Discount Amount Discount Node Product/Overrides/Sharing Yes* 1 Text Attribute Product Sharing Discount Type (Amount or Discount @Type (7 chars max) Percent)

134 Element Xpath Always Occurs Type Description Product/Overrides/Country No 1 Text Node (2 Product Sharing Country Of Origin Code OfOriginCode chars max) • See Chapter 2 for Country Code information Product/Overrides/Unavail No 1 Container Product Unavailable Option ableOption • Included only if the Product Unavailable Option is not set to Default Message Product/Overrides/Unavail Yes* 1 Text Attribute Product Unavailable Option Type (Default, 301, ableOption @Option (7 chars max) 302, or Custom) Product/Overrides/Unavail No 1 Text Node Product Unavailable Custom Message ableOption/CustomMessag • Included only if the Product Unavailable Option e Type is Custom Product/Overrides/Unavail No 1 URL Node Product Unavailable Redirect To ableOption/RedirectTo • Included only if the Product Unavailable Option Type is 301 or 302 Product/EMailAddenda No 1 Container Product EMail Addenda • Included only if the IncludeEmailAddenda node is present in the ProductQueryRequest and the Product includes at least one E-Mail Addendum Product/EMailAddenda/Or No 1 Text Node Order Confirmation E-Mail Addendum derConfirmation Product/EMailAddenda/Or Yes* 1 Text Attribute Order Confirmation E-Mail Position (Above or derConfirmation @Position (5 chars max) Below) Product/EMailAddenda/Or No 1 Text Node Shipped E-Mail Addendum derShipped Product/EMailAddenda/Or Yes* 1 Text Attribute Shipped E-Mail Addendum Position (Above or derShipped @Position (5 chars max) Below) Product/EMailAddenda/Or No 1 Text Node Update E-Mail Addendum derUpdated Product/EMailAddenda/Or Yes* 1 Text Attribute Update E-Mail Addendum Position (Above or derUpdated @Position (5 chars max) Below) Product/MarketplaceOptio No 1 Container Product Marketplace Options ns • Included only if the IncludeMarketplaceOptions node is present in the ProductQueryRequest and the Product includes at least one Marketplace Option Product/MarketplaceOptio No 1 Text Node 10 Product Format (Soft Cover, Hard Cover, Audio ns/Format chars max) Book, eBook, CD, DVD, Cassette, Vinyl, VHS) Product/MarketplaceOptio No 1 Container Included if a Manufacturer is defined at the ns/Manufacturer Product level Product/MarketplaceOptio No 1 Text Node (50 Product Manufacturer Name ns/Manufacturer/Manufact chars max) urerName Product/MarketplaceOptio No 1 Text Node (50 Product Manufacturer Part Number ns/Manufacturer/Manufact chars max) urerPartNo Product/MarketplaceOptio No 1 Text Node (14 Product UPC Number ns/UPC chars max) Product/MarketplaceOptio No 1 Text Node (13 Product ISBN Number ns/ISBN chars max) Product/MarketplaceOptio No 1 Text Node (8 Product Gender (Male, Female, Unisex) ns/Gender chars max) Product/MarketplaceOptio No 1 Text Node (5 Product Age Group (Newborn, Infant, Toddler, ns/AgeGroup chars max) Kids, Adult)

135 Element Xpath Always Occurs Type Description Product/MarketplaceOptio No 1 Text Node (30 Product Size ns/Size chars max) Product/MarketplaceOptio No 1 Text Node (30 Product Color ns/Color chars max) Product/MarketplaceOptio No 1 Text Node (3 Product Size System (US, UK, EU, DE, FR, JP, ns/SizeSystem chars max) CN, IT, BR, MEX, AU) Product/MarketplaceOptio No 1 Text Node (12 Product Size Type (Regular, Petite, Plus, Big and ns/SizeType chars max) Tall, Maternity) Product/MarketplaceOptio No 1 Text Node (11 Product Condition (New, Used, Refurbished) ns/Condition chars max) Product/MarketplaceOptio No 1 Container Product Alcohol Options ns/AlcoholOptions • Included only if the IncludeMarketplaceOptions node is present in the ProductQueryRequest and the Product includes at least one Alcohol Option Product/MarketplaceOptio No 1 Date Node Product Vintage Year ns/AlcoholOptions/Vintage (yyyy) Year Product/MarketplaceOptio No 1 Text Node (40 Product Region ns/AlcoholOptions/Region chars max) Product/MarketplaceOptio No 1 Text Node (30 Product Sub-Region ns/AlcoholOptions/SubReg chars max) ion Product/MarketplaceOptio No 1 Percent Node Product Alcohol By Volume ns/AlcoholOptions/Alcohol ByVolume Product/MarketplaceOptio No 1 Text Node (20 Product Varietal Composition (Barbera, Cabernet ns/AlcoholOptions/Varietal chars max) Franc, Cabernet Sauvignon, Canaiolo, Carignan, Composition Carmenere, Chardonnay, Chenin Blanc, Garnacha, Graciano, Grenache, Gruner Veltliner, Macabeo, Malbec, Mazuelo, Merlot, Monastrell, Montepulciano, Mourvedre, Nero D'Avola, Palomino, Petit Verdot, Pinot Grigio, Pinot Noir, Pinotage, Riesling, Sangiovese, Sauvignon Blanc, Semillon, Shiraz, Spatburgunder, Syrah, Tannat, Tempranillo, Trebbiano, Verdejo, Verdicchio, Viognier, Viura, Weissburgunder, Zinfandel, Zweigelt) Product/MarketplaceOptio No 1 Text Node (10 Body Description (Red Wine, White Wine, Rose) ns/AlcoholOptions/BodyD chars max) escription Product/SearchEngineMark No 1 Container Product Search Engine Options up • Included only if the IncludeSearchEngineMarkup node is present in the ProductQueryRequest and the Product includes at least one Search Engine Option Product/SearchEngineMark No 1 Text Node HTML Title Tag up/TitleTag (120 chars max) Product/SearchEngineMark No 1 Text Node Image Alt Tag up/ImageAltTag (120 chars max) Product/SearchEngineMark No 1 Text Node Meta Description up/MetaDescription Product/SearchEngineMark No 1 Text Node Meta Keywords up/MetaKeywords

136 Element Xpath Always Occurs Type Description Product/RelatedProducts No 1 Container Related Product information • Included only if the IncludeRelate Products node is present in the ProductQueryRequest and the Product has Related Products Product/RelatedProducts/R No 1 + Container elatedProduct Product/RelatedProducts/R Yes* 1 Text Node Related Product Name elatedProduct/Product (100 chars max) Product/RelatedProducts/R Yes* 1 Text Node (50 Related Product SKU Number elatedProduct/SKU chars max) Product/RelatedProducts/R Yes* 1 Text Node (50 Related Product Category elatedProduct/Category chars max) • Subcategories appear as category paths separated by " / " (e.g. Golf Clubs / Putters). Note that there is a space on either side of the forward slash Product/RelatedProducts/R Yes* 1 Text Node Related Product Relationship Value elatedProduct/Relationship (255 chars max) Product/AutomaticAddTrig No 1 Container Automatic Add Triggers gers Product/AutomaticAddTrig Yes* 1 + Container gers/Trigger Product/AutomaticAddTrig Yes* 1 Text Attribute Automatic Add Trigger Type (Category, Coupon, gers/Trigger @Type Product, or QueryString) Product/AutomaticAddTrig No 1 Text Node Automatic Add Trigger Name gers/Trigger/Name • Included if the Automatic Add Trigger Type is Category, Coupon, or Product Product/AutomaticAddTrig No 1 Text Node Automatic Add Trigger URL Query String gers/Trigger/Parameter Parameter • Included if the Automatic Add Trigger Type is QueryString Product/AutomaticAddTrig No 1 Text Node Automatic Add Trigger URL Query String Value gers/Trigger/Value • Included if the Automatic Add Trigger Type is QueryString Product/AutomaticAddTrig No 1 Numeric Node Automatic Add Trigger Trigger Quantity gers/Trigger/TriggerQty • Included if the Automatic Add Trigger Type is Category or Product Product/AutomaticAddTrig Yes 1 Numeric Node Automatic Add Trigger Add Qty gers/Trigger/AddQty Product/InventoryKits No 1 Container Inventory Kit Products/SKU's • Included if the product contains an Inventory Kit Product/InventoryKits/KitP Yes* 1 + Container roduct Product/InventoryKits/KitP Yes* 1 Text Attribute Inventory Kit SKU Number roduct @SKU • Included if the Inventory Kit is defined as a SKU Kit Product/InventoryKits/KitP Yes* 1 Text Node Inventory Kit Product Name roduct/Product Product/InventoryKits/KitP Yes 1 Text Attribute Indicates whether the Inventory Kit Product is roduct @Level defined at the Product Level or the SKU Level Product/InventoryKits/KitP No 1 Text Node Inventory Kit Product SKU number roduct/SKU

137 Element Xpath Always Occurs Type Description Product/InventoryKits/KitP No 1 Text Node Inventory Kit Product Attribute Value roduct/Attribute • Included if the Inventory Kit Product is defined at the SKU Level Product/InventoryKits/KitP Yes* 1 Text Attribute Inventory Kit Product Attribute Name roduct/Attribute @Name • Included if the Inventory Kit Product is defined at the SKU Level Product/InventoryKits/KitP Yes* 1 Text Node Inventory Kit Product Category Name roduct/Category • Subcategories appear as category paths separated by " / " (e.g. Golf Clubs / Putters). Note that there is a space on either side of the forward slash Product/InventoryKits/KitP No 1 Integer Node Inventory Kit Product Inventory Value roduct/Inventory • Included only if Inventory Control is enabled at Settings/Site Options/Inventory Control in the OMS Product/InventoryKits/KitP Yes* 1 Integer Node Inventory Kit Product Quantity Value roduct/Quantity Product/ProductReviews No 1 Container Product Review information • Included only if the IncludeReviews node is present in the ProductQueryRequest and the product has Reviews Product/ProductReviews/Pr No 1 + Container oductReview Product/ProductReviews/Pr Yes* 1 Integer Product Review Number oductReview @No Attribute Product/ProductReviews/Pr Yes* 1 Container oductReview/ReviewDate Product/ProductReviews/Pr Yes* 1 Container oductReview/ReviewDate/ DateTime Product/ProductReviews/Pr Yes* 1 Date Node Product Review Date oductReview/ReviewDate/ (mm/dd/yyyy) DateTime/Date Product/ProductReviews/Pr Yes* 1 Text Node Product Review Title oductReview/Title (200 chars max) Product/ProductReviews/Pr Yes* 1 Text Node Product Review Value oductReview/Review Product/ProductReviews/Pr Yes* 1 Integer Node Product Review Rating oductReview/Rating Product/ProductQuestions No 1 Container Product Question information • Included only if the Include Questions node is present in the ProductQueryRequest and there are Questions about the Product Product/ProductQuestions/ Yes* 1 + Container ProductQuestion Product/ProductQuestions/ Yes* 1 Integer Product Question Number ProductQuestion @No Attribute Product/ProductQuestions/ Yes* 1 Container ProductQuestion/Question Date Product/ProductQuestions/ Yes* 1 Container ProductQuestion/Question Date/DateTime

138 Element Xpath Always Occurs Type Description Product/ProductQuestions/ Yes* 1 Date Node Product Question Date ProductQuestion/Question (mm/dd/yyyy) Date/DateTime/Date Product/ProductQuestions/ Yes* 1 Text Node Question Value ProductQuestion/Question Product/ProductQuestions/ No 1 Container ProductQuestion/Response Date Product/ProductQuestions/ Yes* 1 Container ProductQuestion/Response Date/DateTime Product/ProductQuestions/ Yes* 1 Date Node Date of Product Question Response ProductQuestion/Response (mm/dd/yyyy) Date/DateTime/Date Product/ProductQuestions/ No 1 Text Node Response to Product Question ProductQuestion/Response NextPage No 1 Empty Node Indicates the existence of a subsequent page of Products

ProductQueryRequest Example (without CurrentStatus node)

fairway Nk5\#/K#0:{!C:SfqVs0 Caddyshack DVD

ProductQueryReply Example (without CurrentStatus node)

Caddyshack DVD ff036 36 0.00 19.99 1.00 989 http://www.nexternal.com/fairway/images/caddyshack-dvd-thumb.gif

http://www.nexternal.com/fairway/images/caddyshack-dvd-main.jpg
http://www.nexternal.com/fairway/images/caddyshack-dvd-large.jpg Weekly Specials

139 Normal CaddyShack Industries FirstFairway All All http://store.firstfairway.com/caddyshack-dvd-p36.aspx http://store.firstfairway.com/caddyshack-dvd-p36direct.aspx Tee off with a foursome of the big screen's funniest clowns as the greens keeper starts World War III against a gopher during a sidesplitting round of fairway foolishness.  Caddyshack on DVD is a can't miss for any golfer's movie collection. 11/20/2002 Demonstration User 09/10/2012 addtocart true 1

ProductQueryReply Schema (with CurrentStatus node) Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Attribute Client's Account Name (e.g. fairway) @Page Yes 1 Integer Page number of query results Attribute

140 Element Xpath Always Occurs Type Description CurrentStatus No 1 Container Current Status of Products that fall within the specified query range • Included only if a query range is specified and the CurrentStatus node is present in the ProductQueryRequest CurrentStatus/Product Yes 1 - Text Node Product Status (Normal, Preordered, 2000 Backordered, Sold Out, or Discontinued) CurrentStatus/Product Yes 1 Integer Product Number @No Attribute CurrentStatus/Product Yes 1 Text Attribute Product Name @Name CurrentStatus/Product Yes 1 Text Attribute Product SKU (if assigned) @SKU CurrentStatus/Product Yes 1 Boolean SKU-level inventory status (True if all SKU's @AllSKUsAvailable Attribute have one or more items in inventory, False if one or more SKU items has an inventory level less than 1) • Included only if inventory is assigned at the SKU level NextPage No 1 Empty Node Indicates the existence of a subsequent page of Products

ProductQueryRequest Example (with CurrentStatus node)

fairway Nk5\#/K#0:{!C:SfqVs0 07/01/2007 07/15/2007

ProductQueryReply Example (with CurrentStatus node)

Discontinued Normal Discontinued

141 Normal Normal Normal Normal Normal Normal

142 13: ProductUpdate

The ProductUpdateRequest is used to add or update product information in the OMS. This allows you to "import" existing product data from an external system.

When updating existing product information, products may be identified by Product Name, Product SKU, or Product Number. You can add or update product information and settings, including Product Descriptions, Product Images and Audio, Product Allocation, Product Overrides, Marketplace Options, Search Engine Options, Price Tiers, Product Attributes and Options, Product SKU's, Write-In Attributes, Product Specifications, Product Categories, and Related Products.

Product Images and Audio can be imported from an external website by specifying the file's URL via the appropriate node. The file is then copied and stored on our servers in the client’s images folder ( http://www.nexternal.com/ AccountName /images/). If the image or audio file has already been uploaded to the client's images folder via the OMS or with a prior ProductUpdate just reference the filename and extension to include it in a ProductUpdateRequest.

Please note that adding or removing a Product Attribute, or removing a Product Option, will cause the removal of any SKU items impacted by the change. However, restoring the change on the Attribute or Option level will likewise restore the affected SKU Items. Please note also that the ProductUpdateRequest may not be used to delete Products.

For each successful add and/or update the ProductUpdateReply will return a Product container with the Product Name, Product Number, a Status container outlining the general operations that were performed, and any warnings or logical errors (e.g. Product Taxable has been set to "State" but no taxable states have been defined) that occurred during the update process.

For any product with Enhanced Inventory enabled, updating inventory via Product Update only updates the available quantity, and cannot be used to update the available quantity for Kits or SKU Kits. Please use the Inventory Update tool to perform comprehensive inventory adjustments for Enhanced Inventory.

The ForceProceed node in the ProductUpdateRequest forces the tool to proceed with valid product updates even if there is invalid update request. In such a scenario the corresponding Product container for the invalid request(s) in the ProductUpdateReply will contain the Error XML elements specified in Chapter 15 (Errors) in lieu of the elements specified in the ProductUpdateReply schema. If the ForceProceed node is not included in the ProductUpdateRequest any invalid Product container will result in the failure of all subsequent Product container(s) in the request.

A single ProductUpdateRequest may contain no more than 15 Product containers, and each Product container may contain no more than 100 SKUItem containers. If you wish

143 to update more than 15 products or a product with more than 100 SKU items you must do so in an iterative manner.

ProductUpdateRequest URL: https://www.nexternal.com/shared/xml/productupdate.rest

ProductUpdateRequest Schema Element Xpath Required Occurs Type Description Credentials Yes 1 Container Note that the supplied Credentials must contain the Client's XML Key, or a UserName and Password, but not both Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/Key No 1 Text Node (20 Client's XML Key chars max) Credentials/UserName No 1 Text Node (50 XML Tools User Name chars max) • See Users / New Users / Access Level in the OMS for more information about the XML Tools Access Level Credentials/Password No 1 Text Node (50 XML Tools User Password chars max) Product Yes 1 - 15 Container Product @Mode Yes 1 Text Attribute Update Mode (Add or Update) (6 chars max) Product @MatchingField No 1 Text Attribute Indicates which node in the query will be used to (10 chars max) match an existing product (ProductNo, ProductName, or ProductSKU) • Optional if Mode="Add"; If this field is included and a product match is found, the existing product is used, and Mode switches to Update • Required if Mode="Update" Product/ProductNo No 1 Integer Node Product Number (for matching purposes) • Required if MatchingField="ProductNo" • If Mode="Add" and a product match is found, the Mode will be changed to "Update" Product/ProductName No 1 Text Node Product Name (100 chars • Required if MatchingField="ProductName" max) • If Mode="Add" and a product match is found, the Mode will be changed to "Update" Product/ProductSKU No 1 Text Node (50 Product-Level SKU chars max) • Required if MatchingField="ProductSKU" • If Mode="Add" and a product match is found, the Mode will be changed to "Update" Product/COGS No 1 Currency Cost Of Goods Sold Node • Include only if COGS is defined at the Product level Product/Pricing No 1 Container For Pricing at the Product level only Product/Pricing @Display No 1 Text Attribute Display Product Price (Yes or No; default value: (3 chars max) Yes) Product/Pricing/Level No 1 Text Node (8 Product Pricing Level (Single, Category, Volume, chars max) or Bid; default value: Single)

144 Element Xpath Required Occurs Type Description Product/Pricing/Detail No 1 Text Node (5 Product Price Detail level (None or Table; default chars max) value: Table) Product/Pricing/Price Yes* 1 + Container Product/Pricing/Price/Qty No 1 Integer Node Price Quantity level (for Category or Volume Pricing) • If Price/Qty and Price/Erase are specified the Category or Volume price matching Price/Qty will be removed • If Price/Qty is not specified and Price/Erase is specified all pricing information for Category or Volume will be removed Product/Pricing/Price/Cust No 1 Text Node Customer Type Name (from Customer/Types in omerType the OMS or "Default" for the default Product Price) • If Price/Qty, Price/CustomerType, and Price/Erase are specified the price matching Price/Qty and Price/CustomerType will be removed • If Price/Qty is not specified and both Price/CustomerType and Price/Erase are specified all quantity and pricing information that matches Price/CustomerType will be removed Product/Pricing/Price/Disc No 1 Currency/Perc Price Discount value ount ent Node Product/Pricing/Price/Disc Yes* 1 Text Attribute Indicates type of Price Discount specified ount @Option (8 chars max) (Amount or Percent) Product/Pricing/Price/Amo Yes* 1 Currency Product Price unt Node Product/Pricing/Price/Erase No 1 Empty Node Removes prices that match the Pricing Level, the Price/Qty, and/or the Price/CustomerType • If Pricing Level is "Single" and neither Price/Qty or Price/CustomerType is specified all pricing information for the Product will be removed • Ignored if Mode="Add" Product/Weight No 1 Numeric Node Product Weight (in pounds) • Include only if Weight is defined at the Product level Product/OrderQty No 1 Container For Minimum / Maximum Order Quantities at the Product level only Product/OrderQty/MinQty No 1 Integer Node Minimum Order Quantity Product/OrderQty/MaxQty No 1 Integer Node Maximum Order Quantity Product/OrderQty/Erase No 1 Empty Node Removes the Minimum and Maximum Order Quantities • Ignored if Mode="Add" Product/ExpectedInStock No 1 Container For Expected In Stock Date at the Product level only • Applicable only if the Product Status is Backordered, Preordered, or Sold Out; and Expected Shipping Time is in use (Settings/Site Options in the OMS) Product/ExpectedInStock/ Yes* 1 Container DateTime Product/ExpectedInStock/ Yes* 1 Date Node Expected In Stock Date DateTime/Date (mm/dd/yyyy)

145 Element Xpath Required Occurs Type Description Product/ExpectedInStock/E No 1 Empty Node Removes the Product Expected In Stock date rase • Ignored if Mode="Add" Product/Inventory No 1 Container For Inventory defined at the Product level only • Include only if Inventory Control is enabled at Settings/Site Options/Inventory Control in the OMS, and Inventory Level is None, Product, or Kit Product/Inventory/Level No 1 Text Node (7 Product Inventory Level (None, Product, or Kit; chars max) default value: Product) Product/Inventory/Qty No 1 Integer Node Product Inventory quantity (default specified at Settings/Inventory Control in the OMS) Product/Inventory/Inventor No 1 Container For Inventory Level of Kit yKit Product/Inventory/Inventor Yes* 1 + Container yKit/KitProduct Product/Inventory/Inventor Yes* 1 Text Node Inventory Kit Product Name yKit/KitProduct/ProductNa (100 chars me max) Product/Inventory/Inventor No 1 Text Attribute Inventory Kit SKU-level SKU Number (for yKit/KitProduct/ProductNa (50 chars max) matching purposes) me @SKU Product/Inventory/Inventor No 1 Text Node (50 Inventory Kit Product-level SKU number (for yKit/KitProduct/ProductSK chars max) matching purposes) U Product/Inventory/Inventor No 1 + Text Node (50 Inventory Kit Product Attribute Value (for yKit/KitProduct/Attribute chars max) matching purposes) Product/Inventory/Inventor No 1 Text Attribute Inventory Kit Product Attribute Name (for yKit/KitProduct/Attribute (50 chars max) matching purposes) @Name Product/Inventory/Inventor Yes* 1 Integer Node Inventory Kit Product quantity yKit/KitProduct/Qty Product/Inventory/Inventor No 1 Empty Node Remove the Product Inventory Kit that matches yKit/KitProduct/Erase KitProduct/ProductName • Ignored if Mode="Add" Product/Inventory/Inventor No 1 + Container Used to set the available inventory quantity by yLocation Location • Include only if Enhanced Inventory is enabled and active for the product Product/Inventory/Inventor Yes* 1 Text Node (50 Inventory Location Internal Name yLocation/Location chars max) Product/Inventory/Inventor Yes* 1 Text Attribute Inventory Location Type (S or P), where "S" yLocation/Location @Type (1 char max) indicates a Shipping location and "P" indicates a Pickup location Product/Inventory/Inventor Yes* 1 Integer Node Available inventory at this Location yLocation/Qty Product/InventoryReservati No 1 Container For Inventory Reservation on • Applicable only if the product has Enhanced Inventory enabled Product/InventoryReservati No 1 Integer Node Inventory Reservation (in minutes) on/Minutes Product/InventoryReservati No 1 Empty Node Remove the Inventory Reservation on/Erase

146 Element Xpath Required Occurs Type Description Product/ShippingRates No 1 Container For overriding the Shipping Rates at the Product level; or defining Shipping Rates at the Product level (Settings/Shipping in the OMS) when Shipping Cost Calculation is UNIT Product/ShippingRates/Era No 1 Empty Node Removes all Shipping Option overrides for the se Product • Ignored if Mode="Add" Product/ShippingRates/Zon No 1 + Container e Product/ShippingRates/Zon Yes* 1 Integer Shipping Zone Number (1 – 100) e @ID Attribute • Zones are defined at Settings Shipping in the OMS Product/ShippingRates/Zon No 1 Empty Node Removes all Shipping Option overrides that e/Erase match ShippingRates/Zone @ID • Ignored if Mode="Add" Product/ShippingRates/Zon No 1 + Container e/ShippingOption Product/ShippingRates/Zon Yes* 1 Text Node Shipping Method e/ShippingOption/ShipMet hod Product/ShippingRates/Zon No 1 Currency Shipping Rate e/ShippingOption/ShipRate Node • Required unless the Erase node is present Product/ShippingRates/Zon No 1 Empty Node Removes the Shipping Option override that e/ShippingOption/Erase matches ShippingOption/ShipMethod • Ignored if Mode="Add" Product/Allocation No 1 Container Product/Allocation No 1 Text Attribute Enable or disable Product Allocation (Yes or No; @Enabled (3 chars max) default value: Yes, if container is present) Product/Allocation/StartDa No 1 Container te Product/Allocation/StartDa Yes* 1 Container te/DateTime Product/Allocation/StartDa Yes* 1 Date Node Allocation Start Date te/DateTime/Date (mm/dd/yyyy) Product/Allocation/EndDat No 1 Container e Product/Allocation/EndDat Yes* 1 Container e/DateTime Product/Allocation/EndDat Yes* 1 Date Node Allocation End Date e/DateTime/Date (mm/dd/yyyy) Product/Allocation/Custom No 1 Container erTypes Product/Allocation/Custom Yes* 1 + Container erTypes/CustomerType Product/Allocation/Custom Yes* 1 Text Node (20 Product-level Allocation Customer Type Name erTypes/CustomerType/Na chars max) (from Customer/Types in the OMS) me Product/Allocation/Custom Yes* 1 Integer Node Product-level Allocation Quantity erTypes/CustomerType/Qt y Product/Images No 1 Container For Images that are defined at the Product level, or if the Product uses an Image Gallery Product/Images/Audio No 1 Text/URL Indicates either the name of an existing audio file Node (Text Node) or the URL of an external audio file to import (URL Node)

147 Element Xpath Required Occurs Type Description Product/Images/Audio No 1 Text Attribute Audio Clip Repetition (Once, Continuous, or an @Repetition (10 chars max) integer value; default value: Once) Product/Images/Thumbnail No 1 Text/URL Indicates either the name of a existing image file Node (Text Node) or the URL of an external image file to import (URL Node) Product/Images/Thumbnail No 1 Integer Image Scale size (in pixels) @Scale Attribute Product/Images/Thumbnail No 1 Text Attribute Image Scale Dimension (None, Width, or Height) @Dimension (6 chars max) • Required if Thumbnail @Scale is used • Use Dimension="None" to remove an existing Image Scale Product/Images/Main No 1 Text/URL Indicates either the name of a existing image file Node (Text Node) or the URL of an external image file to import (URL Node) Product/Images/Main No 1 Integer Image Scale size (in pixels) @Scale Attribute Product/Images/Main No 1 Text Attribute Image Scale Dimension (None, Width, or Height) @Dimension (6 chars max) • Required if Main @Scale is used • Use Dimension="None" to remove an existing Image Scale Product/Images/Large No 1 Text/URL Indicates either the name of a existing image file Node (Text Node) or the URL of an external image file to import (URL Node) Product/Images/Large No 1 Integer Image Scale size (in pixels) @Scale Attribute Product/Images/Large No 1 Text Attribute Image Scale Dimension (None, Width, or Height) @Dimension (6 chars max) • Required if Large @Scale is used • Use Dimension="None" to remove an existing Image Scale Product/Images/Gallery No 1 Container Product/Images/Gallery/Im No 1 + Container age Product/Images/Gallery/Im No 1 Text/URL Indicates either the name of a existing image file age/Thumbnail Node (Text Node) or the URL of an external image file to import (URL Node) Product/Images/Gallery/Im No 1 Text/URL Indicates either the name of a existing image file age/Main Node (Text Node) or the URL of an external image file to import (URL Node) Product/Images/Gallery/Im No 1 Text/URL Indicates either the name of a existing image file age/Large Node (Text Node) or the URL of an external image file to import (URL Node) Product/Images/Gallery/Im No 1 Empty Node Indicates that the Gallery Image is the default age/Default Product/Images/Gallery/Im No 1 Empty Node Removes the Product Gallery images that match age/Erase Gallery/Image/Thumbnail, Gallery/Image/Main, and Gallery/Image/Large • Ignored if Mode="Add" Product/Images/Erase No 1 Empty Node Remove all Product Audio, Image, and Gallery Image files • Ignored if Mode="Add" Product/Images/Thumbnail No 1 Text Node (3 Display only the Product Thumbnail in the Only chars max) Product List (Yes or No; default value: No) Product/Categories No 1 Container

148 Element Xpath Required Occurs Type Description Product/Categories/Categor Yes* 1 + Container At least one Category is required if Mode="Add", y and one Category/Default node must be present in the query Product/Categories/Categor Yes* 1 Text Node Product Category Name y/Name • Subcategories appear as category paths separated by " / " (e.g. Golf Clubs / Putters). Note that there is a space on either side of the forward slash Product/Categories/Categor No 1 Text Node (20 Product Visibility (All, BtoB, BtoC, Internal, y/Visibility chars max) None, or Type) Product/Categories/Categor No 1 Text Attribute For Product Visibility of Type, this attribute y/Visibility @Types contains a comma-delimited list of Customer Types with visibility Product/Categories/Categor No 1 Integer Node Order in which product is listed in the Category y/Order (1 to 100000000; default value: 1) Product/Categories/Categor No 1 Empty Node Include to create a new category, subcategory, or y/AllowAdd category tree if no match is found with an existing category and/or subcategory • As a general rule this node should only be used with new products that do not have an existing category in the OMS • Visibility defaults to "All" for top-level categories, and is inherited for child (sub) categories. Product/Categories/Categor No 1 Empty Node Indicates the Primary Category for the Product y/Primary Product/Categories/Categor No 1 Empty Node Removes the Product Category that matches the y/Erase Category/Name • Ignored if Mode="Add" Product/Attributes No 1 Container For defining Attributes and Options used to create SKU-level Products Product/Attributes/Attribut Yes* 1 + Container e Product/Attributes/Attribut Yes* 1 Text Attribute Product Attribute Name e @Name (50 chars max) Product/Attributes/Attribut No 1 Text Attribute Specifies the name of an existing Attribute that e/Name @Overwrites (50 chars max) this Attribute should overwrite • If you rename an attribute, the change may affect existing orders. Thus, if a product has orders, it is preferable to remove obsolete attributes and add new ones as needed, than to rename existing ones. • Ignored if Mode="Add" Product/Attributes/Attribut Yes* 1 + Text Node (50 Product Attribute Option value (i.e. the name of e/Option chars max) the attribute option) Product/Attributes/Attribut No 1 Text Attribute Gallery Main Image filename and file extension e/Option (50 chars max) as displayed in the OMS Products / Images / Edit @GalleryMainImage Images and Audio screen • Applicable only if the Product uses an Image Gallery and this Option is associated with an existing Gallery Main Image from the Product Image Gallery Product/Attributes/Attribut No 1 Integer Specifies the order in which options and SKUs e/Option @Order Attribute are displayed (low to high)

149 Element Xpath Required Occurs Type Description Product/Attributes/Attribut No 1 Text Attribute Specifies the name of an existing Option that this e/Option @Overwrites (50 chars max) Option should overwrite • If you rename an option, the change may affect existing orders. Thus, if a product has orders, it is preferable to remove obsolete options and add new ones as needed, than to rename existing ones. • Ignored if Mode="Add" Product/Attributes/Attribut No 1 Empty Node Removes the Product Attribute or Attribute e/Erase Option that matches Attribute/Name and any declared Attribute/Option(s) • Ignored if Mode="Add" Product/WriteIns No 1 Container Product/WriteIns/WriteIn Yes* 1 + Container Product/WriteIns/WriteIn Yes* 1 Text Attribute Write-In Attribute Name @Name (50 chars max) • Required if Mode="Add" Product/WriteIns/WriteIn/ No 1 Text Attribute Specifies the name of an existing Write-In Name @Overwrites (50 chars max) Attribute that this Write-In Attribute should overwrite • Ignored if Mode="Add" Product/WriteIns/WriteIn/ Yes* 1 Text Node (10 Write-In Attribute Type (Text Box, Text Area, EntryType chars max) Checkbox, or Select Box) • Required if Mode="Add" Product/WriteIns/WriteIn/ No 1 Integer Number of Lines for Text Area Write-In Attribute EntryType @Lines Attribute • Applicable only if EntryType is TextArea Product/WriteIns/WriteIn/ No 1 Integer Write-In Maximum Characters EntryType @Length Attribute Product/WriteIns/WriteIn/ Yes* 1 Text Node Write-In Attribute Allowed Values (all types of AllowedValues input; only letters, numbers, and spaces; only letters and numbers; only letters and spaces; only letters; only numbers; only whole numbers; only positive numbers and zero; only positive numbers; only positive whole numbers and zero; only positive whole numbers; none) Product/WriteIns/WriteIn/ Yes* 1 Text Node (10 Write-In Attribute Required Field (Yes, No, or Required chars max) Charge) • Required if Mode="Add" Product/WriteIns/WriteIn/ No 1 Currency Write-In Attribute Additional Charge AdditionalCharge Node • Applicable only if, and required if, WriteIn/Required is "Charge" Product/WriteIns/WriteIn/ No 1 Text Attribute Removes the Write-In Attribute that matches Erase (50 chars max) WriteIn/Name • Ignored if Mode="Add" Product/WriteIns/WriteIn/ No 1 Container Included if EntryType is Select Box Options Product/WriteIns/WriteIn/ Yes* 1 + Text Node Select Box Option Value Option • Value can not contain newline, carriage return or line feed characters Product/Specifications No 1 Container Product/Specifications/Spe Yes* 1 + Container cification Product/Specifications/Spe Yes* 1 Text Node Product Specification Name cification/Name (100 chars max)

150 Element Xpath Required Occurs Type Description Product/Specifications/Spe No 1 Text Node The name of an existing Specification that this cification @Name (100 chars Specification should overwrite @Overwrites max) • Ignored if Mode="Add" Product/Specifications/Spe No 1 Text Node Specification Value cification/Value (255 chars max) Product/Specifications/Spe No 1 Empty Node Removes the Product Specification that matches cification/Erase Specification/Name • Ignored if Mode="Add" Product/Status No 1 Text Node (17 Product Status (Normal, Backordered, chars max) Preordered, Sold Out, or Discontinued; default value: Normal) Product/Vendor No 1 Text Node (75 Vendor Internal Name chars max) Product/ShipFrom No 1 Container Product/ShipFrom/Internal Yes* 1 Text Node (50 Primary Ship-From Internal Name (defaults to the Name chars max) Primary Ship-From Address specified at Settings/Ship-From Addresses in the OMS) Product/AddlShipFroms No 1 Container For specifying Additional Ship-From Locations for this Product • Requires that Directed Fulfillment (Settings/Site Options/Inventory Control in the OMS) be enabled Product/AddlShipFroms/In Yes* 1 + Text Node (50 Additional Ship-From Internal Name ternalName chars max) Product/AddlShipFroms/In No 1 Text Attribute Ship-From Location is Active (Yes or No; default ternalName @Active (3 chars max) value: Yes) Product/PickupLocations No 1 Container Product/PickupLocations No 1 Text Attribute Pickup is enabled for this Product (Yes or No; @EnablePickup (3 chars max) default value: Yes) Product/PickupLocations No 1 Text Attribute Product is designated as Pickup Only (Yes or No; @PickupOnly (3 chars max) default value: No) • If set to "Yes" this indicates the Product cannot be shipped Product/PickupLocations/I Yes* 1 + Text Node (50 Product Pickup Location Internal Name nternalName chars max) Product/PickupLocations/I No 1 Text Attribute Pickup Location is Active (Yes or No; default nternalName @Active (3 chars max) value: Yes) Product/WarehouseLocatio No 1 Text Node Warehouse Location n Product/CustomField1 No 1 Text/Integer/N Product Custom Field #1 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Product/CustomField1 Yes* 1 Text Attribute Product Custom Field #1 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, Yes/No) Product/CustomField2 No 1 Text/Integer/N Product Custom Field #2 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Product/CustomField2 Yes* 1 Text Attribute Product Custom Field #2 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, or Yes/No)

151 Element Xpath Required Occurs Type Description Product/CustomField3 No 1 Text/Integer/N Product Custom Field #3 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Product/CustomField3 Yes* 1 Text Attribute Product Custom Field #3 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, or Yes/No) Product/CustomField4 No 1 Text/Integer/N Product Custom Field #4 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Customer/CustomField4 Yes* 1 Text Attribute Product Custom Field #4 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, or Yes/No) Product/CustomField5 No 1 Text/Integer/N Product Custom Field #5 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Product/CustomField5 Yes* 1 Text Attribute Product Custom Field #5 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, or Yes/No) Product/CustomField6 No 1 Text/Integer/N Product Custom Field #6 Value umeric/Curren • Node Type depends on Field Type of Custom cy/Date Node Field. For Field Type "Yes/No" the value must be either "Yes" or "No" Product/CustomField6 Yes* 1 Text Attribute Product Custom Field #6 Type (Text, Positive @Type (16 chars max) Number, Positive Integer, Currency, Date, or Yes/No) Product/Taxable Yes 1 Text Node (5 Product Taxability (All, None, or State; default chars max) value: None) Product/Taxable @States No 1 Text Attribute For Product Taxability of State, this attribute contains a comma-delimited list of taxable states (e.g. States="CA, NV, NY") Product/Visibility Yes 1 Text Node (20 Product Visibility (All, BtoB, BtoC, Internal, chars max) None, or Type; default value: All) Product/Visibility @Types No 1 Text Attribute For Product Visibility of Type, this attribute contains a comma-delimited list of Customer Types with visibility (from Customer/Types in the OMS) Product /Expedited No 1 Empty Node Indicates that the product requires Expedited Shipping Product /RequiresDryIce No 1 Empty Node Indicates that the product requires Dry Ice Product/Restricted No 1 Empty Node Indicates that the product is Restricted Product/Required No 1 Empty Node Indicates that the product is Required Product/AllowDiscounts No 1 Empty Node Indicates that the product is eligible for Category Discounts, Order Discounts, and Customer Discounts Product/CartAddendumEli No 1 Empty Node Indicates that the product is eligible for the Cart gible Addendum Product/PendingEditEligibl No 1 Empty Node Indicates that the product may be included in a e Pending Edit

152 Element Xpath Required Occurs Type Description Product/AllowDirectCheck No 1 Empty Node Indicates that Direct Checkout is available out • Applicable only if the Direct Checkout option (Settings/Site Option/Direct Checkout in the OMS) is on; Product Visibility is All, BtoC, or Type (with the Default Customer Type included); and Product Status is Normal, Backordered, or Preordered Product/AllowQuestions No 1 Empty Node Indicates that the product allows Questions • Applicable only if Product Questions are allowed at Questions/Setup in the OMS Product/AllowReviews No 1 Empty Node Indicates that the product is Reviewable • Applicable only if Reviews are activated in the OMS Product/LinkElevation No 1 Empty Node Indicates that Product Link Elevation applies to the product Product/CustomerTypeUpg No 1 Text Node Customer Type Upgrade (from Customers/Types rade in the OMS) Product/Description No 1 Container Product/Description/Short No 1 Text Node Product Short Description (255 chars max) Product/Description/Long No 1 Text Node Product Long Description Product/Description/Custo No 1 Text Node Product Custom Section 1 Text mSection1 Product/Description/Custo Yes* 1 Text Node Product Custom Section 1 Label mSection1 @Label (255 chars max) Product/Description/Custo No 1 Text Node Product Custom Section 2 Text mSection2 Product/Description/Custo Yes* 1 Text Node Product Custom Section 2 Label mSection2 @Label (255 chars max) Product/Description/Intern No 1 Text Node Product Internal Memo al Product/Description/Keyw No 1 Text Node Product Search Keywords ords Product/Description/Erase No 1 Empty Node Removes all Product Description values • Ignored if Mode="Add" Product/SKUItems No 1 Container Include only if the Product has SKU-level items Product/SKUItems/PriceDe No 1 Container tail Product/SKUItems/PriceDe Yes* 1 Text Attribute SKU Price Detail level (None, Table, or Message; tail @Detail (7 chars max) default value: Table) Product/SKUItems/PriceDe Yes* 1 Container tail/Messages Product/SKUItems/PriceDe Yes* 1 + Text Node SKU Price Detail Message value tail/Messages/Message • Applicable only if SKUItems/PriceDetail @Detail="Message" Product/SKUItems/PriceDe No 1 Text Attribute SKU Price Detail Message Customer Type for tail/Messages/Message Customer-Based Pricing (from Customer/Types @CustomerType in the OMS or "Default" for the Default PriceDetail Message) Product/SKUItems/SKUIte Yes* 1 - 100 Container m

153 Element Xpath Required Occurs Type Description Product/SKUItems/SKUIte No 1 Text Attribute SKU-level SKU value m @SKU (50 chars max) Product/SKUItems/SKUIte No 1 Container Include the Attribute Name/Value pair(s) only if a m/Attributes Product SKU number has not been assigned • Used for SKU-level matching only Product/SKUItems/SKUIte Yes* 1 + Container SKU Attribute value (i.e. Option Name, as m/Attributes/Attribute defined in Product/Attributes/Attribute/Option) Product/SKUItems/SKUIte Yes* 1 Text Attribute SKU Attribute Name (as defined in m/Attributes/Attribute (50 chars max) Product/Attributes/Attribute) @Name Product/SKUItems/SKUIte No 1 Currency SKU Cost Of Goods Sold m/COGS Node • Include only if COGS is defined at the SKU level Product/SKUItems/SKUIte No 1 Container For Pricing at the SKU level only m/Pricing Product/SKUItems/SKUIte No 1 Text Attribute Display SKU Price (Yes or No; default value: m/Pricing @Display (3 chars max) Yes) Product/SKUItems/SKUIte Yes* 1 + Container m/Pricing/Price Product/SKUItems/SKUIte No 1 Text Node Customer Type Name (from Customer/Types in m/Pricing/Price/CustomerT the OMS or "Default" for the default SKU Price) ype • If Price/CustomerType and Price/Erase are specified all pricing information that matches Price/CustomerType will be removed Product/SKUItems/SKUIte No 1 Currency/Perc SKU Price Discount value m/Pricing/Price/Discount ent Node Product/SKUItems/SKUIte Yes* 1 Text Attribute Indicates type of Price Discount specified m/Pricing/Price/Discount (8 chars max) (Amount or Percent) @Option Product/SKUItems/SKUIte Yes* 1 Currency Price Value m/Pricing/Price/Amount Node Product/SKUItems/SKUIte No 1 Empty Node Removes all pricing information for this SKU m/Pricing/Price/Erase • Ignored if Mode="Add" Product/SKUItems/SKUIte No 1 Text Node (14 SKU UPC Number m/UPC chars max) • Include only if UPC is defined at the SKU level Product/SKUItems/SKUIte No 1 Text Node (50 SKU Manufacturer Part Number m/ManufacturerPartNo chars max) • Include only if Manufacturer Part Number is defined at the SKU level Product/SKUItems/Wareho No 1 Text Node Warehouse Location useLocation • Include only if Warehouse Location is defined at the SKU level Product/SKUItems/SKUIte No 1 Text Node Customer Type Upgrade (from Customers/Types m/CustomerTypeUpgrade in the OMS) • Include only if Customer Type Upgrade is defined at the SKU level Product/SKUItems/SKUIte No 1 Numeric Node SKU Weight (in pounds) m/Weight • Include only if Weight is defined at the SKU level Product/SKUItems/SKUIte No 1 Container For Minimum / Maximum Order Quantities at the m/OrderQty SKU level only Product/SKUItems/SKUIte No 1 Integer Node SKU Minimum Order Quantity m/OrderQty/MinQty Product/SKUItems/SKUIte No 1 Integer Node SKU Maximum Order Quantity m/OrderQty/MaxQty

154 Element Xpath Required Occurs Type Description Product/SKUItems/SKUIte No 1 Empty Node Removes the Minimum and Maximum Order m/OrderQty/Erase Quantities for this SKU • Ignored if Mode="Add" Product/SKUItems/SKUIte No 1 Container Applicable only if both Inventory Control and m/ExpectedInStock Expected Shipping Time are on (Settings/Site Options in the OMS); Inventory is defined at the SKU level; and the SKU’s Inventory is zero or negative Product/SKUItems/SKUIte Yes* 1 Container m/ExpectedInStock/DateTi me Product/SKUItems/SKUIte Yes* 1 Date Node SKU Expected In Stock Date m/ExpectedInStock/DateTi (mm/dd/yyyy) me/Date Product/SKUItems/SKUIte No 1 Empty Node Removes the SKU Expected In Stock date m/ExpectedInStock/Erase • Ignored if Mode="Add" Product/SKUItems/SKUIte No 1 Container For Inventory at the SKU level only m/Inventory • Applicable only if Inventory Control is on (Settings/Site Options in the OMS); and Inventory is defined at the SKU or SKU Kit level Product/SKUItems/SKUIte No 1 Text Node (7 SKU Inventory Level (SKU or SKU Kit; default m/Inventory/Level chars max) value: SKU) Product/SKUItems/SKUIte No 1 Integer Node SKU Inventory quantity (default value is taken m/Inventory/Qty from OMS Settings / Inventory Control / Default Inventory) Product/SKUItems/SKUIte No 1 Container m/Inventory/InventoryKit Product/SKUItems/SKUIte Yes* 1 - 10 Container m/Inventory/InventoryKit/ KitProduct Product/SKUItems/SKUIte Yes* 1 Text Node Inventory SKU Kit Product Name m/Inventory/InventoryKit/ (100 chars KitProduct/ProductName max) Product/SKUItems/SKUIte No 1 Text Attribute Inventory SKU Kit SKU Number m/Inventory/InventoryKit/ (50 chars max) KitProduct/ProductName @SKU Product/SKUItems/SKUIte No 1 Text Node (50 Inventory SKU Kit Product SKU number m/Inventory/InventoryKit/ chars max) KitProduct/ProductSKU Product/SKUItems/SKUIte No 1 + Text Node (50 Inventory SKU Kit Product Attribute Value m/Inventory/InventoryKit/ chars max) KitProduct/Attribute Product/SKUItems/SKUIte No 1 Text Attribute Inventory SKU Kit Product Attribute Name m/Inventory/InventoryKit/ (50 chars max) KitProduct/Attribute @Name Product/SKUItems/SKUIte Yes* 1 Integer Node Inventory SKU Kit Product quantity m/Inventory/InventoryKit/ KitProduct/Qty Product/SKUItems/SKUIte No 1 Empty Node Removes the SKU Inventory Kit that matches m/Inventory/InventoryKit/ KitProduct/ProductName KitProduct/Erase • Ignored if Mode="Add"

155 Element Xpath Required Occurs Type Description Product/SKUItems/SKUIte No 1 + Container Used to set the available inventory quantity by m/Inventory/InventoryLoca Location tion • Include only if Enhanced Inventory is enabled and active for the product Product/SKUItems/SKUIte Yes* 1 Text Node (50 Inventory Location Internal Name m/Inventory/InventoryLoca chars max) tion/Location Product/SKUItems/SKUIte Yes* 1 Text Attribute Inventory Location Type (S or P), where "S" m/Inventory/InventoryLoca (1 char max) indicates a Shipping location and "P" indicates a tion/Location @Type Pickup location Product/SKUItems/SKUIte Yes* 1 Integer Node Available inventory at this Location m/Inventory/InventoryLoca tion/Qty Product/SKUItems/SKUIte No 1 Container For overriding the Shipping Rates at the SKU m/ShippingRates level; or defining Shipping Rates at the SKU level (Settings/Shipping in the OMS) when Shipping Cost Calculation is UNIT Product/SKUItems/SKUIte No 1 Empty Node Removes all Shipping Option overrides for the m/ShippingRates/Erase SKU • Ignored if Mode="Add" Product/SKUItems/SKUIte No 1 + Container m/ShippingRates/Zone Product/SKUItems/SKUIte Yes* 1 Integer Shipping Zone Number to be overridden (1 – m/ShippingRates/Zone Attribute 100) @ID • See Settings / Shipping in the OMS for the number of defined zones Product/SKUItems/SKUIte No 1 Empty Node Removes all Shipping Option overrides that m/ShippingRates/Zone/Era match ShippingRates/Zone @ID se • Ignored if Mode="Add" Product/SKUItems/SKUIte No 1 + Container m/ShippingRates/Zone/Shi ppingOption Product/SKUItems/SKUIte Yes* 1 Text Node Shipping Method to be overridden m/ShippingRates/Zone/Shi ppingOption/ShipMethod Product/SKUItems/SKUIte Yes* 1 Currency Shipping Rate to be overridden m/ShippingRates/Zone/Shi Node ppingOption/ShipRate Product/SKUItems/SKUIte No 1 Empty Node Removes the Shipping Option override that m/ShippingRates/Zone/Shi matches ShippingRates/Zone ppingOption/Erase @ID/ShippingOption/Method • Ignored if Mode="Add" Product/SKUItems/SKUIte No 1 Container m/Allocation Product/SKUItems/SKUIte No 1 Container m/Allocation/CustomerTyp es Product/SKUItems/SKUIte Yes* 1 + Container m/Allocation/CustomerTyp es/CustomerType Product/SKUItems/SKUIte Yes* 1 Text Node (20 SKU-level Allocation Customer Type Name m/Allocation/CustomerTyp chars max) (from Customer/Types in the OMS) es/CustomerType/Name

156 Element Xpath Required Occurs Type Description Product/SKUItems/SKUIte Yes* 1 Integer Node SKU-level Allocation Quantity m/Allocation/CustomerTyp es/CustomerType/Qty Product/SKUItems/SKUIte No 1 Container For Images defined at the SKU level only m/Images Product/SKUItems/SKUIte No 1 Text/URL Indicates either the name of a existing image file m/Images/Main Node (Text Node) or the URL of an external image file to import (URL Node) Product/SKUItems/SKUIte No 1 Text/URL Indicates either the name of a existing image file m/Images/Large Node (Text Node) or the URL of an external image file to import (URL Node) Product/SKUItems/SKUIte No 1 Container Include only if integrated with VinNow m/VinNow (Settings/Compatible Software/VinNow in the OMS) Product/SKUItems/SKUIte No 1 Text Attribute VinNow SKU-level Product Key m/VinNow/Key (50 chars max) Product/SKUItems/SKUIte No 1 Empty Node Indicates the default SKU for the Product m/Default Product/SKUItems/SKUIte No 1 Empty Node Indicates the SKU is no longer available m/Erase • Ignored if Mode="Add" Product/Overrides No 1 Container Product/Overrides/QuickB No 1 Text Node QuickBooks Sales Account Value ookSalesAccount (100 chars max) Product/Overrides/Review No 1 Integer Node Review Reminder Time Delay in Days (optional) ReminderDelay • See Use Review Reminders in Reviews/Setup/Review Reminders in the OMS Product/Overrides/Individu No 1 Container alShippingPackage Product/Overrides/Individu No 1 Text Attribute Individual Shipping Package Override (Yes or alShippingPackage (3 chars max) No; default value: Yes, if container is present) @Enabled Product/Overrides/Individu No 1 Numeric Node Shipping Package Length (in inches) alShippingPackage/Length Product/Overrides/Individu No 1 Numeric Node Shipping Package Width (in inches) alShippingPackage/Width Product/Overrides/Individu No 1 Numeric Node Shipping Package Height (in inches) alShippingPackage/Height Product/Overrides/Individu No 1 Numeric Node Weight of Dry Ice for Package (in pounds) alShippingPackage/DryIce Weight Product/Overrides/Individu No 1 Text Node Shipping Package Type as defined by UPS (Own alShippingPackage/UPSPa Packaging, Own Packaging (Additional ckaging Handling), UPS Letter/Express Envelope, UPS Tube, UPS Pak, UPS Express Box, UPS 10kg Box, UPS 25kg Box; default value: Own Packaging) Product/Overrides/Individu No 1 Text Node Shipping Package Type as defined by FedEx alShippingPackage/FedExP (Own Packaging, Own Packaging (Nonstandard), ackaging FedEx Envelope, FedEx Tube, FedEx Pak, FedEx Box, FedEx 10kg Box, FedEx 25kg Box; default value: Own Packaging)

157 Element Xpath Required Occurs Type Description Product/Overrides/Individu No 1 Text Node Shipping Package Type as defined by USPS alShippingPackage/USPSP (Own Packaging, Envelope, Flat-Rate Envelope, ackaging Legal Flat-Rate Envelope, Small Flat-Rate Envelope, Window Flat-Rate Envelope, Gift Card Flat-Rate Envelope, Padded Flat-Rate Envelope,, Small Flat-Rate Box, Medium Flat-Rate Box, Large Flat-Rate Box, DVD Flat-Rate Box, Large Video Flat-Rate Box, Regional Rate Box A, Regional Rate Box B; Regional Rate Box C; default value: Own Packaging) Product/Overrides/Alcohol No 1 Container Designation Product/Overrides/Alcohol Yes* 1 Text Attribute Alcohol Designation Override (Yes, No, or Designation @Enabled Default; default value: Yes, if container is present) Product/Overrides/Alcohol Yes* 1 Numeric Node Liters of Alcohol Designation/Liters • Required if AlcoholDesignation @Enabled="Yes" Product/Overrides/Alcohol Yes* 1 Text Node (16 Type of Alcohol (Beer, Wine, Distilled Spirits, Designation/Type chars max) Ale, Light Wine) • Required if AlcoholDesignation @Enabled="Yes" Product/Overrides/Alcohol Yes* 1 Integer Node Number of Packages of Alcohol Designation/PackingUnits • Required if AlcoholDesignation @Enabled="Yes" Product/Overrides/Alcohol Yes* 1 Text Node (6 Alcohol Packaging Type (Barrels, Bottles, Cases, Designation/PackingType chars max) Cartons, Others) • Required if AlcoholDesignation @Enabled="Yes" Product/Overrides/ShipCo No 1 Container Applicable only if ShipCompliant mpliant (Settings/Compatible Software/Alcoholic Beverage Tools) is in use Product/Overrides/2ShipCo No 1 Text Node (50 ShipCompliant Product Key mpliant/ProductKey chars max) Product/Overrides/ShipCo No 1 Text Node (50 ShipCompliant Brand Key mpliant/BrandKey chars max) Product/Overrides/Inventor No 1 Integer Node Inventory Warning Level yWarningLevel • Applicable only if Inventory Control is on at Settings/Site Options/Expected Shipping Time in the OMS Product/Overrides/Depletio No 1 Text Node (20 Product Depletion Status (Preordered, nStatus chars max) Backordered, Sold Out, Discontinued) Product/Overrides/Expecte No 1 Integer Node The number of days within which the product is dShippingDays expected to ship (when in stock) • Applicable only if Expected Shipping Time is on at Settings/Site Options/Expected Shipping Time in the OMS • Calendar days, business days, or shipping days may apply, depending on the value selected at Settings/Site Options/Expected Shipping Time Product/Overrides/InStock No 1 Text Node Product In Stock Message Message (200 chars • Applicable only if Expected Shipping Time is max) on at Settings/Site Options/Expected Shipping Time in the OMS

158 Element Xpath Required Occurs Type Description Product/Overrides/Sharing No 1 Currency Product Sharing Discount Amount Discount Node Product/Overrides/Sharing Yes* 1 Text Attribute Product Sharing Discount Type (Amount or Discount @Type (7 chars max) Percent) Product/Overrides/Country No 1 Text Node (2 Product Sharing Country Of Origin Code OfOriginCode chars max) • See Chapter 2 for Country Code information Product/Overrides/Unavail No 1 Container Product Unavailable Option ableOption Product/Overrides/Unavail Yes* 1 Text Attribute Product Unavailable Option Type (Default, 301, ableOption @Option (7 chars max) 302, or Custom) Product/Overrides/Unavail No 1 Text Node Product Unavailable Custom Message ableOption/CustomMessag • Included only if the Product Unavailable Option e Type is Custom Product/Overrides/Unavail No 1 URL Node Product Unavailable Redirect To ableOption/RedirectTo • Included only if the Product Unavailable Option Type is 301 or 302

Product/Overrides/Erase No 1 Container Removes all Product Overrides • Ignored if Mode="Add" Product/EMailAddenda No 1 Container

Product/EMailAddenda/Or No 1 Text Node Order Confirmation E-Mail Addendum derConfirmation Product/EMailAddenda/Or Yes* 1 Text Attribute Order Confirmation E-Mail Addendum Position derConfirmation @Position (5 chars max) (Above or Below) Product/EMailAddenda/Or No 1 Text Node Shipped E-Mail Addendum derShipped Product/EMailAddenda/Or Yes* 1 Text Attribute Shipped E-Mail Addendum Position (Above or derShipped @Position (5 chars max) Below) Product/EMailAddenda/Or No 1 Text Node Update E-Mail Addendum derUpdated Product/EMailAddenda/Or Yes* 1 Text Attribute Update E-Mail Addendum Position (Above or derUpdated @Position (5 chars max) Below) Product/EMailAddenda/Er No 1 Empty Node Removes all Product E-Mail Addenda ase • Ignored if Mode="Add" Product/MarketplaceOptio No 1 Container ns Product/MarketplaceOptio No 1 Text Node 10 Product Format (Soft Cover, Hard Cover, Audio ns/Format chars max) Book, eBook, CD, DVD, Cassette, Vinyl, VHS) Product/MarketplaceOptio No 1 Container ns/Manufacturer Product/MarketplaceOptio Yes* 1 Text Node (50 Product Manufacturer Name ns/Manufacturer/Manufact chars max) urerName Product/MarketplaceOptio Yes* 1 Text Node (50 Product Manufacturer Part Number ns/Manufacturer/Manufact chars max) urerPartNo Product/MarketplaceOptio No 1 Text Node (14 Product UPC Number ns/UPC chars max)

159 Element Xpath Required Occurs Type Description Product/MarketplaceOptio No 1 Text Node (13 Product ISBN Number ns/ISBN chars max) Product/MarketplaceOptio No 1 Text Node (8 Product Gender (Male, Female, Unisex) ns/Gender chars max) Product/MarketplaceOptio No 1 Text Node (5 Product Age Group (Newborn, Infant, Toddler, ns/AgeGroup chars max) Kids, Adult) Product/MarketplaceOptio No 1 Text Node (30 Product Size ns/Size chars max) Product/MarketplaceOptio No 1 Text Node (30 Product Color ns/Color chars max) Product/MarketplaceOptio No 1 Text Node (3 Product Size System (US, UK, EU, DE, FR, JP, ns/SizeSystem chars max) CN, IT, BR, MEX, AU) Product/MarketplaceOptio No 1 Text Node (12 Product Size Type (Regular, Petite, Plus, Big and ns/SizeType chars max) Tall, Maternity) Product/MarketplaceOptio No 1 Text Node (11 Product Condition (New, Used, Refurbished; ns/Condition chars max) default value: New) Product/MarketplaceOptio No 1 Container ns/AlcoholOptions Product/MarketplaceOptio No 1 Date Node Product Vintage Year ns/AlcoholOptions/Vintage (yyyy) Year Product/MarketplaceOptio No 1 Text Node (40 Product Region ns/AlcoholOptions/Region chars max) Product/MarketplaceOptio No 1 Text Node (30 Product Sub-Region ns/AlcoholOptions/SubReg chars max) ion Product/MarketplaceOptio No 1 Percent Node Product Alcohol By Volume ns/AlcoholOptions/Alcohol ByVolume Product/MarketplaceOptio No 1 Text Node (20 Product Varietal Composition (Barbera, Cabernet ns/AlcoholOptions/Varietal chars max) Franc, Cabernet Sauvignon, Canaiolo, Carignan, Composition Carmenere, Chardonnay, Chenin Blanc, Garnacha, Graciano, Grenache, Gruner Veltliner, Macabeo, Malbec, Mazuelo, Merlot, Monastrell, Montepulciano, Mourvedre, Nero D'Avola, Palomino, Petit Verdot, Pinot Grigio, Pinot Noir, Pinotage, Riesling, Sangiovese, Sauvignon Blanc, Semillon, Shiraz, Spatburgunder, Syrah, Tannat, Tempranillo, Trebbiano, Verdejo, Verdicchio, Viognier, Viura, Weissburgunder, Zinfandel, Zweigelt) Product/MarketplaceOptio No 1 Text Node (10 Body Description (Red Wine, White Wine, Rose) ns/AlcoholOptions/BodyD chars max) escription Product/MarketplaceOptio No 1 Empty Node Removes all Marketplace Options ns/Erase • Ignored if Mode="Add" Product/SearchEngineMark No 1 Container up Product/SearchEngineMark No 1 Text Node HTML Title Tag up/TitleTag (120 chars max) Product/SearchEngineMark No 1 Text Node Image AltTag up/ImageAltTag (120 chars max)

160 Element Xpath Required Occurs Type Description Product/SearchEngineMark No 1 Text Node Meta Description up/MetaDescription Product/SearchEngineMark No 1 Text Node Meta Keywords up/MetaKeywords Product/SearchEngineMark No 1 Empty Node Search Engine Option information up/Erase • Ignored if Mode="Add" Product/RelatedProducts No 1 Container For Related Products Product/RelatedProducts/R Yes* 1 + Container elatedProduct Product/RelatedProducts/R Yes* 1 Text Node Related Product Name elatedProduct/ProductNam (100 chars e max) Product/RelatedProducts/R No 1 Text Node Related Product Relationship elatedProduct/Relationship (255 chars max) Product/RelatedProducts/R No 1 Empty Node Remove the Related Product that matches elatedProduct/Erase RelatedProduct/ProductName • Ignored if Mode="Add" Product/AutomaticAddTrig No 1 Container For Automatic Add Triggers gers Product/AutomaticAddTrig Yes* 1 + Container gers/Trigger Product/AutomaticAddTrig Yes* 1 Text Attribute Automatic Add Trigger Type (Category, Coupon, gers/Trigger @Type Product, or QueryString) Product/AutomaticAddTrig No 1 Text Node Automatic Add Trigger Name gers/Trigger/Name • Required if the Automatic Add Trigger Type is Category, Coupon, or Product Product/AutomaticAddTrig No 1 Text Node Automatic Add Trigger URL Query String gers/Trigger/Parameter Parameter • Required if the Automatic Add Trigger Type is QueryString Product/AutomaticAddTrig No 1 Text Node Automatic Add Trigger URL Query String Value gers/Trigger/Value • Required if the Automatic Add Trigger Type is QueryString and Trigger/Erase is not present Product/AutomaticAddTrig No 1 Numeric Node Automatic Add Trigger Trigger Quantity gers/Trigger/TriggerQty • Required if the Automatic Add Trigger Type is Category or Product and Trigger/Erase is not present Product/AutomaticAddTrig No 1 Numeric Node Automatic Add Trigger Add Qty gers/Trigger/AddQty • Required if Trigger/Erase is not present Product/AutomaticAddTrig No 1 Empty Node Remove the Automatic Add Trigger that matches gers/Trigger/Erase Trigger/Name (for Category, Coupon, or Product) or Trigger/Parameter (for QueryString) Product/Erase No 1 Container Ignored if Mode="Add" Product/Erase/Expedited No 1 Empty Node Removes the Expedited Shipping restriction Product/Erase/RequiresDry No 1 Empty Node Removes the Dry Ice Shipping restriction Ice Product/Erase/Restricted No 1 Empty Node Removes the Restricted restriction Product/Erase/Required No 1 Empty Node Removes the Required restriction Product/Erase/AllowDisco No 1 Empty Node Removes eligiblity for Category Discounts, Order unts Discounts, and Customer Discounts Product/Erase/ No 1 Empty Node Removes eligiblity for the Cart Addendum CartAddendumEligible

161 Element Xpath Required Occurs Type Description Product/Erase/ No 1 Empty Node Removes eligiblity for Pending Edit inclusion PendingEditEligible Product/Erase/AllowDirect No 1 Empty Node Removes Direct Checkout availablity Checkout Product/Erase/AllowQuesti No 1 Empty Node Removes the ability to submit Questions ons Product/Erase/AllowRevie No 1 Empty Node Removes the ability to submit Reviews ws Product/Erase/LinkElevatio No 1 Empty Node Removes Product Link Elevation n Product/Integration No 1 Container See External Mapping for more information ForceProceed No 1 Empty Node Indicates that the Product Update should proceed even if one or more requested updates is invalid

ProductUpdateReply Schema Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Attribute Client's Account Name (e.g. fairway) @Page Yes 1 Integer Page number of query results Attribute Product Yes 1 - 15 Container Product @Mode Yes 1 Text Attribute Add or Update (6 chars max) Product/ProductName Yes 1 Text Node Product Name (100 chars max) Product/ProductSKU No 1 Text Node (50 Product SKU (if defined) chars max) Product/ProductNo Yes 1 Integer Node Product Number from the OMS Product/Status Yes 1 Text Node Product Status (Normal, Backordered, Preordered, Sold Out, or Discontinued) Product/Warning No 1 + Text Node Included if an Add or Update changes an existing Product setting (e.g. Pricing Level was changed from Product to SKU) Product/InvalidProduct No 1 + Text Node Included if an Add or Update results in an invalid Product setting (e.g. Inventory Level for the Product is "Kit" but no Kits are defined)

ProductUpdateRequest Example: Mode="Add"

fairway xmlbob XMLDem0Pwd Oakley Men's Loft Polo Shirt ff065 29.99 69.99

162 2 http://dl.dropbox.com/u/4979976/oakley-polo-navy-thumb.gif http://dl.dropbox.com/u/4979976/oakley polo black thumb2.jpg

http://dl.dropbox.com/u/4979976/oakleypoloblackbigresize.jpg
http://dl.dropbox.com/u/4979976/oakley polo navy thumb2.jpg
http://dl.dropbox.com/u/4979976/oakleypolonavybigresize.jpg
Golf Apparel Oakley FirstFairway All Oakley Yes All Short sleeve knit golf polo with 3-button placket and contrast patterning on front. 100% Polyester Aerocool Oakley, men, mens, golf, shirt, loft, polo, black, navy

163 Black Small SKU 550 Black Medium SKU 550 Black Large SKU 550 Navy Small SKU 550 Navy Medium SKU 550 Navy Large SKU

164 550

ProductUpdateRequest Example: Mode="Update"

fairway Nk5\#/K#0:{!C:SfqVs0 Oakley Men's Loft Polo Shirt 24.95 State

ProductUpdateReply Example

Oakley Men's Loft Polo Shirt 1863 Normal

165 14: SavedCart

The SavedCart query will return information about customers who have placed items in their Shopping Carts, but have not yet completed the checkout process. Note that this query will only return saved cart information for customers who logged in and can be identified. Saved Shopping Carts are retained for 30 days before being automatically purged.

You may submit a query based on the shopping cart Expiration Day Range, Expiration Date Range, Product Status, Customer Contact State/Province Code or Country, and Product. For Expiration Day Range you may specify an Expiration Day Start, an Expiration Day End, or both. For Expiration Date Range you may specify an Expiration Date Start, an Expiration Date End, or both. Specifying only a Range Start has the meaning of "greater than or equal to", while only a Range End has the meaning of "less than or equal to". For example, a query based on only an Expiration Day Start of 30 will return all saved shopping carts that expire 30 days from the current date.

A single SavedCartQueryRequest returns no more than 15 SavedCart nodes in the corresponding SavedCartQueryReply, even if the requested query includes more than 15 resulting saved carts. The presence of a NextPage node in the SavedCartQueryReply indicates that a subsequent "page" of results exists. You may then use the Page node in the SavedCartQueryRequest to iteratively request all saved carts in the query.

Note: If the Page node in the SavedCartQueryRequest contains a page number greater than the maximum page number in the query results, the maximum page number is returned.

SavedCartQueryRequest URL: https://www.nexternal.com/shared/xml/savedcart.rest

SavedCartQueryRequest Schema Element Xpath Required Occurs Type Description Credentials Yes 1 Container Note that the supplied Credentials must contain the Client's XML Key, or a UserName and Password, but not both Credentials/AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) Credentials/Key No 1 Text Node (20 Client's XML Key chars max) Credentials/UserName No 1 Text Node (50 XML Tools User Name chars max) • See Users / New Users / Access Level in the OMS for more information about the XML Tools Access Level Credentials/Password No 1 Text Node (50 XML Tools User Password chars max) ExpirationDayRange No 1 Container For querying by the number of days before the shopping cart will expire

166 Element Xpath Required Occurs Type Description ExpirationDayRange/Expir No 1 Integer Node Expiration Day Range Start ationDayStart • Value must be a number between 0 (cart expires today) and 30 (cart expires 30 days from today) ExpirationDayRange/Expir No 1 Integer Node Expiration Day Range End ationDayEnd • Value must be a number between 0 (cart expires today) and 30 (cart expires 30 days from today) ExpirationDateRange No 1 Container For querying by the date a shopping cart will expire ExpirationDateRange/Expi No 1 Container rationDateStart ExpirationDateRange/Expi Yes* 1 Container rationDateStart/DateTime ExpirationDateRange/Expi Yes* 1 Date Node Expiration Date Range Start rationDateStart/DateTime/ (mm/dd/yyyy) • Value must be a valid date between the current Date date (cart expires today) and 30 days in the future (cart expires 30 days from now) ExpirationDateRange/Expi No 1 Container rationDateEnd ExpirationDateRange/Expi Yes* 1 Container rationDateEnd/DateTime ExpirationDateRange/Expi Yes* 1 Date Node Expiration Date Range End rationDateEnd/DateTime/D (mm/dd/yyyy) • Value must be a valid date between the current ate date (cart expires today) and 30 days in the future (cart expires 30 days from now) Status No 1 Text Node (50 Current Product Status (Normal, Backordered, chars max) Preordered, Sold Out, or Discontinued) CustomerAddress No 1 Container Used to query by Customer Contact State/Province Code or Customer Country Code • If this container is included you must also include either the StateProvCode or CountryCode node, but not both CustomerAddress/StatePro Yes* 1 Text Node (2 Customer Contact Address State/Province Code vCode chars max) CustomerAddress/Country Yes* 1 Text Node(2 Customer Contact Address Country Code Code chars max) Product No 1 Container Used to query for shopping carts containing a specific Product • If this container is included you must also include a ProductName node, a ProductSKU node, or a ProductNo node Product/ProductName No 1 Text Node Product Name (100 chars max) Product/ProductSKU No 1 Text Node (50 Product-level SKU chars max) Product/ProductNo No 1 Integer Node Product Number

Product/SKUItem No 1 Container Used if the Product in the shopping cart is defined at the SKU level Product/SKUItem/SKU No 1 Text Node (50 Product SKU-level SKU number chars max)

167 Element Xpath Required Occurs Type Description Product/SKUItem/Attribute No 1 Container Product SKU-level Attributes and Options s • If this container is included in the query you may not include the SKUItem/SKU node Product/SKUItem/Attribute Yes* 1 + Text Node (50 Product SKU-level Attribute Value s/Attribute chars max) Product/SKUItem/Attribute Yes* 1 Text Attribute Product SKU-level Attribute Name s/Attribute @Name (50 chars max) Page No 1 Integer Node Requested page number of query results (default value: 1)

SavedCartQueryReply Schema Element Xpath Always Occurs Type Description @AccountName Yes 1 Text Node (10 Client's Account Name (e.g. fairway) chars max) @Page Yes 1 Integer Page number of query results Attribute SavedCart Yes 1 - 15 Container SavedCart/ExpirationDate Yes 1 Container SavedCart/ExpirationDate/ Yes 1 Container DateTime SavedCart/ExpirationDate/ Yes 1 Date Node Expiration Date DateTime/Date (mm/dd/yyyy) SavedCart/Customer Yes 1 Container SavedCart/Customer/Custo Yes 1 Integer Node Customer Number (unique ID) merNo SavedCart/Customer/Email Yes 1 Text Node (50 Customer E-Mail Address chars max) SavedCart/Customer/Addre Yes 1 Container For Customer Contact Address ss SavedCart/Customer/Addre Yes 1 Text Attribute Customer Contact Address Type (Residential or ss @Type (11 chars max) Business) SavedCart/Customer/Addre No 1 Integer Customer Address Book ID ss @ID Attribute SavedCart/Customer/Addre No 1 Text Attribute Customer Contact Address Label ss @Label (25 chars max) SavedCart/Customer/Addre Yes 1 Container ss/Name SavedCart/Customer/Addre Yes 1 Text Node (50 Customer First Name ss/Name/FirstName chars max) SavedCart/Customer/Addre Yes 1 Text Node (50 Customer Last Name ss/Name/LastName chars max) SavedCart/Customer/Addre No 1 Text Node Customer Contact Company Name ss/CompanyName (100 chars • Usage of the Company Name field is set at max) Customers/Types in the OMS SavedCart/Customer/Street Yes 1 Text Node Customer Contact Street Address (Line 1) Address/StreetAddress1 (100 chars max) SavedCart/Customer/Addre No 1 Text Node Customer Contact Street Address (Line 2) ss/StreetAddress2 (100 chars max)

168 Element Xpath Always Occurs Type Description SavedCart/Customer/Addre Yes 1 Text Node (50 Customer Contact City ss/City chars max) SavedCart/Customer/Addre No 1 Text Node (2 Customer Contact State/Province Code ss/StateProvCode chars max) SavedCart/Customer/Addre Yes 1 Text Node (20 Customer Contact Zip/Postal Code ss/ZipPostalCode chars max) SavedCart/Customer/Addre Yes 1 Text Node (2 Customer Contact Country Code ss/CountryCode chars max) SavedCart/Customer/Addre Yes 1 Text Node (50 Customer Contact Phone Number ss/PhoneNumber chars max) SavedCart/Customer/Addre No 1 Text Node (30 Customer Contact Phone Extension ss/PhoneExt chars max) SavedCart/Customer/Custo Yes 1 Text Node (20 Customer Type merType chars max) SavedCart/Products Yes 1 Container SavedCart/Products/Produc Yes 1 + Container t SavedCart/Products/Produc No 1 Integer Node Product Number t/ProductNo SavedCart/Products/Produc No 1 Text Node Product Name t/ProductName (100 chars max) SavedCart/Products/Produc No 1 Text Node (50 Product SKU number (if defined) t/ProductSKU chars max) SavedCart/Products/Produc No 1 Container Included if the Product in the shopping cart is t/SKUItem defined at the SKU level SavedCart/Products/Produc No 1 Text Attribute SKU-level SKU number (if defined) t/SKUItem/SKU (50 chars max) SavedCart/Products/Produc No 1 Container t/SKUItem/Attributes SavedCart/Products/Produc Yes* 1 + Text Node (50 SKU Attribute Value t/SKUItem/Attributes/Attri chars max) bute SavedCart/Products/Produc Yes* 1 Text Attribute SKU Attribute Name t/SKUItem/Attributes/Attri (50 chars max) bute @Name SavedCart/Products/Produc No 1 + Text Node Product Write-In Attribute Value t/WriteIn (4000 chars max) SavedCart/Products/Produc Yes* 1 Text Attribute Product Write-In Attribute Name t/WriteIn @Name (50 chars max)

SavedCart/Products/Produc Yes 1 Text Node (50 SKU-level Product Status (Normal, Backordered, t/SKUItem/Status chars max) Preordered, Sold Out, or Discontinued) SavedCart/Products/Produc Yes 1 Integer Node Number of Products in the shopping cart t/Qty SavedCart/Products/Produc No 1 Container For Inventory Reservation t/InventoryReservation SavedCart/Products/Produc Yes* 1 Integer Node Quantity reserved t/InventoryReservation/Qty

169 Element Xpath Always Occurs Type Description SavedCart/Products/Produc Yes* 1 Integer Node Total number of minutes for which the product is t/InventoryReservation/Mi reserved nutes • Does not indicate the number of minutes remaining in the reservation SavedCart/Products/Produc Yes* 1 Container t/InventoryReservation/Exp iration SavedCart/Products/Produc Yes* 1 Container t/InventoryReservation/Exp iration/DateTime SavedCart/Products/Produc Yes* 1 Date Node Reservation expiration date t/InventoryReservation/Exp (mm/dd/yyyy) iration/DateTime/Date SavedCart/Products/Produc Yes* 1 Time Node Reservation expiration time t/InventoryReservation/Exp (hh:mm) iration/DateTime/Time SavedCart/Products/Produc Yes 1 Currency Product Unit Price (if defined) t/UnitPrice Node SavedCart/Products/Produc Yes 1 Text Node (17 Product Status (Normal, Backordered, t/Status chars max) Preordered, Sold Out, or Discontinued)

SavedCart/Products/Produc No 1 + Text Node Included if one or more product validation or t/Warning verification steps was not passed (for example, the product has a minimum or maximum quantity requirement) SavedCart/SubTotal Yes 1 Currency Saved Cart SubTotal Node SavedCart/Discounts No 1 Container Included if any discounts could be applied to the contents of the shopping cart SavedCart/Discounts/Categ No 1 Currency Category Discount Amount(s) total oryDiscounts Node SavedCart/Discounts/Coup No 1 Currency Coupon Discount Amount onDiscount Node • Does not appear for a Shipping Coupon SavedCart/Discounts/Coup Yes* 1 Text Attribute Coupon Code (for Coupon Discount) onDiscount @Code (50 chars max) SavedCart/Discounts/Custo No 1 Currency Customer Discount Amount merDiscount Node SavedCart/Discounts/GiftC No 1 Currency FlexCache Gift Card Discount Amount ardDiscount Node SavedCart/Discounts/GiftC No 1 Currency Gift Certificate Discount Amount ertificateDiscount Node SavedCart/Discounts/Order No 1 Currency Order Discount Amount Discount Node SavedCart/Discounts/Shari No 1 Currency Sharing Discount Amount(s) total ngDiscounts Node SavedCart/Discounts/Warn No 1 + Text Node Included if one or more discounts is inapplicable ing (for example, a CouponDiscount has expired) SavedCart/Affiliate No 1 Container Included if there is an associated Affiliate Order/Affiliate/AffiliateNa Yes* 1 Text Node Affiliate Name me (100 chars max)

170 Element Xpath Always Occurs Type Description SavedCart/Error No 1 + Text Node Included if there was an error retrieving the shopping cart (for example, an inactive Customer account) SavedCart/Warning No 1 + Text Node Included if one or more validation or verification steps was not passed (for example, the Customer didn't pass an Age Verification requirement) NextPage No 1 Empty Node Indicates the existence of a subsequent page of orders

SavedCartQueryRequest Example

fairway Nk5\#/K#0:{!C:SfqVs0 30 30 1

SavedCartQueryReply Example

07/13/2012 316 jack @demo.com

Jack Nicklaus 951 US Highway 1 North Palm Beach FL 33408 US 555-555-5555
Consumer 9

171 British Open Towel ff009 1 39.99 Normal 37.99 2.00

172 15: Errors

Error XML is returned whenever the Request XML sent is invalid. Errors resulting in Error XML may be due to a parsing error (i.e. failed validation against the appropriate XSD), or due to a violation of business rules. Errors involving invalid child elements are usually caused by incorrect sequencing of the XML elements; a violation of the schema's Unique Particle Attribution Constraint.

The Error XML usually gives a description of the error so that it may be easily addressed and corrected. In the case of a validation error, the line number of the error is also returned (a value of -1 indicates that the error cannot be localized to a specific line). Bear in mind that only the first error encountered is returned.

In most cases the Error XML constitutes the entire Reply XML when an error is encountered. However, if the ForceProceed node is included in an OrderUpdateRequest or an InventoryUpdateRequest (as detailed in Chapters 6 and 10), the Error XML may be contained within the Order or InventoryProduct container.

Error XML Schema Element Xpath Always Occurs Type Description Error Yes 1 Container Error/ErrorDescription Yes 1 Text Node Error Description Error/ErrorLine No 1 Integer Node Error Line (for XSD validation errors only)

Error XML Example

The 'OrderNoRange' start tag on line 7 does not match the end tag of 'OrderQueryRequest'. Line 10, position 3.

173 16: External Mapping

The Integration container can be used by third-party developers and applications to associate their own domain-specific information with a Nexternal Customer, Order, or Product record. This container can be used with any XML Tools request except OrderCalculate and SavedCart.

When the Integration container is included within an update request (e.g. CustomerUpdate) you can associate one or more user-defined key/value pairs with the Nexternal record that you are creating or updating. This information can be used with subsequent XML Tools queries to retrieve any records that match the key/value pairs.

When the Integration container is included within a query request (e.g. CustomerQuery) you can use just the Integration Source to retrieve only records that have at least one key/value pair from the Source; or you can include one or more user-defined keys or key/value pairs with the Source to retrieve only records that match the Source and the included key or key/value pairs.

Integration Container Element Xpath Always Occurs Type Description Integration No 1 Container Integration/Source Yes 1 Text Node (50 Unique Third-Party Integrator name chars max) Integration/ElementName No 1+ Empty Node, Unique Key Name or Key Name and Key Value Text Node (50 pair, where ElementName is the Key Name, and chars max) the node value is the Key Value • Note that ElementName can be any alphanumeric string Integration/ExcludeIntegrat No 1 Empty Node For use with CustomerQuery, ProductQuery, and ionUpdates OrderQuery requests only, excludes records updated by the integrator • If Credentials/UserName is specified in the request, excludes records last updated by that user • If no Credentials/UserName is specified in the request, excludes records that have at least one key/value pair from the specified Integration/Source • Incompatible with (and takes precedence over) any Integration/ElementName nodes Integration/ExcludeIntegrat No* 1 Text Attribute Used to explicitly define the integrator records ionUpdates @Excludes that will be filtered out of the search results (Any, LastUpdated; default value: Any) • Any will exclude records that have at least one key/value pair from the Integration/Source • LastUpdated will exclude records that were last updated by the Integration/Source Integration/Locked No 1 Empty Node When used with OrderCreate or OrderUpdate, this node will "lock" the order to prevent anyone except the third-party application from making changes to the order contents

174 Element Xpath Always Occurs Type Description Integration/Unlocked No 1 Empty Node When used with OrderCreate or OrderUpdate, this node will "unlock" the order to allow anyone to make changes to the order contents Integration/Information No 1 Empty Node, When used will display an information message Text Node in the OMS. When empty it will remove the (1000 chars information message. max) Integration/AmazonOrderI No 1 Text Node (20 If the Nexternal Amazon Marketplace integration D chars max) is enabled and active, this will contain the Amazon order number for imported Amazon orders. Integration/Warning No 1 Empty Node, When used will display a warning message in the Text Node OMS. When empty it will remove the warning. (1000 chars max) Integration/Error No 1 Empty Node, When used will display an error message in the Text Node OMS. When empty it will remove the error. (1000 chars max)

Integration Container Examples CustomerUpdateRequest

fairway xmlbob XMLDem0Pwd demo @demo.com Consumer FirstFairway Gold Club ackerman_jim @yahoo.com Business FirstFairway Platinum Club

CustomerUpdateReply

1011

175 Adam Scott demo @demo.com Updated FirstFairway Gold Club 157 Jim Ackerman ackerman_jim @yahoo.com Updated FirstFairway Platinum Club

CustomerQueryRequest: FirstFairway Gold Club Memberships Only

fairway xmlbob XMLDem0Pwd FirstFairway Gold Club

CustomerQueryReply

1011 [...] FirstFairway Gold Club

176 CustomerQueryRequest: All FirstFairway Customer records

fairway xmlbob XMLDem0Pwd FirstFairway

CustomerQueryReply

1011 [...] FirstFairway Gold Club 157 [...] FirstFairway Platinum Club

177 16: Best Practices

It is strongly recommended that you adhere to the following best practices:

 Design your integration application to be fault tolerant. Rather than assume that your application will run flawlessly every time, have an affirmative plan to handle temporary disruptions (e.g. internet outages). A well-designed application will handle errors smoothly and re-attempt failed requests at a later time.  Develop a deep understanding of how options in the OMS may affect your application. For example, the Multiple Ship To (Settings/Boolean Options) and Full CC Access: Report/XML (Settings/Site Options) options impact the OrderQueryReply. You may need to educate OMS users not to make specific changes that are not anticipated by your application.  To the extent possible, allow for future changes to the XML Tools. Nexternal Solutions employs a philosophy of continuous development and enhancement of its core software, and those enhancements often require changes to the XML Tools. When possible, Nexternal accommodates changes by adding new nodes and attributes to XML schemas, leaving pre-existing nodes and attributes unchanged; however, in rare cases, this may not be possible. It is therefore strongly advised that you parse XML replies using an XML parser that references element names and not indices. This will make your application as stable as possible, and minimize the need to make changes.  Take extra care to protect your XML Key, as it is the primary means of validating access to the XML Tools. Never send the Key via e-mail or any other unsecured format. If you have reason to believe that the Key has been compromised, you may generate a new Key at Settings/XML Tools in the OMS.  Unless the XML Key is regenerated (Settings/XML Tools in the OMS), it will not change. Furthermore, the Key is always available at Settings/XML Tools in the OMS, once the XML Memorandum of Understanding (MOU) has been accepted and the XML Test has been passed. Thus, there is never a need to pass the XML Test more than once.  Do not submit an unreasonably large number of scheduled XML queries or updates over a short period of time. Calls to any combination of the CustomerQuery, OrderQuery, ProductQuery, or SavedCartQuery services are limited to 90 calls per minute (i.e., 90 query requests with 15 Order nodes per query is 1350 orders). Excessive service requests are subject to throttling, and may result in revocation of access.  Repeatedly requesting any XML update that consistently results in an error is subject to throttling, and may result in revocation of access. Calls to any combination of the CustomerUpdate, InventoryUpdate, OrderUpdate, or ProductUpdate services are limited to 45 calls per minute (i.e., 45 updates with 15 Order nodes per update is 675 orders). If the total number of update errors exceeds 15 per minute you will be required to wait five minutes before submitting any other update requests.

178  If your application needs to check connectivity with the REST services please "ping" our servers using http://www.nexternal.com/shared/xml/ping.rest. The "ping" test should occur one time on application startup, and not before every call to the REST services.

179 17: Summary of Revisions

 10/26/2017: OrderCreateRequest – Added PrimaryShip node to ShipTo address and removed Import only restriction on DoNotSaveAddress for ShipTo address.  8/23/2017: OrderCalculateReply – Added support for SalesTaxRate and Taxable attributes.  6/8/2017: InventoryUpdateRequest – Added support for Product Number and SKU Number.  6/1/2017: CustomerUpdateReply – Updated error messages to include the reason why an address failed validation.  3/30/2017: External Mapping – Added Excludes attribute to ExcludeIntegrationUpdates.  3/27/2017: ProductUpdateRequest – Added support for enhanced inventory and Vendor creation.  11/1/2016: ProductUpdateRequest – Added support for category visibility; OrderQueryReply – Added Amazon Order Number, if present.  9/16/2016: OrderUpdateRequest – Added support for credit card authorization.  8/25/2016: OrderQueryReply – Added Order/ShipTo/ShipFrom/LineItem/LineProduct/Category, Order/Pickups/Pickup/LineItem/LineProduct/Category, and Order/GiftCert/Category nodes  7/25/2016: OrderCalculateRequest, OrderCalculateReply, OrderCreateRequest, and OrderQueryReply – Added support for Gratuities  7/22/2016: External Mapping – Added support for Information, Warning, and Error messages  7/12/2016: OrderUpdateRequest – added LineItemAdd container and Reconcile value for CapturePayment node; OrderCalculateRequest, OrderCalculateReply, and OrderCreateRequest – added support for Subscriptions  5/19/2016: Added support for Loyalty Points and Discounts  2/25/2016: OrderUpdateRequest – added OrderUpdate/FulfillmentLocationUpdate container; ProductUpdateRequest and ProductQueryReply – added AddlShipFroms container; OrderCreateRequest – added OrderCreate/ShipTos/ShipTo/Products/Product @ShipFrom attribute  1/11/2016: Added support for Trustee and Signature  10/2/2015: Added support for Inventory Reservation  10/2/2015: Added support for Enhanced Inventory  9/8/2015: OrderQueryRequest – added “Active” option for OrderStatus  9/2/2015: OrderUpdateRequest – added OrderUpdate/SalesTaxUpdate/PickupLocation and OrderUpdate/StatusUpdate/PickupLocation nodes  9/1/2015: OrderUpdateRequest – added OrderUpdate/StatusUpdate/LineNo @Qty attribute

180  8/13/2015: OrderQueryRequest – added “Outstanding” option for OrderStatus and LineItemStatus; OrderQueryReply (with CurrentStatus node) – added OrderType attribute  7/29/2015: OrderCalculateReply – added Order/Pickups container  7/24/2015: OrderQueryRequest – added additional OrderStatus, LineItemStatus, and BillingStatus options  7/21/2015: OrderQueryReply – added Apportionment containers; added ShipFrom/Address container  7/15/2015: OrderQueryReply – added Pickup/Address container  6/24/2015: External Mapping – added documentation for excluding integration updates, and support for locking / unlocking Order records  6/12/2015: OrderCreateRequest – added support for replacement of existing orders  5/20/2015: OrderCreateRequest – added support for order and shipping confirmation email when an order is imported  5/6/2015: OrderQueryRequest – added support for querying orders by affiliate  5/5/2015: OrderCalculateRequest – added ShipCompliant container; OrderCalculateReply – added ExpectedShipDate node  4/20/2015: OrderQueryReply, OrderCreateRequest – added support for Required Quantity  4/1/2015: OrderCalculateReply – added DiscountedPrice node when volume discounts on a product are applicable  3/26/2015: InventoryUpdateRequest– added OnHand Mode  2/11/2015: CustomerUpdateRequest– added CustomerType to Erase container  12/10/2014: CustomerUpdateRequest– added AllowExpiredCreditCards node  12/6/2014: Added support for Pending Orders  11/21/2014: ProductQueryRequest, ProductUpdateRequest – added support for Custom Sections  11/7/2014: OrderCalculateRequest – added support for Pickups; ProductQueryReply, ProductUpdateRequest – added Select Box as a possible value in Product/WriteIns/WriteIn/EntryType and added Product/WriteIns/WriteIn/Options/Option nodes  10/5/2014: OrderCalculateRequest, OrderCreateRequest – added Additional Addresses ID attribute to the ShipTo node  10/1/2014: ProductQueryReply, ProductUpdateRequest – added MarketplaceOptions/SizeSystem and MarketplaceOptions/SizeType nodes  8/25/2014: Added support for PendingEditEligible  7/25/2014: Added support for CartAddendumEligible  6/23/2014: OrderCalculateRequest – added IncludeDeliveryDates node  5/23/2014: Added support for CreatedByNote, PlacedByNote, LastUpdByNote  5/21/2014: Added support for LineItemCustomField  5/5/2014: Added support for external mapping  4/1/2014: CustomerQueryRequest – added IncludeOrderCount node; CustomerQueryReply – added OrderCount container

181  3/4/2014: ProductQueryReply, ProductUpdateRequest – added support for RequiresDryIce and DryIceWeight at the Product level and WarehouseLocation at the Product level and the SKU level  2/28/2014: ProductUpdateRequest – added support for ordering Options; OrderQueryReply – added BillInCurrency node to the Currency container  1/24/2014: ProductQueryReply, ProductUpdateRequest – added support for CustomerTypeUpgrade node at the SKU level  1/14/2014: OrderCreate/Payment/CreditCard/CreditCardNumber and CreditCardExpDate no longer required (in some cases)

182 18: Appendix: REST Client

REST Client: A browser extension to test REST services

You can test your queries by installing a "REST client" extension for your web browser. We recommend the RESTClient extension, available as a user-supported download from http://restclient.net. This extension is currently available for Firefox, and extensions for Safari and Chrome should be available shortly.

Note: The instructions and screenshots below refer to Firefox and version 2.0.1 of the RESTClient application; other browsers and versions may differ slightly.

 Install the RESTClient extension from http://restclient.net, or directly from the Mozilla Add-Ons website at https://addons.mozilla.org/en- US/firefox/addon/restclient, and restart Firefox to enable the extension.

 Click on the icon that will appear to the right of your browser address bar to start the RESTClient.

 Change the Method option from GET to POST, enter the REST service endpoint that you want to test in the URL field, then type in (or paste) the query you wish to test into the Body field.

 Click on the button to the right of the URL field to submit your query and retrieve the results.

183 184

Recommended publications