Promo Standards is a set of APIs to connect a supplier and distributor.

Providing information about Products, Inventory, Products Pricing, OrderStatus, Shipping Notification and to also create Purchase Orders. 


We have implemented the following APIs

  1. Inventory
  2. Invoice
  3. Media Content
  4. Order Shipment Notification
  5. Order Status
  6. Product Data
  7. Product Pricing and Configuration
  8. Purchase Order 

Official site of a PromoStandard: https://promostandards.org/

APIs Lists and it's documentation: https://promostandards.org/service/overview/

Note : We must test via https://services.promostandards.org/webserviceValidator/home to see if service is validating all responses correctly. 
Field Mapping document can be found at the foot of this document

Authentication

Authentication details can be found/created in admin under sales > customer account.
AccountCode, PromoPassword and PromoAuthorize fields. Only authorized accounts can access the API's

The default user for an account will be used for visibility and pricing calculations, orders will also be placed with this user. If you haven't configured a user it will default to the first user.

Override Price - Used to create purchase order.

  1. ODSNet Price - Takes ODSNet Prices based on the user
  2. Requested Price - Takes requested price from Purcahse order request
  3. Reject Order - Reject order if requested price does not match with ODSNet price


The below errors can be returned due to authenticating issues when using Promo Standards.

CodeDescription
115wsVersion not found
100ID (customerID) not found
105Authentication Credentials failed
110Authentication Credentials required
104This account is unauthorized to use this service. Please contact the service provider
999Account (customerId) does not have any associated user.
999Any internal server error

Inventory

Documentation link : https://promostandards.org/service/view/16/ 

getFilterValues ()

Will return all available filters (partId, labelSize, partColor) for a successful request


getInventoryLevels ()

Will return available stock from SAP for a successful request 


Below are the errors you can receive when using this api.

CodeDescription
120The following field(s) are required (productId)
600Product Id (productId) not found
630

Product part not found for this product (productId)

999Any internal server error


Invoice

Documentation link: https://promostandards.org/service/view/20/

This API will return the customer's invoices from SAP.


Users can filter invoices by QueryType.

queryType

Short Name

Description

1

PO Number Search

Search for invoices by purchase order number

2

Invoice Number Search

Search for invoice by invoice number

3

Date Search

Search for invoices with an invoice date specified by the requestedDate

4

Available Date Time Search

Search for invoices that were made available by a date time greater than the value specified by availableTimeStamp


Below are the errors you can receive when using this api.

CodeDescription
120The following field(s) are required (queryType)
903No Invoices were found for the requested criteria
999Any internal server error


Media Content


Documentation link : https://promostandards.org/service/view/11/ 

getMediaContent()

Will return available media for passed product and filters. 


getMediaDateModified()

Will return products which media has changed after passed date. 




Below are the errors you can recieve when using this api.

CodeDescription
120The following field(s) are required (productId)
160No Results Found
999Any internal server error


Order Shipment Notification


Documentation link: https://promostandards.org/service/view/6/

getOrderShipmentNotification:


This API returns detailed information on Order Shipments along with the status from SAP.


It is filtered based on QueryType you enter, check field mapping excel, or API documentation.



Below are the errors you can receive when using this api.

CodeDescription
120The following field(s) are required (queryType)
999Any internal server error

Order Status


Documentation link: https://promostandards.org/service/view/1/

Start with API Endpoints:

getOrderStatusDetails:


This API will return detailed information of an Order, including the status from SAP.


It will filter orders based on QueryType entered, check field mapping excel or API documentation.


getOrderStatusTypes: 


This API will return a list of Order Statuses from SAP which we support.

Below are the errors you can receive when using this api.

 

CodeDescription
120The following field(s) are required (queryType)
120Invalid Date format for statusTimeStamp
999Any internal server error


Product Data

Documentation link: https://promostandards.org/service/view/18/

Start with API Endpoints:

getProduct:


This function will provide detailed product information for its parts(GenericItems) by passing a ProductId or any additional optional subset filtering provided at the request.


Pass required parameters to the request and It will return MainProduct (GenericDefault). and all GenericItmes of the main product which are called product parts.


In the request partId, colorName, apparelStyle, and labelSize parameters are used to do filters on GenericItems (product parts).


All the products are display based on customer visibility and its pricing, if pricing doesn't exist then the product will not display in response.

It will display only those products which are active and available for sale.

getProductDateModified:


This function will provide a list of ProductGenericCode(ProductId) and optional ProductDetailSkuCode(Part Ids) for all items which have changed since the date supplied in the request.


The ProductId and PartIds are display based on customer visibility and pricing, if pricing doesn't exist then it will not display in the response.


It will display only where the productId and PartId are active and available for sale.  

getProductCloseOut


