### Activity Details and Configuration Source: https://api-docs.bokun.dev/rest-v1 Defines various properties for an activity, including pickup/dropoff services, pricing, and opening hours. It specifies boolean flags for services like dropoff, custom messages, and whether to use the same pickup places for dropoff. It also details pricing categories, agenda items, start times, and available extras. ```APIDOC showCustomMessage: type: boolean description: Specifies if the custom message is turned on to be shown on ticket. showNoPickupMsg: type: boolean description: Specifies if the custom message when customer does not want pick-up is turned on to be shown on ticket. pickupPlaceGroups: type: object properties: {} description: The list of the pickup place groups for this activity. dropoffService: type: boolean description: Specifies whether this activity offers drop off service. dropoffFlags: type: array description: The list of flags added to the drop-off of this activity. items: type: string customDropoffAllowed: type: boolean description: Only relevant if dropoffService is TRUE. Specifies whether the customer should be allowed to enter their drop off place in free text. useSameAsPickUpPlaces: type: boolean description: Specifies if supplier wants to drop-off users to the same places that they can be picked up from. dropoffPlaceGroups: type: object properties: {} description: The list of the drop-off place groups for this activity. difficultyLevel: type: string description: Specifies how physically demanding this tour/activity is. enum: - VERY_EASY - EASY - MODERATE - CHALLENGING - DEMANDING - EXTREME pricingCategories: type: array description: The list of all pricing categories offered by this product. items: $ref: '#/components/schemas/PricingCategoryDto' agendaItems: type: array description: An optional list of agenda / itinerary items for this tour/activity. items: $ref: '#/components/schemas/AgendaItemDto' startTimes: type: array description: Only used if bookingType == DATE_AND_TIME. A list of scheduled start times for this tour/activity. items: $ref: '#/components/schemas/StartTimeDto' bookableExtras: type: array description: "The list of extras available for this product. Note that not all of these extras may be available for all bookable items. For example, different rates may offer different extras." items: $ref: '#/components/schemas/BookableExtraDto' route: $ref: '#/components/schemas/ActivityRouteDto' hasOpeningHours: type: boolean description: Specifies whether this product has specific opening hours. defaultOpeningHours: $ref: '#/components/schemas/OpeningHours' seasonalOpeningHours: type: array description: Optional seasonal opening hours. If date falls within the season then this will override the default opening hours. items: $ref: '#/components/schemas/SeasonalOpeningHours' displaySettings: type: object properties: showPickupPlaces: type: boolean description: Specifies if pick up places are shown. showRouteMap: type: boolean selectRateBasedOnStartTime: type: boolean customFields: type: array description: "Is set up in old product overview. In order to have custom fields for the product, they have to be enabled, in \"Advanced settings->Custom input fields\"." items: $ref: '#/components/schemas/CustomFieldDto' hasBoxes: type: boolean description: Specifies if this activity product has a box version in the system. requestDeadline: type: integer description: "Deprecated, use 4 fields instead (requestDeadlineMinutes, etc.). The number of miliseconds allocated to confirm or reject booking by activity supplier." format: int64 actualId: type: integer description: "Specifies ID of this product if it is not a box, otherwise ID of boxed activity product." format: int64 bookingCutoff: type: integer description: "Deprecated, use 4 fields instead (bookingCutoffMinutes, etc.). The number of minutes before the activity when we stop accepting bookings." format: int32 nextDefaultPriceAsText: type: string description: "Human readable price (e.g. \"USD 15.90\") for 1 person in the default price category, assuming the future departure date nearest ``` -------------------------------- ### Start Time Schema Source: https://api-docs.bokun.dev/rest-v1 Defines the structure for StartTimeDto, including ID, label, time components (hour, minute), pickup time overrides, duration details (deprecated and current), voucher pickup message, external ID, and flags. ```APIDOC StartTimeDto: type: object properties: id: type: integer description: Specifies ID of the starting time. format: int64 label: type: string description: Specifies label for this starting time. hour: type: integer description: Specifies hours of this starting time. format: int32 minute: type: integer description: Specifies minutes of this starting time. format: int32 overrideTimeWhenPickup: type: boolean description: Specifies if this starting time is overriden by pick up time. pickupHour: type: integer description: Specifies start time hours when different time for pick-up is selected. format: int32 pickupMinute: type: integer description: Specifies start time minutes when different time for pick-up is selected. format: int32 durationType: type: string description: "Deprecated. Should be used durationMinutes, durationHours, durationDays, durationWeeks." voucherPickupMsg: type: string description: Pick-up message on the ticket. externalId: type: string description: "Code for the start time, which could be used for external systems." duration: type: integer description: "Deprecated. Should be used durationMinutes, durationHours, durationDays, durationWeeks." format: int32 durationMinutes: type: integer description: "Duration set for this starting time in minutes. Could be different from activity duration. Total duration is calculated by summing the duration in minutes, hours, days, weeks." format: int32 durationHours: type: integer description: "Duration set for this starting time in hours. Could be different from activity duration. Total duration is calculated by summing the duration in minutes, hours, days, weeks." format: int32 durationDays: type: integer description: "Duration set for this starting time in days. Could be different from activity duration. Total duration is calculated by summing the duration in minutes, hours, days, weeks." format: int32 durationWeeks: type: integer description: "Duration set for this starting time in weeks. Could be different from activity duration. Total duration is calculated by summing the duration in minutes, hours, days, weeks." format: int32 flags: type: array description: The list of the flags created for this starting time. items: type: string ``` -------------------------------- ### Activity Location and Start Points Source: https://api-docs.bokun.dev/rest-v1 Details the starting points and location information for activities, including geographical coordinates and associated places. ```APIDOC Activity: # ... other properties startPoints: array description: "Only relevant if meetingType == MEET_ON_LOCATION or MEET_ON_LOCATION_OR_PICK_UP. The list of all places where this activity starts or can be joined." items: $ref: '#/components/schemas/Place' locationCode: LocationCodeDto googlePlace: type: object properties: country: string countryCode: string city: string cityCode: string geoLocationCenter: type: object properties: lat: number format: double lng: number format: double description: "Represents a point in geographical coordinates: latitude and longitude." # ... other properties ``` -------------------------------- ### Bokun API Booking Endpoints Source: https://api-docs.bokun.dev/rest-v1 Provides documentation for various booking-related API endpoints in the Bokun system. This includes searching for product bookings, general bookings, cancelling product bookings, reserving and confirming activity bookings, retrieving activity booking details, setting customer status for activity bookings, and getting activity tickets. ```APIDOC POST /booking.json/product-booking-search Summary: Search for product bookings and return a list of booking information OperationId: productBookingSearch RequestBody: content: '*/*': schema: $ref: '#/components/schemas/ProductBookingQuery' Responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/ProductBookingSearchResultsDto' POST /booking.json/booking-search Summary: Search for bookings and return a list of booking information OperationId: bookingSearch RequestBody: content: '*/*': schema: $ref: '#/components/schemas/ItineraryBookingQuery' Responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/BookingSearchResultsDto' POST /booking.json/cancel-product-booking/{productConfirmationCode} Summary: Cancel for given product booking OperationId: cancelProductBooking Parameters: - name: productConfirmationCode in: path description: The confirmation code for the activity booking required: true schema: type: string RequestBody: content: '*/*': schema: $ref: '#/components/schemas/cancelProductBooking' Responses: '200': content: application/json: schema: $ref: '#/components/schemas/ApiResponse' POST /booking.json/activity-booking/reserve-and-confirm Summary: Reserve and confirm a single activity booking (bypasses shopping cart) OperationId: reserveAndConfirmActivityBooking RequestBody: content: '*/*': schema: $ref: '#/components/schemas/SingleActivityBookingRequestDto' Responses: '200': content: application/json: schema: $ref: '#/components/schemas/BookingDetailsDto' GET /booking.json/activity-booking/{id} Summary: Show activity booking information OperationId: activityBooking Parameters: - name: id in: path description: The id or confirmation code for the product booking required: true schema: type: string Responses: '200': content: application/json: schema: $ref: '#/components/schemas/ActivityBookingDetailsDto' GET /booking.json/activity-booking/{confirmationCode}/customer-status/{status} Summary: Change the arrived status of an activity booking OperationId: setActivityBookingCustomerStatus Parameters: - name: confirmationCode in: path description: The confirmation code for the product booking required: true schema: type: string - name: status in: path description: The arrived status (ARRIVED/NO_SHOW) required: true schema: type: string Responses: '200': content: application/json: schema: $ref: '#/components/schemas/ActivityBookingDetailsDto' GET /booking.json/activity-booking/{productConfirmationCode}/ticket Summary: Get ticket for given activity booking OperationId: getActivityTicket Parameters: - name: productConfirmationCode in: path description: The confirmation code of the activity booking required: true schema: type: string Responses: '200': description: No response was specified ``` -------------------------------- ### Experience API Endpoints Source: https://api-docs.bokun.dev/index Enables management of experience products, including retrieving and setting components, creating new experiences, and uploading photos. ```APIDOC GET /restapi/v2.0/experience/{experienceId}/components Get selected experience product components PUT /restapi/v2.0/experience/{experienceId}/components set experience product components. Body payload may contain any combination of updated components. POST /restapi/v2.0/experience Create a new experience product POST /restapi/v2.0/experience/{experienceId}/photo Upload a new photo to the existing experience product ``` -------------------------------- ### Experience API Endpoints Source: https://api-docs.bokun.dev/rest-v2 Enables management of experience products, including retrieving and setting components, creating new experiences, and uploading photos. ```APIDOC GET /restapi/v2.0/experience/{experienceId}/components Get selected experience product components PUT /restapi/v2.0/experience/{experienceId}/components set experience product components. Body payload may contain any combination of updated components. POST /restapi/v2.0/experience Create a new experience product POST /restapi/v2.0/experience/{experienceId}/photo Upload a new photo to the existing experience product ``` -------------------------------- ### Activity Booking Cutoff Times Source: https://api-docs.bokun.dev/rest-v1 Defines the cutoff times for accepting bookings before an activity starts, specified in minutes and hours. ```APIDOC Activity: # ... other properties bookingCutoffMinutes: integer description: "The number of minutes before the activity when we stop accepting bookings. Combines with other bookingCutoff[X] fields, e.g. hours=1 and minutes=15 combine into 1h 15min booking cutoff time." format: int32 bookingCutoffHours: integer # ... other properties ``` -------------------------------- ### Currency API Endpoint Source: https://api-docs.bokun.dev/rest-v1 Retrieves a list of all supported currencies and their conversion rates to ISK. ```APIDOC /currency.json/findAll (GET) Summary: Get all Supported Currencies Description: "Get a list of all the available currencies, along with conversion\n rates to ISK." OperationId: allCurrencies Responses: 200: { description: No response was specified, content: { application/json: { schema: { type: array, items: { $ref: '#/components/schemas/CurrencyDto' } } } } } ``` -------------------------------- ### Activity Requirements and Know Before You Go Items Source: https://api-docs.bokun.dev/rest-v1 Details the requirements for participants, such as items to bring, and lists specific 'Know Before You Go' information points like accessibility and dress code. ```APIDOC Activity: # ... other properties requirements: string description: "The text describing what you need to bring for this activity. May contain HTML markup." knowBeforeYouGoItems: array items: type: string enum: - STROLLER_OR_PRAM_ACCESSIBLE - WHEELCHAIR_ACCESSIBLE - LIMITED_MOBILITY_ACCESSIBLE - LIMITED_SIGHT_ACCESSIBLE - ANIMALS_OR_PETS_ALLOWED - PUBLIC_TRANSPORTATION_NEARBY - INFANT_SEATS_AVAILABLE - INFANTS_MUST_SIT_ON_LAPS - PASSPORT_REQUIRED - DRESS_CODE # ... other properties ``` -------------------------------- ### Bokun Product Schema Source: https://api-docs.bokun.dev/rest-v1 Defines the schema for a Bokun product, encompassing general information, pricing, media, and categorization. Includes fields for descriptions, keywords, photos, videos, vendor details, and custom fields. ```APIDOC description: type: string description: Text describing this activity. May contain HTML markup. excerpt: type: string description: "A short, non-HTML summary (max 255 chars) describing the product. This text may be used in activity preview pages." cancellationPolicy: $ref: '#/components/schemas/CancellationPolicyDto' overrideBarcodeFormat: type: boolean description: Specifies if ticket barcode format for this activity overrides standard QR_CODE. barcodeType: $ref: '#/components/schemas/BarcodeTypeEnum' timeZone: type: string description: Specifies timezone for this activity. mainContactFields: type: array description: The list of main contact fields that should be displayed for customer while booking this product. items: $ref: '#/components/schemas/CustomerFieldReferenceDto' requiredCustomerFields: type: array description: Deprecated. Should use "mainContactFields" instead. items: type: string keywords: type: array description: The list of keywords describing the product. items: type: string flags: type: array description: Optional list of flags which the product owner has added to the product. Flags are just simple text labels. items: type: string slug: type: string description: Human readable string that may be used to identify the product. baseLanguage: type: string description: The language that the product description is written in. There may also be translations available. languages: type: array description: The list of languages which the product content is available in. items: type: string paymentCurrencies: type: array description: "" items: type: string customFields: type: array description: "In order to have custom fields for the product, they have to be enabled, in \"Advanced settings->Custom input fields\"." items: $ref: '#/components/schemas/CustomFieldDto' tagGroups: type: array description: "The list of different groups of custom parameters, created for this activity. One example of tag groups - \"Activity type\". All tag groups present in system get be fetched by GET /tag.json/groups. " items: $ref: '#/components/schemas/TagGroupDto' categories: type: array items: $ref: '#/components/schemas/CategoryDto' keyPhoto: $ref: '#/components/schemas/PhotoDto' photos: type: array description: The list of photos showcasing this product. items: $ref: '#/components/schemas/PhotoDto' videos: type: array description: The list of videos showcasing the product. items: $ref: '#/components/schemas/VideoDto' vendor: $ref: '#/components/schemas/VendorDto' boxedVendor: $ref: '#/components/schemas/VendorDto' storedExternally: type: boolean pluginId: type: string description: "" reviewRating: type: number description: "" format: double reviewCount: type: integer description: "" format: int64 activityType: $ref: '#/components/schemas/ActivityType' bookingType: $ref: '#/components/schemas/ActivityBookingType' scheduleType: $ref: '#/components/schemas/ActivityScheduleType' capacityType: $ref: '#/components/schemas/ActivityCapacityType' passExpiryType: $ref: '#/components/schemas/PassExpiryType' fixedPassExpiryDate: type: array description: "Specifies at what fixed date the pass expires (array of year, month, day). Only used if Activity.bookingType == PASS and Activity.passExpiryType == FIXED_DATE. Could be non-empty, if this product had this value previously." items: type: string meetingType: $ref: '#/components/schemas/ActivityMeetingType' privateActivity: type: boolean description: Specifies if this is a private experience (set in Experience/Title and type/"Show as a private experience"). passCapacity: type: integer description: "Only used if bookingType == PASS and capacityType == LIMITED. Since passes are not date based, this is simply the global capacity" ``` -------------------------------- ### Product List Schemas Source: https://api-docs.bokun.dev/rest-v1 Defines the structure for product lists, including descriptions, items, and associated metadata. It references ProductListItemDto for individual product details. ```APIDOC ProductListDescriptionDto: type: object properties: description: type: string flags: type: array items: type: string id: type: integer format: int64 items: type: array items: $ref: '#/components/schemas/ProductListItemDto' parent: $ref: '#/components/schemas/ProductListDescriptionDto' size: type: integer format: int32 slug: type: string title: type: string ``` -------------------------------- ### Bokun API Data Structures Source: https://api-docs.bokun.dev/channel-manager Defines the core data structures used for product information, pricing, and opening hours within the Bokun API. Includes schemas for requests and responses. ```APIDOC GetProductByIdRequest: type: object required: - externalId - parameters properties: externalId: type: string parameters: type: array items: $ref: "#/definitions/PluginConfigurationParameterValue" BasicProductInfo: type: object required: - id - name - pricingCategories properties: id: type: string name: type: string description: type: string pricingCategories: type: array items: $ref: "#/definitions/PricingCategory" cities: type: array items: type: string countries: type: array items: type: string PricingCategory: type: object required: - id - label properties: id: type: string label: type: string minAge: type: integer maxAge: type: integer Rate: type: object required: - id - label properties: id: type: string label: type: string Duration: type: object required: - minutes - hours - days - weeks properties: minutes: type: integer format: int32 default: 0 hours: type: integer format: int32 default: 0 days: type: integer format: int32 default: 0 weeks: type: integer format: int32 default: 0 OpeningHoursTimeInterval: type: object required: - openFrom - openForHours - openForMinutes properties: openFrom: type: string openForHours: type: integer format: int32 openForMinutes: type: integer format: int32 duration: $ref: "#/definitions/Duration" OpeningHoursWeekday: type: object required: - open24Hours properties: open24Hours: type: boolean timeIntervals: type: array items: $ref: "#/definitions/OpeningHoursTimeInterval" OpeningHours: type: object required: - monday - tuesday - wednesday - thursday - friday - saturday - sunday properties: monday: $ref: "#/definitions/OpeningHoursWeekday" tuesday: $ref: "#/definitions/OpeningHoursWeekday" wednesday: $ref: "#/definitions/OpeningHoursWeekday" thursday: $ref: "#/definitions/OpeningHoursWeekday" friday: $ref: "#/definitions/OpeningHoursWeekday" saturday: $ref: "#/definitions/OpeningHoursWeekday" sunday: $ref: "#/definitions/OpeningHoursWeekday" SeasonalOpeningHours: type: object required: - startMonth - startDay - endMonth - endDay - openingHours properties: startMonth: type: integer format: int32 startDay: type: integer format: int32 endMonth: type: integer format: int32 endDay: type: integer format: int32 openingHours: $ref: "#/definitions/OpeningHours" SeasonalOpeningHourSet: type: object properties: seasonalOpeningHours: type: array items: $ref: "#/definitions/SeasonalOpeningHours" ``` -------------------------------- ### Promo Code Schema Source: https://api-docs.bokun.dev/rest-v1 Defines the structure for PromoCodeDto, including ID, code, and description. ```APIDOC PromoCodeDto: type: object properties: id: type: integer format: int64 code: type: string description: type: string ``` -------------------------------- ### Product Information Schema Source: https://api-docs.bokun.dev/rest-v1 Defines the structure for ProductInfoDto, including external ID, flags, internal ID, key photo, price, slug, title, and vendor information. ```APIDOC ProductInfoDto: type: object properties: externalId: type: string flags: type: array items: type: string id: type: integer format: int64 keyPhoto: $ref: '#/components/schemas/PhotoDto' price: type: number slug: type: string title: type: string vendor: $ref: '#/components/schemas/VendorDto' ``` -------------------------------- ### Harbor Schema Source: https://api-docs.bokun.dev/rest-v1 Defines the structure for HarbourDto, including flags, ID, pickup place information, product list ID, and title. ```APIDOC HarbourDto: type: object properties: flags: type: array items: type: string id: type: integer format: int64 pickupPlace: $ref: '#/components/schemas/PickupPlaceDto' productListId: type: integer format: int64 title: type: string ``` -------------------------------- ### Bokun Activity API Endpoints Source: https://api-docs.bokun.dev/rest-v1 This section details the various endpoints available in the Bokun Activity API. It includes methods for retrieving activity information, availability, price lists, and updated product information based on date ranges. Parameters such as dates, language, currency, and inclusion of sold-out items are supported. ```APIDOC /activity.json/availability get: tags: - activity summary: Get available activities for a given time interval operationId: availability parameters: - name: start in: query description: The start date of the interval ('yyyy-MM-dd') required: true schema: type: string - name: end in: query description: The end date of the interval ('yyyy-MM-dd') required: true schema: type: string - name: lang in: query description: The language the content should be served in schema: type: string default: EN - name: currency in: query description: The currency code to use for calculating prices. schema: type: string default: ISK - name: includeSoldOut in: query description: Specify whether to include availabilities that are sold out. schema: type: boolean default: false responses: "200": description: No response was specified content: application/json: schema: type: array items: $ref: '#/components/schemas/ActivityAvailabilityDto' /activity.json/active-ids: get: tags: - activity summary: Get IDs of all active Activities that can be booked operationId: getActivityIds responses: "200": description: No response was specified content: application/json: schema: $ref: '#/components/schemas/SellableActivities' /activity.json/list-updated: get: tags: - activity summary: Get ids/timestamps of all Activities modified in specified date range operationId: getUpdatedActivities parameters: - name: fromDate in: query description: "date range start inclusive (ISO yyyy-MM-ddTHH:mm:ss.SSS - time can be ommitted or partial, time zone UTC)" required: true schema: type: string - name: toDate in: query description: "date range end exclusive (ISO yyyy-MM-ddTHH:mm:ss.SSS - time can be ommitted or partial, time zone UTC)" schema: type: string responses: "200": description: No response was specified content: application/json: schema: $ref: '#/components/schemas/UpdatedProductsResponse' /activity.json/list-by-id: get: tags: - activity summary: Get a list of Activities matching the IDs provided operationId: activityListByIds parameters: - name: ids in: query description: Comma separated list of Activity IDs required: true schema: type: string - name: currency in: query description: The currency code to use for calculating prices. schema: type: string default: ISK - name: lang in: query description: The language the content should be served in schema: type: string default: EN responses: "200": description: No response was specified content: application/json: schema: $ref: '#/components/schemas/SearchResultsDto' /activity.json/{id}/price-list: get: tags: - activity summary: Get Activity price list operationId: priceList parameters: - name: id in: path description: ID of activity for which we want prices required: true schema: type: integer format: int64 - name: currency in: query description: The currency code in which we want the prices. schema: type: string responses: "200": description: No response was specified content: application/json: schema: $ref: '#/components/schemas/ActivityPriceListDto' /activity.json/{id}: get: tags: - activity summary: Get Activity by ID description: Use unique ID for fetching comprehensive information on this activity product. operationId: getActivity parameters: - name: id in: path description: ID of activity to be fetched required: true schema: type: integer format: int64 - name: currency in: query description: The currency code to use for calculating prices. schema: type: string default: ISK - name: lang in: query description: The language the content should be served in schema: type: string default: EN responses: "200": ``` -------------------------------- ### Route API Endpoints Source: https://api-docs.bokun.dev/rest-v1 Provides endpoints for listing routes, checking route availability, and retrieving route details by ID. Includes parameters for currency and language. ```APIDOC /route.json/list: get: tags: - route summary: 'List ' operationId: listRoutes parameters: - name: currency in: query description: The currency code to use for calculating prices. schema: type: string default: ISK - name: lang in: query description: The language the content should be served in schema: type: string default: EN responses: "200": description: No response was specified content: application/json: schema: $ref: '#/components/schemas/RouteDto' /route.json/check-availability: post: tags: - route summary: Get availability report for a particular route operationId: checkRouteAvailability parameters: - name: currency in: query description: The currency code to use for calculating prices. schema: type: string default: ISK - name: lang in: query description: The language the content should be served in schema: type: string default: EN requestBody: description: JSON query content: '*/*': schema: $ref: '#/components/schemas/TransportQuery' required: true responses: "200": description: No response was specified content: application/json: schema: $ref: '#/components/schemas/RouteAvailabilityReportDto' x-codegen-request-body-name: query /route.json/{id}: get: tags: - route summary: Get Route by ID operationId: getRoute parameters: - name: id in: path description: ID of transport route to be fetched required: true schema: type: integer format: int64 - name: currency in: query description: The currency code to use for calculating prices. schema: type: string default: ISK - name: lang in: query description: The language the content should be served in schema: type: string default: EN responses: "200": description: No response was specified content: application/json: schema: $ref: '#/components/schemas/RouteDto' ``` -------------------------------- ### Combo Activity and Ticket Configuration Source: https://api-docs.bokun.dev/rest-v1 Details parameters for combo activities, including references to their constituent parts and specific ticket handling logic. ```APIDOC boxedActivityId: type: integer description: "If this is a box, then this field holds the ID of the activity inside the box." format: int64 comboActivity: type: boolean description: Specifies whether this is a combo activity. comboParts: type: array description: The list of the components of this combo product. items: $ref: '#/components/schemas/ComboPart' ticketPerComboComponent: type: boolean description: Specifies whether this combo activity has tickets per combo component. ticketComboComponents: type: array description: The list of the parts of this combo product for which customer gets separate tickets as well as a ticket for the combo itself. items: $ref: '#/components/schemas/ComboPart' pickupActivityId: type: integer description: Specifies ID of activity which pickup config should be used for syncing pickup service of this combo. format: int64 ``` -------------------------------- ### Question and Answer Schema Source: https://api-docs.bokun.dev/rest-v1 Defines the structure for QuestionAnswerPairDto, linking answers and questions, and providing string representations for both. ```APIDOC QuestionAnswerPairDto: type: object properties: answer: $ref: '#/components/schemas/BookingAnswerWithIdDto' answerAsString: type: string question: $ref: '#/components/schemas/QuestionDto' questionAsString: type: string ``` -------------------------------- ### Availability Management Endpoints Source: https://api-docs.bokun.dev/index Provides endpoints for managing the availability of experience products. Includes fetching availability data, statistics, closeouts, and notifying Bokun about availability changes. ```APIDOC GET /restapi/v2.0/availability/{experienceId} Description: Get availability of a single experience product. This endpoint will not return any data about sold out/closed/past/out-of-resources availabilities. GET /restapi/v2.0/availability/{experienceId}/statistics Description: Get availability statistics of a single experience product. Note that this endpoint is only available for the supplier of requested product. The result object contains much more data about given slot, also returns data about past/sold out/closed/out-of-resources availabilities. GET /restapi/v2.0/availability/{experienceId}/closeouts Description: Get availability closeouts for given product ID. POST /restapi/v2.0/availability/{experienceId}/closeouts Description: Create availability closeouts for given product ID. DELETE /restapi/v2.0/availability/{experienceId}/closeouts Description: Delete availability closeouts for given product ID. POST /restapi/v2.0/experience/{bokunProductId}/availability/changed Description: Inform Bokun about product availability change (designed for Channel Manager products). ``` -------------------------------- ### Bokun Activity Schema Source: https://api-docs.bokun.dev/rest-v1 Defines the structure for activity data, including pricing, combo details, flags, and availability status. ```APIDOC Activity: type: object properties: pricesByRate: type: array description: The list of all detailed prices for each product element in this rate. items: $ref: '#/components/schemas/ActivityRatePrices' comboActivity: type: boolean description: "True if this is combo experience, false - otherwise." comboStartTimes: type: array description: The list of ids and start times of experiences included in this combo product. Empty if this is not a combo activity. items: $ref: '#/components/schemas/ComboStartTimeInfoDto' flags: type: array description: The list of flags related to this product (set in Experience/Advanced). items: type: string defaultPrice: type: number description: "Price for default price category, default rate from default price catalog." pricesByCategory: type: object additionalProperties: type: number format: double description: All price categories and amounts in default vendor currency. pickupPrice: type: number description: Pick-up price per booking. If pick-up pricing is set per participant then value is null. pickupPricesByCategory: type: object additionalProperties: type: number format: double description: "Pick-up prices for one passenger of each category, in default vendor currency." dropoffPrice: type: number description: Drop-off price per booking. If drop-off pricing is set per participant then value is null. dropoffPricesByCategory: type: object additionalProperties: type: number format: double description: "Drop-off prices for one passenger of each category, in default vendor currency." extraPrices: type: object additionalProperties: type: number format: double description: Prices for each extra connected to this activity in default vendor currency. guidedLanguages: type: array description: The list of guided languages for this availability. items: type: string unavailable: type: boolean description: True if the activity is limited availability AND availability == 0 pickupSoldOut: type: boolean description: "True if all pick-up seats are sold for this activity start time, false otherwise." soldOut: type: boolean description: "True if all seats are sold for this activity start time, false otherwise." ``` -------------------------------- ### Activity Categorization and Attributes Source: https://api-docs.bokun.dev/rest-v1 Specifies how activities are categorized and described using predefined attributes and guidance types. ```APIDOC activityCategories: type: array description: The list of categories that the tour/activity/attraction falls into. (Categories & Themes) items: $ref: '#/components/schemas/ActivityCategory' activityAttributes: type: array description: The list of themes that describe the tour/activity/attraction. (Categories & Themes) items: $ref: '#/components/schemas/ActivityAttribute' guidanceTypes: type: array description: "The list of types of guidance on offer, along with what languages each is offered in." items: $ref: '#/components/schemas/Guidance' ``` -------------------------------- ### Bokun Activity API Endpoints Source: https://api-docs.bokun.dev/rest-v1 This section details the various API endpoints available for interacting with Bokun activities. It covers retrieving activities by ID or slug, searching for activities, and fetching availability information. ```APIDOC GET /activity.json/{id}/upcoming-availabilities/{max} summary: Get the next upcoming Activity availabilities description: "Get the list of upcoming availabilities for the activity id (including sold-outs, if parameter \"includeSoldOut\" == true.)" parameters: - name: id in: path description: ID of activity to be fetched required: true schema: type: integer format: int64 - name: max in: path description: The max number of upcoming availabilities to get. required: true schema: type: integer format: int32 - name: lang in: query description: The language the content should be served in schema: type: string default: EN - name: includeSoldOut in: query description: Specify whether to include availabilities that are sold out. schema: type: boolean default: false responses: "200": description: No response was specified content: application/json: schema: $ref: '#/components/schemas/ActivityAvailabilityDto' GET /activity.json/slug/{slug} summary: Look up Activity by slug description: Use corresponding slug (human readable string that is used to identify the product) for fetching this product. Slug is set in Product overview -> Actions -> Slugs. parameters: - name: slug in: path description: The slug of the activity to be fetched required: true schema: type: string - name: lang in: query description: The language the content should be served in schema: type: string default: EN responses: "200": description: No response was specified content: application/json: schema: $ref: '#/components/schemas/ActivityDto' GET /activity.json/{id}/pickup-places summary: Get Pickup / Dropoff places for an Activity parameters: - name: id in: path description: ID of the Activity required: true schema: type: integer format: int64 - name: currency in: query description: The currency code to use for calculating prices. schema: type: string default: ISK - name: lang in: query description: The language the content should be served in schema: type: string default: EN responses: "200": description: No response was specified content: application/json: schema: $ref: '#/components/schemas/ActivityPlacesDto' POST /activity.json/search summary: Search activities and availability parameters: - name: currency in: query description: The currency code to use for calculating prices. schema: type: string default: ISK - name: lang in: query description: The language the content should be served in schema: type: string default: EN requestBody: description: JSON object content: '*/*': schema: $ref: '#/components/schemas/ActivityQuery' required: true responses: "200": description: No response was specified content: application/json: schema: $ref: '#/components/schemas/SearchResultsDto' x-codegen-request-body-name: body GET /activity.json/{id}/availabilities summary: Get Activity availabilities for an interval parameters: - name: id in: path description: ID of activity to be fetched required: true schema: type: integer format: int64 ```