Skip to main content
Skip table of contents

Prices

Out of scope message: It has been agreed by all parties (Alon, Andrew and Omar) that the product message has sufficient price detail, such that a seperate message is not needed. At a later date, as pricing becomes more complex (e.g. baskets, kits, compounds and promotions etc.) we will investigate whether the seperate price message is needed.

Field Name

Field Type

Optional/Mandatory

Length

Description

Request Type

string

Mandatory

 

Enum:

  • PriceAddUpdate

  • PriceDelete

Supplier

Object

Mandatory

ID

Mandatory

Name

Optional

ItemID

Object

Mandatory

Type

string

Optional

Available Values[SKU]

ID

string

Mandatory

AlternativeItemIDs

Object

Optional

Type

string

Optional

ID

string

Mandatory

CurrentPrice

Object

Mandatory

ValueTypeCode

string

Mandatory

Enum:

  • UnitCostPrice: The weighted average cost for each retail sale unit of this item. The weighted average cost is updated each time a shipment of this item is received

  • UnitListPrice: The suggested sale unit retail price provided by the items manufacturer. Alternate names - list price, manufacturer recommended price, MSRP, Manufacturer Unit Price, Unit List Price.

  • RegularSalesUnitPrice: The sale unit monetary value of the item which is the original retail minus permanent markdowns taken against this item.

Value

string

Mandatory

PriceRules

Object

Optional

Eligibility

Object

Optional

ThresholdQuantity

Object(Quantity)

Optional

Units

decimal

Mandatory

UnitOfMeasureCode

string

Mandatory

Enum:

  • EA: Each

6 USE CASE: PRICE UPDATE (SUPPLIER & RETAIL PRICING)

Overview

Price Update use cases return a collection of prices to the client (a PriceServer or PriceConsumer) from the server (a PriceServer or PriceChanger) in order to update a price file or provide a collection of optional prices.

6.2 Publish Price Update

Brief Description

A Price Changer publishes to a Price Server a Price Update which is a collection of Price Change(s). A Price Change includes an ItemID, and a Price that may include Transaction Context (e.g. Location, EffectiveDate, ExpirationDate) for each of one or more PriceType(s).

Pre Conditions

  • The required Price Changes have been determined.

Post Conditions

  • The Price Server has received, though not necessarily applied, the Price Changes.

Business Errors

  • The Price Server is unable to fully resolve the requested Price Update and responds with business error information on an. (e.g. Transaction Qualification not found, Customer Qualification not found, Unknown PriceType).

Sample Sequence Diagram*

*Sample Sequence diagrams are for illustration purposes only and are not meant to imply an architecture.

1. The Price Changer sends a collection of Price Rule Data to the Price Server

2. (Optional) The Price Server acknowledges receipt of the Price Data

Data

  • ItemID

  • PriceType

  • TransactionQualification

  • CustomerQualification

JSON
{
   "Price": {
      <!-- Transaction Headers -->
      "RequestType": "RetailPriceUpdate",
      "ItemID": {
         "Type": "SKU",
         "ID": "1001"
      },
      "AlternativeItemIDs": [
        {
          "Type": "UPN",
          "ID": "1231231"
        }
      ],
      "CurrentPrice": [
        {
          "ValueTypeCode": "UnitCostPrice",
          "Value": "179.00"
        },
        {
          "ValueTypeCode": "UnitListPrice",
          "Value": "199.00"
        },
        {
          "ValueTypeCode": "RegularSalesUnitPrice",
          "Value": "199.00"
        },
      ]
   }
}

Same example as above, this time focusing on only supplier prices.

JSON
{
   "Price": {
      <!-- Transaction Headers -->
      "RequestType": "SupplierPriceUpdate",
      "Supplier": {
          "ID": "104",
          "Name": "API Supplier NSW"
      },
      "ItemID": {
         "Type": "SKU",
         "ID": "1001"
      },
      "AlternativeItemIDs": [
        {
          "Type": "UPN",
          "ID": "1231231"
        }
      ],
      "CurrentPrice": [
         {
          "ValueTypeCode": "UnitCostPrice",
          "Value": "185.00",
          "Eligibility": {
            "ThresholdQuantity": {
              "Units": 1,
              "UnitOfMeasureCode": "EA"
            },
            "EffectiveDateTimestamp": "2021-07-01",
            "ExpirationDateTimestamp": "2022-01-01"
          },
        },
        {
          "ValueTypeCode": "UnitCostPrice",
          "Value": "179.00",
          "Eligibility": {
            "ThresholdQuantity": {
              "Units": 5,
              "UnitOfMeasureCode": "EA"
            },
            "EffectiveDateTimestamp": "2021-07-01",
            "ExpirationDateTimestamp": "2022-01-01"
          },
        }
      ]
   }
}

