PPC 1.0.0

PROMOTIONAL PRODUCTS DATA INTERFACE SPECIFICATION FOR WEB SERVICES

PromoStandards Logo

Product Configuration, Decoration, and Pricing

Version Details:

  • Version: 1.0.0
  • Date: 2017-07-19

Document Change Log:

  • Initial Release: 07/19/17
  • Design: Eric Shonebarger (CIO Hit Promotional Products, Inc) and Eric Alessi (Essent Corporation).

Contributors:

  • Design:
    • Eric Shonebarger
    • Eric Alessi
  • Contributions:
    • Paul Fleischman (Technical Lead PCNA)
    • Jon Norris (VP of Operations, Starline)

Abstract:

This document describes the technologies for integration of suppliers and distributors in the Promotional Products Industry. This document will discuss in detail the technology required in order to build the interface. Additionally, this document will provide sample code in order to use the interface.

This document will assume that the reader is fluent in web based technologies, and has knowledge of the language they plan to consume the web service in.

Background Information

All specifications will be built using the Simple Object Access Protocol (SOAP) over HTTPS as the foundation for the web services protocol stack in order to provide a standards based secure form of communication.

More information on SOAP can be found at http://www.w3.org/TR/soap12-part1/ (opens in a new tab)

Service Details:

Additional Functions:

  • Function getFobPoints: Returns information about FOB points for a product.
  • Function getAvailableCharges: Provides a list of charges and information on how to calculate them.

Configuration and Pricing:


Function: getAvailableLocations()

This function provides the names of locations for a given product.

Request: GetAvailableLocationsRequest

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
wsVersionThe Standard Version of the Web Service being referenced. Values are enumerated {1.0.0}STRINGVARCHAR(64)TRUE
idThe customerId or any other agreed upon Id.STRINGVARCHAR(64)TRUE
passwordThe password associated with the customerId.STRINGVARCHAR(64)FALSE
productIdThe product id for which to get the locationsSTRINGVARCHAR(64)TRUE
localizationCountryISO 3166-1 Alpha 2 code for Country Example: CA=Canada; US=United StatesSTRINGVARCHAR(2)TRUE
localizationLanguageISO 639-1 Alpha 2 code for Language. Example: en = English; fr = FrenchSTRINGVARCHAR(2)TRUE

Reply: GetAvailableLocationsResponse

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
AvailableLocationArrayAn array of locationsARRAYARRAYTRUE
errorMessageList of possible values for errors. Values are enumerated—See Appendix A: Error Messages for full details.STRINGVARCHAR(256)FALSE

AvailableLocation

This array provides details about the available locations for a given product.

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
locationIdA unique Id of the locationINTINTTRUE
locationNameThe name of the locationSTRINGVARCHAR(64)TRUE

DecorationArray

This array provides details about the decorations that are valid for a given location.

Decoration

This object contains decoration information that is valid for a specific location.

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
decorationIdThe ID of the decorationINTINTTRUE
decorationNameThe name of the decorationSTRINGVARCHAR(64)FALSE
decorationGeometryThe geometry of the decoration. Values are enumerated: {Circle, Rectangle, Other}STRINGVARCHAR(64)TRUE

Function: getDecorationColors()

This function describes possible decoration colors given a productId.

Request: GetDecorationColorsRequest

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
wsVersionThe Standard Version of the Web Service being referenced. Values are enumerated: {1.0.0}STRINGVARCHAR(64)TRUE
idThe customerId or any other agreed upon Id.STRINGVARCHAR(64)TRUE
passwordThe password associated with the customerId.STRINGVARCHAR(64)FALSE
locationIdThe Id of the locationINTINTTRUE
productIdProductId to filter down to a specific product. If left blank, the function will return all decoration colors for all products.STRINGVARCHAR(64)TRUE
decorationIdThe Id of the decoration to filter requests byINTINTFALSE
localizationCountryISO 3166-1 Alpha 2 code for Country Example: CA=Canada; US=United StatesSTRINGVARCHAR(2)TRUE
localizationLanguageISO 639-1 Alpha 2 code for Language. Example: en = English; fr = FrenchSTRINGVARCHAR(2)TRUE

