---
title: "Attraction PromoStandards"
description: "PromoStandards endpoints, WSDLs, access and XML examples for Attraction's promotional products, inventory, media, MSRP and standard A3 net prices."
locale: "en-us"
canonical: "https://www.attraction.com/en-us/promo/promostandards/"
markdown: "https://www.attraction.com/en-us/promo/promostandards.md"
last_updated: "2026-09-11"
---

# 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.

<a id="services"></a>

## 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.

- Endpoint: [ProductData/2.0.0/](https://promostandards.api.attraction.com/ProductData/2.0.0/)
- Contract: [Product Data WSDL](https://promostandards.api.attraction.com/ProductData/2.0.0/?wsdl)

### Inventory 2.0.0

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

- Endpoint: [Inventory/2.0.0/](https://promostandards.api.attraction.com/Inventory/2.0.0/)
- Contract: [Inventory WSDL](https://promostandards.api.attraction.com/Inventory/2.0.0/?wsdl)

### Media Content 1.1.0

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

- Endpoint: [MediaContent/1.1.0/](https://promostandards.api.attraction.com/MediaContent/1.1.0/)
- Contract: [Media Content WSDL](https://promostandards.api.attraction.com/MediaContent/1.1.0/?wsdl)

### 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`.

- Endpoint: [PPC/1.0.0/](https://promostandards.api.attraction.com/PPC/1.0.0/)
- Contract: [Pricing and Configuration WSDL](https://promostandards.api.attraction.com/PPC/1.0.0/?wsdl)

<a id="authentication"></a>

## Access

Request PromoStandards credentials at [promo@attraction.com](mailto: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](/en-us/api/#authentication) does not authenticate a PromoStandards request. WSDL and XSD downloads are public and require no credentials.

<a id="operations"></a>

## 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](#data-scope).

### 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.

<a id="examples"></a>

## 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](#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>
```

<a id="data-scope"></a>

## 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`.

<a id="integration-policies"></a>

## Errors and integration policies

Read the [PromoStandards error reference](/en-us/developers/#promostandards-errors) 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](/en-us/developers/#rate-limits), [versions and deprecation](/en-us/developers/#versioning-and-deprecation), the [changelog](/en-us/developers/#changelog) and [support guidance](/en-us/developers/#status-and-support). Each policy identifies the interface it applies to.

## Sitemap

- [Full XML sitemap](https://www.attraction.com/sitemap.xml)
- [Page index for agents](https://www.attraction.com/llms.txt)
