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:
|
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:
| |
Value | string | Mandatory | ||
PriceRules | Object | Optional | ||
Eligibility | Object | Optional | ||
ThresholdQuantity | Object(Quantity) | Optional | ||
Units | decimal | Mandatory | ||
UnitOfMeasureCode | string | Mandatory | Enum:
|
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
{
"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.
{
"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.
The Price Changer sends a collection of Package Price Data to the Price Server
(Optional) The Price Server acknowledges receipt of the Price Data


Conformance JSON Instance Document – Price Rule Update – Item Quantity
{
"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
{
"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
{
"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"
}
}
}
}
}
}