Attraction PromoStandards

Our PromoStandards services are reserved for users who have obtained credentials from Attraction. Connect your promotional product tools to our product data, inventory, media and pricing through read-only SOAP services.

Services

PromoStandards serves the promotional market. Each service has its own HTTPS endpoint and version. Import its public WSDL into a SOAP 1.1 client; the WSDL references the XSD files that define request and response fields, namespaces and element order.

Product Data 2.0.0

Product descriptions, variants, public price breaks and sellable product identifiers.

Inventory 2.0.0

Inventory by product variant, with filters for part, color and size.

Media Content 1.1.0

Product media URLs, with filters for media type, part and classification.

Product Pricing and Configuration 1.0.0

Public price breaks and standard A3 net prices by variant, with available shipping-point currencies. The service path is PPC.

Access

Request PromoStandards credentials at promo@attraction.com. Include your company and the integration you want to connect.

Every operation requires wsVersion, id and password in the XML request body. Set wsVersion to the version of the service being called. Although the standard marks password as optional in some schemas, Attraction requires it.

These credentials are separate from REST API keys. A Bearer key created under API access does not authenticate a PromoStandards request. WSDL and XSD downloads are public and require no credentials.

Operations and parameters

Use the operation names and request types from the WSDL. productId identifies a product; partId identifies one of its variants. Read these identifiers from Product Data instead of constructing them from a product name, color or size.

Product Data

  • getProductSellable: send isSellable=true to list sellable products and parts. Optional filters are productId, partId and lineName. Set localizationCountry and localizationLanguage for the desired market.
  • getProduct: requires productId, localizationCountry and localizationLanguage. Optional filters are partId, colorName and ApparelSizeArray.
  • getProductDateModified: requires changeTimeStamp; returns product identifiers changed strictly after that date. Use an ISO 8601 timestamp with a time zone, then retrieve current product details.
  • getProductCloseOut: currently returns an empty closeout list.

Inventory

  • getFilterValues: requires productId; returns available part identifiers, size labels and colors for inventory filtering.
  • getInventoryLevels: requires productId. The optional Filter accepts partIdArray, LabelSizeArray and PartColorArray. Read the returned availability fields according to the inventory rules.

Media Content

  • getMediaContent: requires productId and mediaType (Image, Video, Audio or Document). Optional filters are partId and classType; set cultureName for the market. A part filter selects its color media plus media shared by the product.
  • getMediaDateModified: requires changeTimeStamp; returns product and part identifiers whose media changed strictly after that date. Use an ISO 8601 timestamp with a time zone.

A valid media type can return an empty list when there is no matching content. Media Content 1.1.0 uses the 1.0.0 namespace URIs from its official WSDL. Keep wsVersion=1.1.0; do not replace the namespace version.

Pricing and Configuration

  • getFobPoints: send productId to retrieve the shipping-point identifier and the currencies published for that product. Use fobId from this response in pricing requests.
  • getConfigurationAndPricing: requires productId, currency, fobId, priceType, localizationCountry, localizationLanguage and configurationType. partId is optional. Use priceType=List for public prices or priceType=Net for standard A3 net prices, with configurationType=Blank.
  • getAvailableLocations, getAvailableCharges and getDecorationColors: return empty responses for valid products. Decoration configurations and pricing are not published through this service.

XML examples

Replace YOUR_ID and YOUR_PASSWORD with your PromoStandards credentials. For requests that need a product, replace PRODUCT_ID with an identifier returned by Product Data. The examples use the US English market; the data scope section describes Canadian parameters.

Send the XML envelope with HTTP POST, Content-Type: text/xml; charset=utf-8 and the operation's SOAPAction. For example, save the first envelope as request.xml, then send:

bash
curl --request POST \
  --header 'Content-Type: text/xml; charset=utf-8' \
  --header 'SOAPAction: "getProductSellable"' \
  --data-binary @request.xml \
  'https://promostandards.api.attraction.com/ProductData/2.0.0/'

Find sellable product identifiers

Product Data endpoint; SOAPAction: "getProductSellable".

xml
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:svc="http://www.promostandards.org/WSDL/ProductDataService/2.0.0/"
  xmlns:shar="http://www.promostandards.org/WSDL/ProductDataService/2.0.0/SharedObjects/">
  <soap:Body>
    <svc:GetProductSellableRequest>
      <shar:wsVersion>2.0.0</shar:wsVersion>
      <shar:id>YOUR_ID</shar:id>
      <shar:password>YOUR_PASSWORD</shar:password>
      <shar:localizationCountry>US</shar:localizationCountry>
      <shar:localizationLanguage>en</shar:localizationLanguage>
      <shar:isSellable>true</shar:isSellable>
    </svc:GetProductSellableRequest>
  </soap:Body>
