Products → Activities
Each object in yourGET /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
Thetype 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 byPOST /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.