Price Schedule
The Price Schedule capability adds an endpoint to the OBS Capabilities API that allows operators to set prices for available Units on a daily basis and for different times in that day.
Many of Redeam's Resellers are actively moving to Price Schedule supported functionality. Additional pricing features and functionality will be added to this capability vs the standard Pricing capability. We highly recommend the use of Price Schedule to future proof your implementation with Redeam.
We do not recommend using both Price Schedule and Pricing per Product. Pricing is intended for static pricing that is constant regardless of date/time. Price Schedule is intended for pricing that may vary by date. If you have ANY variation in pricing by date please use Price Schedule and set a price for every date that you have availability. This will ensure that the Resellers get the price you intended for that date.
This capability does not modify the Product object in the base OBS specification, so no X-Capabilities
header is required for Price Schedule. Reference can be found here
Products which utilize the price schedule MUST be booked using price-schedule prices, if a price-schedule price is available on the selected travel date.
Products with valid availability for a date with no price-schedule prices are bookable. This means the system will not deny the booking. If a price-schedule-enabled product is successfully booked on a date with no price-schedule prices, the price specified in the redeam/pricing capability will be used - or a default value of $0 will be assigned. Please make sure product price-schedules are in alignment with product availability!
GET
/suppliers/:supplierId/products/:productId/pricing/schedule
Requests to the Price Schedule API endpoint contain two required path parameters and two optional query parameters:
Parameter Name | Description | In | Format | Example |
---|---|---|---|---|
supplierId | ID of the Supplier, unique within the OBS | path | string | Widget World |
productId | ID of the Product, unique within the Supplier | path | string | Widget World Tour |
start_date | Start of the date range to return, inclusive | query | RFC3339 Date | 2021-04-15 |
end_date | End of the date range to return, inclusive | query | RFC3339 Date | 2021-05-15 |
These parameters accept dates only, and not times. For example, 2021-04-15
is valid, but 2021-04-15T00:00:00Z
is not.
All dates MUST be local to the Product.
If the start_date
is not provided, the value MUST default to the current date (localized to the Product).
If the end_date
is not provided, the value MUST default to the value of the start_date
parameter, plus 30 days.
The response contains a single Price Schedule object, which contains three nested dictionaries or maps.
- The top-level map uses
OptionID
s as keys. - Each
OptionID
key contains a map using one or moreDate
s as the key. - Each
Date
key contains a map using one or moreUnitID
s as the key. - Finally, each
UnitID
points to an array. Each array contains, for thatUnit
andDate
:- An optional array of
startTimes
containing the times of the day. IfstartTimes
is empty, this price is valid for the entire date. - All valid prices (
original
,net
,retail
) and theircurrency
- An optional array of
includedTaxes
if any taxes or additional fees are included in the prices
- An optional array of
Included Taxes
The includedTaxes
array lists any taxes or fees that are already included in the retail or net price.
Note: Either original
, net
or retail
must be included, all of them may be provided if applicable.
Each includedTaxes
object must contain the following fields:
Field Name | Format | Required | Description |
---|---|---|---|
id | string | No | A unique identifier for the tax or fee. Typically used for internal reference or integration purposes. |
name | string | Yes | A short name or description of the tax being applied (e.g., "VAT", "City Tax"). |
currency | string | Yes | The currency code (ISO 4217 format) in which the tax amount is expressed (e.g., "USD", "EUR").
The currency must match the currency used for the unit item's price (original , net or retails ). |
original | int64 | Optional - conditionally required | The amount of tax or fee applied to the original price. At least one of |
net | int64 | Optional - conditionally required | The amount of tax or fee applied to the net price. At least one of |
retail | int64 | Optional - conditionally required | The amount of tax or fee applied to the retail price. At least one of |
Examples
{
"Widget Tour w/ Audio": {
"2021-04-01": {
"Adult": [
{
"startTimes": [
"2021-04-01T12:30:00-06:00",
"2021-04-01T14:30:00-06:00"
],
"original": 3195,
"retail": 2995,
"net": 2545,
"currency": "USD"
},
{
"startTimes": [
"2021-04-01T16:30:00-06:00"
],
"original": 2525,
"retail": 2151,
"net": 2043,
"currency": "GBP",
"includedTaxes": [
{
"id": "vat_001",
"name": "VAT",
"currency": "USD",
"retail": 230,
"net": 215
}
]
}
],
"Child": [
{
"original": 1525,
"retail": 1151,
"net": 1043,
"currency": "GBP",
"includedTaxes": [
{
"id": "vat_001",
"name": "VAT",
"currency": "USD",
"retail": 190,
"net": 175
}
]
}
]
}
}
}