Reply: GetDecorationColorsResponse

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
DecorationColorsThe object with decoration colorsARRAYARRAYTRUE
productIdThe Id of the product.STRINGVARCHAR(64)TRUE
locationIdThe Id of the location that was providedSTRINGVARCHAR(64)TRUE
DecorationMethodArrayAn array of decoration methods for the locationARRAYARRAYTRUE
pmsMatchTRUE, if PMS match is possibleBOOLEANBOOLEANTRUE
fullColorSet to true if the decoration method is full color process; False implies that number of colors is irrelevant.BOOLEANBOOLEANTRUE

Color

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
colorIdA unique Id of the color of the imprintINTINTTRUE
colorNameThe name of the imprint colorSTRINGVARCHAR(64)TRUE

DecorationMethod

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
decorationIdA unique Id of the decorationINTINTTRUE
decorationNameThe name of the decorationSTRINGVARCHAR(64)TRUE

Function: getFobPoints()

This function will return basic information about FOB points for a given product.

Request: GetFobPointsRequest

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
wsVersionThe Standard Version of the Web Service being referenced. Values are enumerated: {1.0.0}STRINGVARCHAR(64)TRUE
idThe customerId or any other agreed upon Id.STRINGVARCHAR(64)TRUE
passwordThe password associated with the customerId.STRINGVARCHAR(64)FALSE
productIdThe productId you are requesting FOB points forSTRINGVARCHAR(64)TRUE
localizationCountryISO 3166-1 Alpha 2 code for Country Example: CA=Canada; US=United StatesSTRINGVARCHAR(2)TRUE
localizationLanguageISO 639-1 Alpha 2 code for Language. Example: en = English; fr = FrenchSTRINGVARCHAR(2)TRUE

Reply: GetFobPointsResponse

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
FobPointArrayArray of fob PointsARRAYARRAYFALSE
errorMessageList of possible values for errors. Values are enumerated—See Appendix A: Error Messages for full details.STRINGVARCHAR(256)FALSE

FobPoint

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
fobIdThe Id of the FOB PointSTRINGVARCHAR(64)TRUE
fobPostalCodeThe Postal or Zip Code of the fob PointSTRINGVARCHAR(64)TRUE
fobCityThe city of the FOB PointSTRINGVARCHAR(64)TRUE
fobStateThe state of the FOB Point in ISO 3166-2 format.STRINGVARCHAR(64)TRUE
fobCountryThe country of the FOB Point in Alpha 2 ISO3166 “CODE” format.STRINGVARCHAR(64)TRUE
CurrencySupportedArrayThe currencies supported for the FOB PointARRAYARRAYTRUE
ProductArrayAn array of productIds associated with the FOB PointARRAYARRAYTRUE

Product

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
productIdThe product idSTRINGVARCHAR(64)TRUE

CurrencySupported

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
currencyThe currency supported for the FOB point in ISO4217 format.STRINGVARCHAR(64)TRUE

Function: getAvailableCharges()

This function provides a list of charges and information on how to calculate charges. It is designed to help populate a database of charge types and design logic to calculate charges.

Request: GetAvailableChargesRequest

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
wsVersionThe Standard Version of the Web Service being referenced. Values are enumerated: {1.0.0}STRINGVARCHAR(64)TRUE
idThe customerId or any other agreed upon Id.STRINGVARCHAR(64)TRUE
passwordThe password associated with the customerId.STRINGVARCHAR(64)FALSE
productIdThe productId you are requesting charges forSTRINGVARCHAR(64)FALSE
localizationCountryISO 3166-1 Alpha 2 code for Country Example: CA=Canada; US=United StatesSTRINGVARCHAR(2)TRUE
localizationLanguageISO 639-1 Alpha 2 code for Language. Example: en = English; fr = FrenchSTRINGVARCHAR(2)TRUE

