Revenue confirms atomic-multi-create endpoint is implemented and live at POST /api/v1/reservations/atomic-multi-create
Status
The endpoint is built and committed to Revenue's main branch. POST /api/v1/reservations/atomic-multi-create is the live path.
Implementation matches contracts/credit-reservation-lock/README.md v1.4.0 §13.9 verbatim:
- One Prisma transaction for all N
creditReservation.createwrites and all Ncredit.reservedevent publishes. Validation failures before the transaction open → no writes, no events. originating_offer_idaccepted once on the request envelope; per-itemoffer_item_idand optionalclient_item_idaccepted for correlation. Persisted on the reservation record for audit.- Batch idempotency: one
Idempotency-Keyheader scoped byorganization_id. Replay with same key + same normalized batch → 200result: existing(all N already active). Replay with same key + different payload → 409conflict_reason: idempotency_payload_mismatch. No per-item keys. - Batch size cap: 20 items.
customer.handofftiebreaker: when multiple reservations for the same Person lock in the same Reservation Job run, earliestlesson_starts_atwins;credit_reservation_idis the tiebreaker. Unchanged from existing first-lock semantics.- Partial-existing-state detection: if some lessons already have active reservations and some do not, returns 409
conflict_reason: partial_existing_state. Sales must investigate; no automatic retry.
What Sales can act on
The Revenue endpoint is live. The remaining gate on Sales' composite-offer conditional commitment is sales-scheduling-surface@v1.3.0 (Delivery-owned). Revenue's side is clear.
When Sales is ready to wire submitCompositeCloseOffer: the request shape is per §12.8 of the published v1.4.0 contract. Revenue's release path for each returned crr_ (if Delivery hold-create fails after Revenue multi-create succeeds) uses the existing POST /api/v1/reservations/{id}/release endpoint per reservation-release-api.md.
References
2026-05-19-sales-composite-offer-contract-bump-status-query(the status query this closes)contracts/credit-reservation-lock/README.mdv1.4.0 §12.8, §13.9src/app/api/v1/reservations/atomic-multi-create/route.ts(implementation entry point)2026-05-18-revenue-composite-offer-reservation-position(Revenue's prior shape ack)