[Unreleased]
Added
- Contacts API
POST /partners/contacts— Find existing contact by phone or create a new one; returnscontactIdfor bookingGET /partners/contacts/:contactId— Retrieve a contact by UUID- New permission:
partner_contacts_read
Changed
- Service Catalog —
GET /partners/servicesnow returns only services enabled for your partner account - Create Booking —
serviceIdis now required;categoryIdis resolved automatically from the service and must not be sent - Create Booking — Removed partner-facing fields:
tapId,paymentRedirectUrl,paymentId
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— List bookings with pagination, filtering by status, date range, andexternalReferenceGET /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 dateGET /partners/pricing/tiers— Retrieve active pricing tiersPOST /partners/pricing/calculate-price— Calculate price with coupon preview
-
Webhooks API
POST /partners/webhooks/subscriptions— Create webhook subscriptionGET /partners/webhooks/subscriptions— List subscriptionsPATCH /partners/webhooks/subscriptions/:id— Update subscription URL, events, or statusDELETE /partners/webhooks/subscriptions/:id— Remove subscriptionPOST /partners/webhooks/subscriptions/:id/rotate-secret— Rotate signing secretGET /partners/webhooks/deliveries— List delivery history with filteringPOST /partners/webhooks/deliveries/:id/retry— Manually retry failed deliveries
-
Webhook Events
booking.createdbooking.updatedbooking.cancelledbooking.payment_failedbooking.payment_confirmedbooking.appointment_status_changed
-
Infrastructure
- Per-partner sliding-window rate limiting (60-second window)
- HMAC-SHA256 webhook signature verification
- Automatic webhook retry: 3 retries at 1min, 5min, 15min intervals
- Domain allowlist validation for webhook URLs and partner requests
X-Request-Idresponse header for request tracing- Partner booking external reference uniqueness enforcement
Versioning Policy
| Change Type | Version Bump | Notes |
|---|---|---|
| New optional request fields | No bump | Backwards compatible |
| New webhook event types | No bump | Existing subscriptions are not affected |
| New response fields | No bump | Clients must tolerate unknown fields |
| New optional query parameters | No bump | Backwards compatible |
| Changed field types or names | Major bump | Breaking change — new URI version |
| Removed endpoints or fields | Major bump | Breaking change — advance notice given |
| New required request fields | Major bump | Breaking change |
| Authentication scheme change | Major bump | 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.