Skip to main content
Seyaha uses a subset of the OCTO standard as its catalog and booking protocol. This page explains exactly which fields Seyaha reads and how they map to the Seyaha data model.

Products → Activities

Each object in your GET /products response creates or updates one Seyaha activity.
product.internalName seeds the activity title at creation time. Seyaha admins can edit the title, description, media, and pricing after the first sync without those changes being overwritten on the next sync. Only structural fields (title, pricing, availability) are refreshed from OCTO.

Options → Variations

Each option under a product creates or updates one variation.

Pricing units

The type field on each unit maps to Seyaha’s guest type enum: Prices in pricingFrom[].original are in the smallest currency unit — halalas for SAR, cents for USD. Seyaha divides by 10^currencyPrecision when displaying prices.

Availability → Slots

Each object returned by POST /availability creates or updates one time slot.

Availability status values

Booking lifecycle fields

When Seyaha creates a reservation, it sends: Your POST /bookings/reserve response must include reservationConfirmationCode and expiresAt. Your POST /bookings/confirm response must include externalBookingId. Both values are stored by Seyaha and used in subsequent cancel requests.