githubEdit

Packages

Adds package information showing sub-products within a booking

To use this capability, add octo/packages to your Octo-Capabilities header.

Packages are products that contain selectable sub-products ("includes"). You can sell package products without this capability, but enabling it exposes include-level product schema, include-aware availability, and include booking operations.

Package Products

This capability extends product routes documented in Products:

  • GET /products

  • GET /products/{productId}

Each option.packageIncludes[].includes[] item follows the include object schema shown for product responses.

Base product schema: Products. This page documents only package additions.

Package Availability

This capability extends availability routes documented in Availability:

  • POST /availability

  • POST /availability/calendar

/availability responses add:

Each packageAvailabilities[] item is a full availability object (same fields as top-level availability) plus nested packageAvailabilities. /availability/calendar keeps the normal calendar schema and does not add packageAvailabilities.

Base availability schema: Availability.

Package Booking

This capability extends booking write routes documented in Bookings:

  • POST /bookings

  • PATCH /bookings/{uuid}

Additional booking route variants that use the same package payload handling:

  • POST /bookings/{uuid}/confirm

Variant 1: Parent Booking With packageBookings[]

You can add include bookings while creating or updating the parent package booking by sending packageBookings.

Base booking schema: Bookings.

Variant 2: Direct Include Booking With packageUuid

You can create/update a single include booking directly by sending package context at the top level.

Base booking schema: Bookings.

Booking responses include package-specific fields.

These are additive response fields on the base booking schema from Bookings.

You can target include booking UUIDs on standard booking endpoints (GET, PATCH, POST .../confirm, POST .../cancel, POST .../extend). Always check the returned updatable and cancellable flags to determine whether a specific include booking can be changed or cancelled. In packageBookings[], child rows with hidden includes (or cancellation state mismatched to the parent row) are excluded from serialization.

Listing Include Bookings

Include bookings are returned from GET /bookings (base route in Bookings).

Schema Additions (JSON)

These are additive fragments showing only fields introduced by this capability.

Availability

AvailabilityBatchRow

Booking

BookingUnitItem

Option

PackageAvailability

Product

Last updated