Component: PRICING
Abstract
This component allows setting and retrieving prices for experience product components, such as pricing categories, pickups, extras and so on.
Values for this component are provisioned via ExperienceComponentsDto.pricing
which is of ExperiencePricingDto
type.
Pricing for all price-applicable components is required for a product to be activable/publishable. Note that pricing components are derived from corresponding settings, for example if the product rate is set to be priced per booking then a relevant per-booking pricing rule should exist.
Note (1): make sure a complete list of rules is always sent on update as otherwise omitted rules will be erased.
Note (2): price rules are immutable. Once created, rules can’t be modified. If you want to modify a price item make sure you omit price rule ID (this will cause the said rule to be deactivated) and supply a new ID-less rule with all the necessary settings. The new rule will be inserted on top of existing one. Specifying duplicate rules for the same price item (same currency, same price catalog, same pricing category, same base/schedule and so on) will cause rejection.
Dimensions of pricing rules
Bókun's pricing rules have the following dimensions:
- price catalog. This is a feature modeled after paper catalogs. The general idea behind catalogs is to have the ability to have different prices for different sales channels if needed
- currency. Specified for each product separately but also linked against price catalog
- rate
- pricing category (if priced per person, otherwise if per booking only one price can be set without involving pricing categories)
- tier (if priced per person and tiered pricing is enabled), configured at rate level. Note that different price can be set for each pricing category / tier combination)
Apart from dimensions listed above, these are the entities for which prices can be specified:
- product itself
- extra. Note that extras can also be per person and per booking (configured at each rate for each extra), regardless whether product is per person or not. Extras can be price inclusive (rule is not needed) or price exclusive (rule is needed).
- pickup. Same as extras, per person / per booking is configured at rate level, independent from product per person / per booking settings. Price inclusive / exclusive configured at rate level for each pickup
- dropoff. A separate set of settings, same as for pickups & extras
Note: tiers only apply to products and not extras/pickups/dropoffs. Rates, price catalogs, currencies and pricing categories though, can be applied to all 4 types.
Attributes of ExperiencePricingDto
Attribute JSON path | Data type | Mandatory | Settable | Notes |
experiencePriceRules | Array of ExperiencePriceRuleDto | ✓ | ✓ | Price rules pertaining to pricing categories, tiers and per-booking prices |
extraPriceRules | Array of ExtraPriceRuleDto | ✓ | Prices pertaining to extras, as configured at rate level | |
pickupPriceRules | Array of PickupPriceRuleDto | ✓ | Prices pertaining to passenger pickups, as configured at rate level | |
dropoffPriceRules | Array of DropoffPriceRuleDto | ✓ | Prices pertaining to passenger dropoffs, as configured at rate level | |
priceCatalogCurrencies | Array of ExperiencePriceCatalogCurrenciesDto | ✓ | ✓ | Specifies which price catalogs are linked to each product, as well as which currency(-ies) are applicable for said catalog/product |
Common attributes shared by ExperiencePriceRuleDto
, ExtraPriceRuleDto
, PickupPriceRuleDto
and DropoffPriceRuleDto
Attribute JSON path | Data type | Mandatory | Settable | Notes |
id | long | Should only be supplied if any given rule should be kept as-is. Must be omitted on creation of a new rule | ID numbering is independent and may clash among different types (extra, pickup and so on) | |
rate | IdExternalIdDto | ✓ | ✓ | Should reference experience product rate either using Bokun-local rate ID or external ID |
created | TimestampDto | Date/time this rule was created. Read-only attribute. Expressed as a number of milliseconds since January 1, 1970, 00:00:00 UTC | ||
priceCatalogId | long | ✓ | ✓ | Which price catalog is this rule referencing? |
currency | string | ✓ | ✓ | ISO 4217 currency code. Currency for this price rule. Note that currency must be supported by Bokun |
amount | string | ✓ | ✓ | Price amount for this rule. Can’t be negative or excessive. Refer to BigDecimal format for more details |
priceScheduleId | long | ✓ | If set, this will refer to a specific price schedule. Otherwise this will treated as a “base” rule (applicable always) | |
pricingCategoryId | long | Only if rule applies to a specific pricing category (as opposed to per-booking rules) | ✓ | Should refer to a pricing category ID which is assigned to the product |
Specific ExperiencePriceRuleDto
attributes
Attribute JSON path | Data type | Mandatory | Settable | Notes |
tierId | long | Mandatory if rule pertains to tiered pricing | ✓ | ID of tier. Reference to ExperienceRateTierDto::id |
Note: at the moment it is not possible to create a product with tiered pricing and set all the prices in one request as tierId
is only available after rate creation. The workaround is to create the product with according rate setup using the first/create request and then set the prices with a subsequent update request.
Specific ExtraPriceRuleDto
attributes
Attribute JSON path | Data type | Mandatory | Settable | Notes |
extraId | IdExternalIdDto | ✓ | ✓ | ID of extra |
Specific PickupPriceRuleDto
attributes
None
Specific DropoffPriceRuleDto
attributes
None
Attributes of ExperiencePriceCatalogCurrenciesDto
Attribute JSON path | Data type | Mandatory | Settable | Notes |
priceCatalogId | long | ✓ | ✓ | Price catalog id ( PriceCatalogDto::id ) |
currencies | Array of string s | ✓ | ✓ | Specifies which currency(-ies) is/are applicable for this product and price catalog combo. Each currency string must be of ISO 4217 format and supported by Bokun |
defaultCurrency | string | ✓ | ✓ | One of supplied currencies which should be marked as the default currency for this product/catalog |