Adrasis™

Partner certification

Certify a hotel integration before you receive a live credential: five bookings in the certification environment, a retry check, a lookup by your reference and a result sheet.

Certification shows that your integration can search, prebook, book, read and cancel a hotel stay, and can retry without creating a duplicate booking. You run it in the certification environment and send us the result. When it passes, you receive a live credential.

Before you start

Your onboarding pack gives you the certification base URL, a credential and the hotels to book for each case. See Building and certifying.

  • Bookings there reach no real property and nothing is charged.
  • Search with allocation_strategy: "strict" and send one occupancy entry per room.
  • Send your own agency_reference on every book. C7 and the result sheet use it.
  • Cancel every booking you make, and use fictitious traveller names.
  • Send an X-Request-Id header on every call, for example cert-c1-book. We use it to find your calls in our records.

The cases

Each booking case runs search, prebook, book, booking read, cancellation quote and cancel, and ends CANCELLED.

Case Rooms and party occupancy Check
C1 1 room: 2 adults, refundable rate [{"adults": 2}] Inside the free window, the cancellation quote fee is "0.00"
C2 1 room: 2 adults, children aged 5 and 7 [{"adults": 2, "child_ages": [5, 7]}] The child ages come back unchanged on prebook and on the booking
C3 2 rooms: 2 adults; 2 adults, children aged 5 and 7 [{"adults": 2}, {"adults": 2, "child_ages": [5, 7]}] One booking with both rooms in request order; the booking stay_total equals the prebook offer.grand_total
C4 3 rooms: 3 adults; 2 adults, child aged 5; 2 adults [{"adults": 3}, {"adults": 2, "child_ages": [5]}, {"adults": 2}] Three rooms in request order. Record the total prebook returned: a combination is rounded once over its rooms, so it can differ by a cent from the same rooms chosen one by one
C5 1 room: 2 adults, non-refundable rate [{"adults": 2}] The offer's slots[].policy_card.refundability is non_refundable; cancelling charges the accommodation amount and refunds any exclusive tax collected with the stay. refund_due is "0.00" only when no such tax was collected
C6 Retry of C1's book The same body with the same Idempotency-Key returns 200 and the same booking. The same key with a changed body returns 409 IDEMPOTENCY_KEY_CONFLICT
C7 Lookup by your reference GET /bookings?agency_reference=<C1 reference> returns the C1 booking

If a case finds no availability on your dates, ask your onboarding contact for other dates.

What your integration must handle

  • 410 SOLD_OUT or 410 SELECTION_TOKEN_EXPIRED at prebook: search again.
  • match_status PRICE_CHANGED at prebook: show the new price and book only after the traveller accepts it.
  • A timeout on book: resend the same body with the same Idempotency-Key, or look the booking up by agency_reference before booking again. See Idempotency.
  • 429: wait for Retry-After before retrying. See Rate limits & usage.

Show the traveller, before booking and on the voucher: the hotel, room, board, party, dates, the payable offer.grand_total prebook returned, any tax payable at the property (slots[].tax.total_payable_at_property on the search offer), and the cancellation terms. Exclusive tax is already inside grand_total; do not add it again. Mark a non-refundable rate as non-refundable, and show cancellation deadlines on the property's clock. See The booking flow.

What to send

  • Result sheet: one row per booking with the case, booking public_id and booking_number, your agency_reference, dates, party, total and currency, the cancellation terms you showed, and the final status.
  • Logs: the request and response of every call, with tokens, secrets and real personal data replaced by ***.

We compare them with our own booking records and reply with the review. When it passes, you receive a live credential for https://ari.console.adrasis.com/api/v1 with the same authentication mechanism, and we watch your first live booking with you.