Reply: GetAvailableChargesResponse

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
AvailableChargeArrayAn array of chargesARRAYARRAYTRUE
errorMessageList of possible values for errors. Values are enumerated—See Appendix A: Error Messages for full details.STRINGVARCHAR(256)FALSE

AvailableCharge

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
chargeIdA unique Id of the chargeINTINTTRUE
chargeNameThe name of the chargeSTRINGVARCHAR(64)TRUE
chargeTypeThe type of charge. Values are enumerated {SETUP, RUN, ORDER}.STRINGVARCHAR(64)TRUE
chargeDescriptionThe charge descriptionSTRINGVARCHAR(256)TRUE

Function: getConfigurationAndPricing()

This function is the main function of the service and provides the pricing and configuration of a product.

Request: GetConfigurationAndPricingRequest

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
wsVersionThe Standard Version of the Web Service being referenced. Values are enumerated: {1.0.0}STRINGVARCHAR(64)TRUE
idThe customerId or any other agreed upon Id.STRINGVARCHAR(64)TRUE
passwordThe password associated with the customerId.STRINGVARCHAR(64)FALSE
productIdThe productId for the pricingSTRINGVARCHAR(64)TRUE
partIdThe partIdSTRINGVARCHAR(64)FALSE
currencyThe unit of currency that the pricing should be returned in ISO4217 “CODE” format.STRINGVARCHAR(64)TRUE
fobIdThe fobId of the FOB pointSTRINGVARCHAR(64)TRUE
priceTypeThe type of pricing that should be returned. Values are enumerated: {Customer, List, Net }STRINGVARCHAR(64)TRUE
localizationCountryISO 3166-1 Alpha 2 code for Country Example: CA=Canada; US=United StatesSTRINGVARCHAR(2)TRUE
localizationLanguageISO 639-1 Alpha 2 code for Language. Example: en = English; fr = FrenchSTRINGVARCHAR(2)TRUE
configurationTypeThe type of configuration of the product to be returned.
Values are enumerated: {Blank, Decorated}
STRINGVARCHAR(32)TRUE

Reply: GetConfigurationAndPricingResponse

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
ConfigurationAn object to hold Configuration data.OBJECTOBJECTTRUE
ErrorMessageResponse for any error requiring notification to requestorOBJECTOBJECTFALSE

Configuration

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
PartArrayAn array of Parts and their pricing and configuration dataARRAYARRAYTRUE
LocationArrayAn array of Locations and their pricing and configuration dataARRAYARRAYFALSE
productIdThe product family. This is how the part is marketed.STRINGVARCHAR(64)TRUE
currencyThe currency the request of the request in ISO 4217 formatSTRINGVARCHAR(64)TRUE
FobArrayAn array of FOB points that support this configurationARRAYARRAYTRUE
fobPostalCodeThe postal code of the FOB pointSTRINGVARCHAR(64)FALSE

PartArray

This object contains information about a part. Parts can either be the main part, required parts, or optional parts that customers can use to configure a product. The partId and partGroup combination should be unique.