</soap:Envelope>

Read product inventory

Inventory endpoint; SOAPAction: "getInventoryLevels".

xml
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:svc="http://www.promostandards.org/WSDL/Inventory/2.0.0/"
  xmlns:shar="http://www.promostandards.org/WSDL/Inventory/2.0.0/SharedObjects/">
  <soap:Body>
    <svc:GetInventoryLevelsRequest>
      <shar:wsVersion>2.0.0</shar:wsVersion>
      <shar:id>YOUR_ID</shar:id>
      <shar:password>YOUR_PASSWORD</shar:password>
      <shar:productId>PRODUCT_ID</shar:productId>
    </svc:GetInventoryLevelsRequest>
  </soap:Body>
</soap:Envelope>

Read product images

Media Content endpoint; SOAPAction: "getMediaContent".

xml
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:svc="http://www.promostandards.org/WSDL/MediaService/1.0.0/"
  xmlns:shar="http://www.promostandards.org/WSDL/MediaService/1.0.0/SharedObjects/">
  <soap:Body>
    <svc:GetMediaContentRequest>
      <shar:wsVersion>1.1.0</shar:wsVersion>
      <shar:id>YOUR_ID</shar:id>
      <shar:password>YOUR_PASSWORD</shar:password>
      <shar:cultureName>en-US</shar:cultureName>
      <shar:mediaType>Image</shar:mediaType>
      <shar:productId>PRODUCT_ID</shar:productId>
    </svc:GetMediaContentRequest>
  </soap:Body>
</soap:Envelope>

Read public price breaks

PPC endpoint; SOAPAction: "getConfigurationAndPricing". Replace FOB_ID with the identifier returned by getFobPoints and choose a currency it lists for the product. The example requests public prices; use priceType=Net to request standard A3 net prices when published for that product and currency.

xml
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:svc="http://www.promostandards.org/WSDL/PricingAndConfiguration/1.0.0/"
  xmlns:shar="http://www.promostandards.org/WSDL/PricingAndConfiguration/1.0.0/SharedObjects/">
  <soap:Body>
    <svc:GetConfigurationAndPricingRequest>
      <shar:wsVersion>1.0.0</shar:wsVersion>
      <shar:id>YOUR_ID</shar:id>
      <shar:password>YOUR_PASSWORD</shar:password>
      <shar:productId>PRODUCT_ID</shar:productId>
      <shar:currency>USD</shar:currency>
      <shar:fobId>FOB_ID</shar:fobId>
      <shar:priceType>List</shar:priceType>
      <shar:localizationCountry>US</shar:localizationCountry>
      <shar:localizationLanguage>en</shar:localizationLanguage>
      <shar:configurationType>Blank</shar:configurationType>
    </svc:GetConfigurationAndPricingRequest>
  </soap:Body>
</soap:Envelope>

Data scope

Languages and markets

Product Data and PPC support localizationLanguage=en with localizationCountry=CA or US. French product data is not currently available through PromoStandards. Product Data returns the catalog published for the selected country.

For Media Content, use cultureName=en-CA or en-US; omitting it selects US English. French cultures are not supported. Inventory does not take a language or country parameter.

Pricing

Product Data publishes public MSRP prices. In PPC, priceType=List returns MSRP and priceType=Net returns the standard A3 net price grid when available for the product and currency. If the net grid is absent, the service reports that the requested price type is unavailable.

PromoStandards credentials do not select your account's price tier. The A3 grid is shared across integrations; it does not represent your account's personalized net prices. priceType=Customer is not supported. PPC supports the Blank configuration only; Decorated is not supported.

Discount letters accompany List prices only. Net prices are already net amounts and do not include a discount letter.

Request CAD or USD only when that product has a published grid in the currency. getFobPoints lists the available currencies; localizationCountry does not convert prices or create a missing grid. Use the price breaks and size-specific prices returned by the service, and respect the published expiry dates.

Inventory and products without stock quantities

For made-to-order Ethica color-block products and hyper custom Jameo products, Inventory returns manufacturedItem=true and buyToOrder=true, with quantityAvailable omitted. Product Data marks each part with isOnDemand=true.

An omitted quantity is not zero stock or a numeric promise of unlimited inventory. Keep the flags when importing these products. Other variants can also omit quantityAvailable when no inventory quantity is available; do not substitute zero. Inventory does not currently publish replenishmentLeadTime.

Errors and integration policies

Read the PromoStandards error reference to interpret service messages and decide whether to retry. It distinguishes application errors inside successful HTTP responses from SOAP Faults and also covers HTTP 429 and 503 responses.

The Developers page maintains rate limits, versions and deprecation, the changelog and support guidance. Each policy identifies the interface it applies to.