This function will provide a list of ProductGenericCode(ProductId) and optional ProductDetailSkuCode(Part Ids) for all items where currently the ProductDetailActiveFlag is N. 

A list of inactive products.


getProductSellable


This function will provide a list of ProductGenericCode(ProductId) and optional ProductDetailSkuCode(Part Ids) along with their status of available to sell (Sellable TRUE or FALSE).

If you pass Sellable True in the request it will return a list of products which are available for sale

If you pass Sellable false in the request it will return a list of products that are not available for sale.

You can filter it by a specific part Id.


Below are the errors you can receive when using this api.

CodeDescription
120The following field(s) are required (productId)
130Product Id not found
140
  • Product parts not found
  • Product parts not found with this partId XXX
999Any internal server error


Product Pricing and Configuration


Documentation link: https://promostandards.org/service/view/8/

getConfigurationAndPricing:


This API will return information about product pricing and configuration.


You can filter records by PartId, check mapping excel, and API documentation for this.


getFobPoints:

This API will return information about product fob points - as of now used company collection address.

You can filter records by productId.


 


Below are the errors you can receive when using this api.

120The following field(s) are required (productId, currency, priceType, configurationType)
400productID not found
999Any internal server error

Purchase Order


Documentation link : https://promostandards.org/service/view/15/ 

getSupportedOrderTypes()

This will return the order types supported by ODSNet. 
As of now only Blank is supported.


sendPO()

This will create an order in ODSNet, there are some fields that we currently do not use.
If you don't specify pricing, it will be calculated from ODSNet.
Please see below a successful request and response.

Please see below a a failed request.


The below errors can be found if there is an issue with the details used when placing a purchase order.

CodeDescription
220Field is not supported: OrderType.
120

The following field(s) are required : ShipTo - ContactDetails(address1,country,postalCode), FreightDetails, LineItemArray(lineItem,productId,partId,Quantity)

999Can not create order. You do not have default/shipping address.
999Can not create order. Your cart is empty. Make sure the products you order are visible to your account and have correct pricing.
999Requested carrier service not found.
999Your country area postcode not found in our system for this order, please update order or please goto My Account and change your postcode, if you have choose alternate address please enter valid postcode.
999Sorry we cannot ship ‘Products (Invalid Products)’ to this area, please check our Delivery Terms. Please remove these items from your basket and proceed to checkout. If you are still having problems please contact our customer services.
999Country (CountryName) maximum order weight limit is (MaximumOrderWeight) (WeightUnit), your order weight (TotalWeight) (WeightUnit), please remove some item or cancel order.
999Unable to calculate Delivery charge for this order address, please add new address or contact administrator.
999UPS service maximum number of packages limit exceeded (50). This could be the size of your order. Please select non-UPS services.
999Requested paymentTerms not found.
999ProductId (productId) not found.
999PartId (partId) not found.
999PartId (partId) quantity must be greater than zero.
999PartId (partId) does not belong to productId  (productId)
999PartId (partId) quantity must be greater than zero.
999PartId (partId) is not visible to this account.
999Max quantity is allowed is (maxquantity). Please change quantity for the product (partId).
999PartId (partId) does not have price associated to this account. (Applicable ONLY - PromoOverridePrice = Reject Order/ODSNet Price)
999PartId (partId) requested price (unitPrice) does not match with actual price (ODSNetPrice) (Applicable ONLY - PromoOverridePrice = Reject Order AND unitPriceSpecified)
999PartId (partId) extendedPrice must be multiplication of unitPrice and Quantity Value. (Applicable ONLY - PromoOverridePrice = Reject Order/Requested Price- unitPriceSpecified AND extendedPriceSpecified)
999PartId (partId) unitPrice must be greater than zero. (Applicable ONLY - PromoOverridePrice = Requested Price AND unitPriceSpecified)
999PartId (partId) extendedPrice must be greater than zero. (Applicable ONLY - PromoOverridePrice = Requested Price AND unitPriceSpecified AND extendedPriceSpecified)
999Any internal server error


ODSNet changes


The below changes have been made to the ODSnet platform in relation to Integrating the Promo standards API's.

Database changes

Table
Name
Data Type
AccountsPromoPasswordnvarchar(50)
AccountsPromoAuthorizebit
AccountsPromoDefaultUserIdint
AccountsPromoOverridePriceint

System configuration

This system configuration is for setting the paths on the hosting webserver for the logs of the successful and failed api requests and responses.

MainCategorySubCategorySystemConfigTypeNotes
3rd Party IntegrationsPromoStandardPromoStandardLogPath
  1. PromoStandard Success Logs Path
  2. PromoStandard Fail Logs Path

Windows service

This is a service that can be enabled to purge the above logs so that they do not take up too much storage.

Service Type
Service Name
PurgeNoOfDays
ODSTasksODSDeletePromoStandardLog14