Part

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
partIdThe partIdSTRINGVARCHAR(64)TRUE
partDescriptionA description of the partIdSTRINGVARCHAR(128)FALSE
PartPriceArrayAn array of prices and quantitiesARRAYARRAYFALSE
partGroupA numeric identifier grouping mutually exclusive parts together.NUMBERINTTRUE
nextPartGroupThe next mutually exclusive partGroup to complete configuration of the productNUMBERINTFALSE
partGroupRequiredA boolean value specifying if this partGroup is required for the product configurationBOOLEANBOOLEANTRUE
partGroupDescriptionA description of the partGroup. Examples: "Main Product", "Optional Lid", "Straw", etc.STRINGVARCHAR(64)TRUE
ratioDescribes how the amount of partIds that need to be added to the order based on the number of products ordered. Example: If 8 partIds would be required per 1 product ordered, then 8 should be used as the ratio. If one partId is required for every 8 products, then use .125DOUBLEDECIMAL (12,4)TRUE
defaultPartThis part is included in the “Basic Pricing Configuration” service price. This field is optional, but highly encouraged.BOOLEANBOOLEANFALSE
LocationIdArrayAn array of LocationIDs that are available for decoration because the selected part has been configured.ARRAYARRAYFALSE

PartPrice

This object contains pricing for a product based on the partId. Prices are additive in nature. A configuration that requires three parts with three different prices should be summed together on the purchase order.

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
minQuantityThe minimum quantity for the price break.INTINTTRUE
priceThe base price of the good without decorationDOUBLEDECIMAL (12,4)TRUE
discountCodeThe industry discount code associated with the price.STRINGVARCHAR(1)FALSE
priceUomEnumerated list of unit of measure used to describe the price. Values are: {BX, CA, DZ, EA, KT, PR, PK, RL, ST, SL, TH}. BX - Box, CA - Case, DZ - Dozen, EA - Each, KT - Kit, PR - Pair, PK - Package, RL - Roll, ST - Set, SL - Sleeve, TH - ThousandSTRINGVARCHAR(2)TRUE
priceEffectiveDateThe date the price is effective in ISO8601 format.DATEDATETRUE
priceExpiryDateThe date the price is no longer effective in ISO8601 format.DATEDATETRUE

LocationIdArray

This is a list of locationIds that are valid based on the partID that was configured.

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
locationIDThe Id of the available location.INTINTTRUE

LocationArray

This object contains information about available locations for a given product.

Location

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
locationIdA unique Id of the locationINTINTTRUE
locationNameThe name of the locationSTRINGVARCHAR(64)TRUE
DecorationArrayAn array of decorations that are available for the location.ARRAYARRAYTRUE
decorationsIncludedThe number of decorations included in the priceINTINTTRUE
maxDecorationThe maximum number of decorations that can be added to the locationINTINTTRUE
minDecorationThe minimum number of decorations that can be added to the locationINTINTTRUE
locationRankPopularity of location based on supplier experienceINTINTFALSE

Decoration

This object contains decoration information that is valid for a specific location.

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
decorationIdThe ID of the decorationINTINTTRUE
decorationNameThe name of the decorationSTRINGVARCHAR(64)FALSE
decorationGeometryThe geometry of the decoration. Values are enumerated: {Circle, Rectangle, Other}STRINGVARCHAR(64)TRUE
decorationHeightThe maximum imprint height of the decoration; leave blank if the imprint is not rectangularDOUBLEDECIMAL (12,4)FALSE
decorationWidthThe maximum imprint width of the decoration; leave blank if the imprint is not rectangularDOUBLEDECIMAL (12,4)FALSE
decorationDiameterThe maximum imprint diameter of the decoration; leave blank if the imprint is not circularDOUBLEDECIMAL (12,4)FALSE
decorationUomThe unit of measure for the decoration area in ISO 20022 formatSTRINGVARCHAR(64)TRUE
allowSubForDefaultLocationBuyer is allowed to substitute a decoration location without changing the priceBOOLEANBOOLEANFALSE
allowSubForDefaultMethodBuyer is allowed to substitute this decoration method without changing the priceBOOLEANBOOLEANFALSE
itemPartQuantityLTMSpecifies the Part Quantity that is the absolute minimum that can be ordered with a Less Than Minimum (LTM) chargeINTINTFALSE
decorationUnitsIncludedThe number of included decoration units. For example, if 1 color decoration is included set value to “1”. If 7,500 stitches are included set value to “7500”INTINTFALSE
decorationUnitsIncludedUomValues are enumerated: {Colors, Inches, Other, Stitches, SquareInches }STRINGSTRINGFALSE
decorationUnitsMaxThis is the max number of decoration units for this decoration/location combinationINTINTFALSE
defaultDecorationSpecifies whether this is the default decoration for this locationBOOLEANBOOLEANTRUE
leadTimeThe lead time for the given decorationINTINTFALSE
rushLeadTimeThe lead time for rush service for a given decoration (rush charges may apply)INTINTFALSE

