[Unreleased]
Added
- Contacts API
POST /partners/contacts— Register a customer contact; returnsid(contactId) and optionaladdressIdfor booking- Optional address fields on contact creation:
latitude,longitude,cityName,districtName,streetName - New permission:
partner_contacts_read
- Partner-specific pricing — Each service in
GET /partners/servicesmay return a price configured exclusively for your partner account.0means deferred payment (no upfront charge). When set, that price is applied automatically to bookings created through your integration. - Cancellation reasons —
GET /partners/bookings/cancellation-reasonslists valid reasons;reasonIdis required when callingPATCH /partners/bookings/:bookingId/cancel
Changed
- Create Contact — Response now includes
addressIdwhen an address is created from the request - Create Contact —
utmSourceis no longer accepted in the request body; it is assigned from your partner account name - Service Catalog —
GET /partners/servicesreturns categories with nestedservices(paginated by category); each service includesid,name, andpriceonly. Thepricefield reflects your partner-specific rate when configured. - Timeslots —
GET /partners/timeslots/availablereturns{ date, slots }withstartAt/endAtonly (capacity fields are not exposed) - Create Booking —
serviceIdis now required;categoryIdis resolved automatically from the service and must not be sent - Create Booking —
contactIdandaddressIdare required; obtain both fromPOST /partners/contacts - Create Booking — Removed partner-facing fields:
packageId,customServices,hours,numberOfTeams,workType,userId,couponIds,codes,promoCode,contractCode,discountCode,tapId,paymentRedirectUrl,paymentId - Create Booking — Booking amount is determined by the partner-specific price configured for the selected service (when set), not the platform default price
- Cancel Booking —
reasonIdis now required; obtain valid values fromGET /partners/bookings/cancellation-reasons
Removed
- Update Booking —
PATCH /partners/bookings/:bookingIdremoved from partner documentation - Get Service —
GET /partners/services/:serviceIdremoved from partner documentation
Planned
- Re-enable
Idempotency-Keyheader support onPOST /partners/bookings - Sandbox environment activation for partner testing
[1.0.0] — 2026-06-16
Added
-
Bookings API
POST /partners/bookings— Create booking with full payment responsibility support (CLEANOS and PARTNER modes)GET /partners/bookings/:bookingId/status— Get booking status and appointment detailsPATCH /partners/bookings/:bookingId— Update booking date, timeslot, notes, andexternalReferencePATCH /partners/bookings/:bookingId/cancel— Cancel booking with refund-or-cancel-only logic based on payment responsibilityPOST /partners/bookings/:bookingId/confirm-payment— Confirm partner-side payment (PARTNER responsibility only)
-
Catalog API
GET /partners/services— List all available services (paginated)GET /partners/services/:serviceId— Get service detailsGET /partners/timeslots/available— Query real-time available timeslots by address, service, and date
-
Infrastructure
- Per-partner sliding-window rate limiting (60-second window)
- Domain allowlist validation for partner requests
X-Request-Idresponse header for request tracing- Partner booking external reference uniqueness enforcement
Versioning Policy
Partners will be notified at least 90 days in advance of any breaking change.
How to Stay Updated
- Watch for release announcements from your CleanLife integration contact.
- Monitor the
X-API-Versionresponse header (planned for future releases) to detect version changes. - Subscribe to the CleanLife Partner Developer newsletter via your integration contact.