Skip to main content
Complete reference for all request bodies used in the Partner API.

Create Booking

Used by: POST /partners/bookings
FieldTypeRequiredValidationDescription
contactIdUUIDYesValid UUID v4ID of the customer contact (from POST /partners/contacts)
addressIdstringYesNon-emptyID of the service address
serviceIdUUIDYesValid UUID v4Service ID from your partner catalog. Category is resolved automatically.
timeslotobjectYesValid objectAppointment timeslot
timeslot.startAtstringYesNon-emptyStart time (HH:MM or HH:MM:SS) in Riyadh local time
timeslot.endAtstringYesNon-emptyEnd time (HH:MM or HH:MM:SS) in Riyadh local time
datestringYesISO 8601 dateService date (YYYY-MM-DD)
externalReferencestringNoMax 150 charsYour unique reference ID for this booking
packageIdUUIDNoValid UUID v4Package ID
customServicesarrayNoMax items: —Add-on custom services
customServices[].idUUIDYes (if array)Valid UUID v4Custom service ID
customServices[].quantityintegerNoMin: 1Quantity (default: 1)
hoursintegerNoMin: 1; default: 1Duration in hours
numberOfTeamsintegerNoMin: 2Number of teams (only if > 1 needed)
workTypestringNoWorkType enumType of work to perform
userIdUUIDNoValid UUID v4CleanLife user ID (for coupon validation)
couponIdsUUID[]NoMax: 2 items; each valid UUID v4Coupon IDs to apply
codesstring[]NoMax: 2 items; each non-emptyCoupon or promo codes
promoCodestringNoLegacy promo code field
contractCodestringNoContract pricing code
discountCodestringNoDiscount code

Create Contact

Used by: POST /partners/contacts
FieldTypeRequiredValidationDescription
phonestringYesSaudi phone number, no spacesCustomer phone (e.g. +966500000000)
namestringYesNon-emptyCustomer full name
utmSourcestringNoTracking source (default: PARTNER)

Update Booking

Used by: PATCH /partners/bookings/:bookingId All fields are optional.
FieldTypeRequiredValidationDescription
datestringNoISO 8601 dateNew service date
timeslotobjectNoValid objectNew timeslot
timeslot.startAtstringNoNon-emptyNew start time
timeslot.endAtstringNoNon-emptyNew end time
notesstringNoOptional notes about the booking
externalReferencestringNoNew external reference (must be unique)

Cancel Booking

Used by: PATCH /partners/bookings/:bookingId/cancel All fields are optional.
FieldTypeRequiredValidationDescription
reasonIdUUIDNoValid UUID v4Predefined cancellation reason ID
notesstringNoNotes about the cancellation

Confirm Payment

Used by: POST /partners/bookings/:bookingId/confirm-payment All fields are optional.
FieldTypeRequiredValidationDescription
paymentReferencestringNoMax: 255 charsYour payment transaction ID for reconciliation

List Bookings (query parameters)

Used by: GET /partners/bookings
ParameterTypeRequiredValidationDescription
pageintegerNoMin: 1; default: 1Page number
limitintegerNoMin: 1; Max: 100; default: 20Results per page
sortBystringNoSort field name
sortOrderstringNoASC, DESC, asc, descSort direction
statusstringNoBooking status filter (exact match)
fromDatestringNoISO 8601 dateFilter bookings on or after this date
toDatestringNoISO 8601 dateFilter bookings on or before this date
externalReferencestringNoFilter by exact externalReference value

Pagination (query parameters)

Used by list endpoints such as GET /partners/bookings and GET /partners/webhooks/deliveries.
ParameterTypeRequiredValidationDescription
pageintegerNoMin: 1; default: 1Page number
limitintegerNoMin: 1; Max: 100; default: 20Results per page
sortBystringNoField to sort by
sortOrderstringNoASC, DESC, asc, descSort direction

Create Webhook Subscription

Used by: POST /partners/webhooks/subscriptions
FieldTypeRequiredValidationDescription
urlstring (URL)YesValid URL (no TLD required), must pass domain validationWebhook endpoint URL
eventsstring[]YesArray; each element must be a valid webhook event nameEvents to subscribe to

Update Webhook Subscription

Used by: PATCH /partners/webhooks/subscriptions/:id All fields are optional.
FieldTypeRequiredValidationDescription
urlstring (URL)NoValid URL, domain validationNew webhook URL
eventsstring[]NoEach element must be a valid webhook event nameNew event list (replaces existing)
statusstringNoACTIVE or INACTIVENew subscription status

List Webhook Deliveries (query parameters)

Used by: GET /partners/webhooks/deliveries Supports pagination (page, limit, sortBy, sortOrder) plus:
ParameterTypeRequiredValidationDescription
subscriptionIdUUIDNoValid UUID v4Filter by subscription ID
statusstringNoDelivery status enumFilter by delivery status

Available Timeslots (query parameters)

Used by: GET /partners/timeslots/available
ParameterTypeRequiredValidationDescription
addressIdUUIDYesValid UUID v4Customer’s service address ID
serviceIdUUIDYesValid UUID v4Service ID from the catalog
datestringYesISO 8601 dateDesired service date

Calculate Price

Used by: POST /partners/pricing/calculate-price
FieldTypeRequiredValidationDescription
itemsarrayYesMin: 1 item; Max: 10 itemsArray of price calculation items
items[].hoursnumberYesMin: 1; Max: 24Duration in hours
items[].serviceIdUUIDConditionalValid UUID v4Required if packageId not provided
items[].packageIdUUIDConditionalValid UUID v4Required if serviceId not provided
items[].subServiceIdUUIDNoValid UUID v4Sub-service add-on ID
couponIdsUUID[]NoMax: 2 itemsCoupon IDs for discount preview
codesstring[]NoMax: 2 itemsCoupon/promo codes for preview
userIdUUIDNoValid UUID v4User ID for coupon validation
phonestringNoCustomer phone for coupon validation