Component: RATES
Abstract
Rates are key elements for each experience product which define different pricing levels as well as setup for settings like pickups, extras, tiers, cancellation policies and so on.
Values for this component can be set via ExperienceComponentsDto.rates
which is ExperienceRatesDto
type.
Note: rates can be deleted (by omission on update) but having at least one rate is mandatory for any product at any time.
Attributes of ExperienceRatesDto
Attribute JSON path | Attribute JSON path | Data type | Mandatory | Settable | Notes |
defaultRate | IdExternalIdDto | ✓ | ✓ | References which rate is the default (via Bokun-local IdExternalIdDto::id and/or IdExternalIdDto::externalId ) | |
rates | Array of ExperienceRateDto s | ✓ | ✓ | A list of rates which is applicable for this product. Note: make sure complete list of rates is sent on product update as omitted rates will be removed | |
id | long | Mandatory on update, must be omitted on create | Rate id | ||
externalId | string | ✓ | Could be set to for convenient referencing elsewhere, such as defaultRate (via IdExternalIdDto::externalId , etc | ||
title | string | ✓ | ✓ | Rate title | |
description | string | ✓ | Rate description | ||
created | TimestampDto | Date/time when this rate was created. Can’t be set, only retrieved | |||
lastModified | TimestampDto | Date/time when this rate was last modified. Can’t be set, only retrieved | |||
minPerBooking | int | ✓ | Minimum passenger count required to book this rate. Defaults to 1 if omitted | ||
maxPerBooking | int | ✓ | Maximum number of passengers allowed to book this rate | ||
pickupSelectionType | AddonSelectionTypeDto | ✓ | ✓ | Whether pickup is UNAVAILABLE , OPTIONAL or mandatory (PRESELECTED ) for this rate. Note that pickup must be enabled via MEETING_SETTINGS if enabled here | |
pickupPricingType | AddonPricingTypeDto | Mandatory if pickup is preselected or optional, otherwise should be omitted | ✓ | Is pickup included in price or priced separately? If priced separately, relevant pickup pricing rule(s) will have to be present | |
pickupPricedPerPerson | boolean | Mandatory if pickup is preselected or optional, otherwise should be omitted | ✓ | Whether pickup priced per person ( true ) or per booking (false ) | |
dropoffSelectionType | AddonSelectionTypeDto | ✓ | ✓ | Whether dropoff is UNAVAILABLE , OPTIONAL or mandatory (PRESELECTED ) for this rate. Note that dropoff must be enabled via MEETING_SETTINGS if enabled here | |
pickupPricingType | AddonPricingTypeDto | Mandatory if dropoff is preselected or optional, otherwise should be omitted | ✓ | Is dropoff included in price or priced separately? If priced separately, relevant dropoff pricing rule(s) will have to be present | |
pickupPricedPerPerson | boolean | Mandatory if dropoff is preselected or optional, otherwise should be omitted | ✓ | Whether dropoff priced per person ( true ) or per booking (false ) | |
cancellationPolicyId | long | ✓ | ✓ | ID of the cancellation policy used for this rate (refers to CancellationPolicyDto::id ) | |
pricedPerPerson | boolean | ✓ | ✓ | if set to true , prices for this rate are expressed per person (per pricing category). If set to false , price is set per booking regardless how many passengers have booked. Note that this is independent from relevant pickup, dropoff and extra settings — as they have their own | |
tieredPricingEnabled | boolean | Mandatory if pricedPerPerson is true otherwise should be omitted | ✓ | ||
tiers | Array of ExperienceRateTierDto | Mandatory if tieredPricingEnabled is true otherwise should be omitted | ✓ | Passenger ranges for specific pricing categories applicable for this rate. Tiers must be continuous and not overlap. Note: when updating, make sure a complete set of tiers is sent as omitted entries will be removed | |
extraConfigs | Array of ExperienceRateExtraConfigDto | ✓ | A list of configuration objects linking this rate with extras. Note: when updating, make sure a complete set of tiers is sent as omitted entries will be removed | ||
allStartTimes | boolean | This flag must be specified only if bookingType is DATE_AND_TIME , otherwise should be omitted | ✓ | If set to true , this will infer that all start times (currently linked against the product as well as those created in the future) will be applicable for this rate.
If set to false , startTimes must contain specific IDs applicable for this rate | |
startTimes | Array of IdExternalIdDto | Mandatory if allStartTimes is false and bookingType is DATE_AND_TIME , otherwise should be omitted | ✓ | A set of start times applicable for this rate. Each element can be specified via id and/or externalId .
Specifying empty array has the same effect as having allStartTimes set to true . Note: when updating, make sure a complete set of tiers is sent as omitted entries will be removed | |
allPricingCategories | boolean | ✓ | ✓ | If set to true , this will infer that all pricing categories (currently linked against the product as well as those created in the future) will be applicable for this rate. If set to false, pricingCategoryIds must contain specific IDs applicable for this rate. | |
pricingCategoryIds | Array of long s | Mandatory if allPricingCategories is false , otherwise should be omitted | ✓ | A set of pricing category IDs ( PricingCategoryDto::id ) applicable for this rate. Note: when updating, make sure a complete set of tiers is sent as omitted entries will be removed |
Attributes of ExperienceRateTierDto
Attribute JSON path | Data type | Mandatory | Settable | Notes |
id | long | Mandatory on update, must be omitted on create | ID of this rate tier object | |
minPassengersRequired | int | ✓ | ✓ | Opening (inclusive) range for this tier. For example, to express the fact that this tier accepts 1..2 passengers, use minPassengersRequired == 1 and maxPassengersRequired == 2 |
maxPassengersRequired | int | ✓ | Closing (inclusive) range for this tier. null represents infinity. For example, to express the fact that this tier accepts 3 passengers or more, use minPassengersRequired == 3 and maxPassengersRequired == null . Note that such open closing range can only be one per entire set | |
pricingCategoryId | long | ✓ | ✓ | Specifies which pricing category ( PricingCategoryDto::id ) is defined with this pricing tier |
Attributes of ExperienceRateExtraConfigDto
Attribute JSON path | Data type | Mandatory | Settable | Notes |
id | long | Mandatory on update, must be omitted on create | ID of this extra config object (as opposed to ID of extra!) | |
extra | IdExternalIdDto | ✓ | ✓ | Which extra is used in this config? Referenced via IdExternalIdDto::id and/or EdExternalIdDto::externalId |
selectionType | ExperienceExtraSelectionTypeDto | ✓ | ✓ | OPTIONAL if the end user may or may not purchase it with the booking. PRESELECTED if the end user can’t opt out purchasing this extra (note that pricing settings are specified separately) |
pricingType | AddonPricingTypeDto | ✓ | ✓ | Whether extra price is INCLUDED_IN_PRICE (no separate pricing rule is needed) or PRICED_SEPARATELY (a new pricing rule is needed) |
pricedPerPerson | boolean | ✓ | ✓ | If set to true , this extra is priced per person (single pax). false if priced per booking |
Did this answer your question?
😞
😐
🤩