Charge

This object contains a charge that is associated with the setup of the product, location, and decoration configuration.

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
chargeIdThe Id of the chargeINTINTTRUE
chargeNameThe name of the chargeSTRINGVARCHAR(64)TRUE
chargeTypeThe type of charge. Values are enumerated {Order, Run, Setup}.STRINGVARCHAR(64)TRUE
chargeDescriptionThe charge descriptionSTRINGVARCHAR(256)TRUE
ChargePriceArrayAn array of charge pricesARRAYARRAYTRUE
chargesAppliesLTMThis charge is applied with ordering Less than Minimum (LTM).BOOLEANBOOLEANTRUE
chargesPerLocationThe number of times a charge will occur per locationINTINTFALSE
chargesPerColorThe number of times a charge will occur per colorINTINTFALSE

ChargePrice

This object contains a single line of a price grid represented by an X and Y axis.

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
xMinQtyThe minimum x-value quantity for this priceINTINTTRUE
xUomThe unit of measure for the x-axis. Values are enumerated: {BX, CA, DZ, EA, KT, PR, PK, RL, ST, SL, TH}STRINGVARCHAR(2)TRUE
yMinQtyThe minimum y-value quantity for this priceINTINTTRUE
yUomThe unit of measure for the y-axis. Values are enumerated: {Colors, Inches, Other, Stitches, SquareInches}STRINGSTRINGTRUE
priceThe price of the chargeDOUBLEDECIMAL (12,4)TRUE
discountCodeThe discount code associated with the priceSTRINGVARCHAR(1)FALSE
repeatPriceThe price of the charge if it is a repeat orderNUMBERDECIMAL (12,4)FALSE
repeatDiscountCodeThe discount code of the repeat priceSTRINGVARCHAR(1)FALSE
priceEffectiveDateThe date the price is effective in ISO8601 formatDATEDATEFALSE
priceExpiryDateThe date the price is no longer effective in ISO8601 formatDATEDATEFALSE

FobArray

This object contains information about the FOB (Free On Board) points that support the configuration. By default, this will always include the valid FOB point that was sent as part of the request.

FOB Point

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
fobIdThe FOB point of the pricingSTRING ARRAYVARCHAR(64)TRUE
fobPostalCodeThe postal code of the FOB pointSTRINGVARCHAR(64)FALSE

Appendix A: Error Messages

These error messages are associated with the setup of the product, location, and decoration configuration.

FieldDescriptionWSDL Data TypeSQL Data TypeRequired?
codeThe numerical value of the codeINTINTTRUE

Standardized Codes

The range of 100-199 has been reserved for standardized error codes. The number 999 has been reserved for an error code that is a "General Error - Contact System Service Provider".

CodeDescription
100ID (customerID) not found
104This account is unauthorized to use this service. Please contact the service provider
105Authentication Credentials failed
110Authentication Credentials required
115wsVersion not found
120The following field(s) are required [Comma Delimited field names]
125Not Supported: [details]
999General Error – Contact the System Service Provider Details: [Details]

Service Specific Code

These error codes are only for this service.

CodeDescription
400productID not found
401currencyID not found
402priceType not found
403fobId not found
404localizationCountry not found
405localizationLanguage not found
406configurationType not found

Diagrams

getAvailableLocations Function

getDecorationColors Function

getFobPoints Function

getAvailableCharges Function

GetConfigurationAndPricing Function