Skip to content

Certification

Before production credentials are issued, CBMS staff confirm that your integration behaves like a well-behaved partner: it authenticates, discovers inventory, books in two phases, retries safely, respects ownership, and verifies webhooks.

You do not run our internal test suite. You demonstrate the behaviours below against sandbox. We check them.

What you need to demonstrate

Authentication

  • A valid sandbox key can call GET /partner/venues.
  • A missing or invented key receives 401.
  • You do not send a partner_id (or any header) to impersonate another partner.

Discovery

  • List authorized venues; retrieve one; list its resources.
  • An unknown / ungranted venue id is 404, not a leak of other tenants.

Availability

  • Query by venue_id + date (and optional resource_id).
  • You treat is_available as a hint, not a lock.

Booking flow

  • Create a hold; confirm it before expiry; cancel a hold you no longer need.
  • Cancel and/or refund a confirmed booking.
  • You send idempotency_key on every mutation above.

Idempotency

  • A retry with the same key returns the original hold/booking/cancel/refund — not a second side effect.
  • You do not reuse a hold key across different slots (if you do, you will get the original hold back, not a new one).
  • Reusing a confirm/cancel/refund/package key for a different object is treated as a conflict on your side (the API returns 409).

Authorization

  • You cannot cancel someone else’s hold.
  • You cannot list another venue’s resources.

Errors

  • You handle 401 / 403 / 404 / 409 as documented, not as 500s you retry blindly.
  • You honour 429 Retry-After.

Webhooks

  • You subscribe with your own HTTPS (or reachable HTTP in sandbox) endpoint.
  • You verify X-CBMS-Signature over {timestamp}.{rawBody} and reject skew beyond 300 seconds.
  • You accept booking_created as the confirm event name.

How we run it

Platform staff run an internal checker against the sandbox host using your key and a receiver they control. You do not need our source code, env var names, or operator credentials.

If something fails, we will tell you which category failed and the HTTP exchange — not a stack trace from our repo.

After you pass

See Production onboarding.

Start in the sandbox. Production access is granted after certification.