7 USE CASE: PRICE RULE UPDATE (OUT OF SCOPE until Promotions)

Overview

Price Rule Update use cases allow the back-end system (either Price Changer or Price Server) to send a (possibly unsolicited) message to the client Price Server providing a collection of price rule data. This price data includes relevant price rules and will allow the Price Server to calculate prices of both items and shopping carts. Since Retailers are infinitely clever with their price rules, this area is the one that causes the most flexibility in the schema.

The basis for a Price Rule is Eligibility and Derivation to the Price based on that eligibility.

7.1 Price Rule Update – Item Quantity

Brief Description

Price Rule update which supports the setting of prices based on the quantity purchased.

Pre Conditions

• The ItemID(s) are known to the Price Server.

• The Quantity values are known to the Price Server.

• The Quantity Prices are Known to the Price Server.

Post Conditions

• The response will be receipt acknowledgment.

Business Errors

• The Price Consumer responds incomplete results and includes business error information. (e.g. ItemID not found).

Sample Sequence Diagram*

*Sample Sequence diagrams are for illustration purposes only and are not meant to imply an architecture.

  1. The Price Changer sends a collection of Package Price Data to the Price Server

  2. (Optional) The Price Server acknowledges receipt of the Price Data

Conformance JSON Instance Document – Price Rule Update – Item Quantity

JSON
{
   "PriceMessage": {
      "MessageID": "12345",
      "ResponseType": "PriceRuleUpdate",
      "PriceRuleSet": {
         "PriceRule": {
            "PriceRuleID": "MyPriceRule",
            "Eligibility": {
               "ItemID": {
                  "Type": "SKU",
                  "ID": "1001"
               },
               "ThresholdQuantity": "2"
            },
            "Derivation": {
               "NewPrice": {
                  "ValueTypeCode": "RegularSalesUnitPrice",
                  "Amount": "199.00"
               }
            }
         },
         "PriceRuleID": "MyPriceRule"
      }
   }
}

Private Brand Soda Price Rules

JSON
{
   "PriceMessage": {
      "ResponseType": "PriceRuleUpdate",
      "BusinessUnit": "Store-12",
      "PriceRuleSet": {
         "ItemCollectionID": "Private Brand Soda price rule",
         "PriceRule": [
            {
               "PriceRuleID": "Single Can Price",
               "Eligibility": {
                  "ItemCollectionID": "Private Brand Soda price rule",
                  "Quantity": 1
               },
               "Derivation": {
                  "NewPrice": {
                     "ValueTypeCode": "RegularSalesUnitPrice",
                     "Amount": .50
                  }
               }
            },
            {
               "PriceRuleID": "6 Pack Price",
               "Eligibility": {
                  "Quantity": 6
               },
               "Derivation": {
                  "NewPrice": {
                     "ValueTypeCode": "RegularSalesUnitPrice",
                     "Amount": 2.75
                  }
               }
            },
            {
               "PriceRuleID": "12 Pack Price",
               "Eligibility": {
                  "Quantity": 12
               },
               "Derivation": {
                  "NewPrice": {
                     "ValueTypeCode": "RegularSalesUnitPrice",
                     "Amount": 4.99
                  }
               }
            }
         ]
      }
   }
}

Sample IXRetail XML for Early Bird Sale

JSON
{
   "PriceMessage": {
      "ResponseType": "PriceRuleUpdate",
      "BusinessUnit": "Store-12",
      "PriceRuleSet": {
         "PriceRule": {
            "PriceRuleID": "Early Bird Sale",
            "Eligibility": {
               "Function": "AND",
               "Qualification": [
                  {
                     "Name": "Dept",
                     "Comparator": "NOT",
                     "Value": "Drug"
                  },
                  {
                     "Name": "Dept",
                     "Comparator": "NOT",
                     "Value": "Tobacco"
                  },
                  {
                     "Name": "Dept",
                     "Comparator": "NOT",
                     "Value": "Alcohol"
                  },
                  {
                     "Name": "TimeOfDay",
                     "Comparator": "BEFORE",
                     "Value": "8:00 AM"
                  },
                  {
                     "Name": "TimeOfDay",
                     "Comparator": "AFTER",
                     "Value": "6:00 AM"
                  }
               ]
            },
            "Derivation": {
               "RetailPriceModifier": {
                  "Direction": "Discount",
                  "Sequence": "1",
                  "Percent": "20"
               }
            }
         }
      }
   }
}
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.