Skip to main content

Overview

The Journeys order engine is the system of record for what a customer has bought for a journey, from the first quote to the last refund. It keeps one trip per customer journey. Every sale into that journey, on any channel and at any moment, is a purchase order on the trip. Payments are allocated to the order lines of those orders, so a balance can be read per trip, per order, per line and per passenger.

The order engine does not replace the specialist systems that execute a sale, such as the reservation system for cabins, the onboard account for drinks packages or the excursion system for shore tours. It decides which system executes each line (the execution-ownership rules), sends the request and tracks the status events that come back.

Resource model​

ResourceWhat it isKey rules
QuoteA priced, saved offer in the quote store, with a reference any allowed channel can retrieve.Accepting a quote freezes its commercial conditions (lines, amounts, promotions, selling conditions) behind an integrity hash.
QuotationThe order engine's record of a quote being considered for a trip.Alternatives for the same customer intent share an intentId. Converting one supersedes the others. Only the creator may resume it.
TripThe container for one customer journey.Exactly one anchor product (for a cruise tenant, the sailing and cabin). Status is derived from its purchase orders.
Purchase orderOne commercial transaction on the trip, placed on one channel at one purchase moment.Carries the booker, the payer, its frozen conditions and a revision history. version supports conditional writes.
Order lineOne product on a purchase order.Four status dimensions (commercial, payment, fulfilment, billing). Each line records the system that executes it and the rule that chose it.
PaymentMoney received or refunded, anchored at a group, trip or purchase order.Allocated to order lines by the tenant's allocation policy. The ledger is append-only: refunds and re-allocations are compensating legs.
GroupThe umbrella linking individual trips of a group.Carries the negotiated conditions and enforces inherited constraints on member trips.
Group agreementA block or rate-only agreement with a group holder.Versioned, approved, contracted, with berth holds, releases, deposits and settlement.
Orchestration configurationChannels, moments, markets, connected systems, ownership rules, status models, event catalogue.Versioned and audited; validated before it is published; can be rolled back.

How an integration uses it​

  • Channels (web, mobile app, contact centre, advisor portal, onboard) create quotations and purchase orders, and record payments. A channel is a code in the orchestration configuration; there is no separate per-channel API.
  • An integration layer (for example MuleSoft) calls the same API on behalf of Salesforce Service Cloud, Experience Cloud or Agentforce, polls the outbox by sequence, and forwards status events from specialist systems to the inbound event endpoint.
  • Specialist systems receive create, modify and cancel requests for the lines they own, and answer with status events.
  • Operations teams run mass changes and changes and refunds through the same API the operations screens use.

Base URL and surfaces​

All paths are relative to /api/journeys/v1 on the environment's host (see Environments).

SurfacePath prefixCovers
Quote store/quote-storePrice, save, retrieve, revalidate and accept quotes; read frozen conditions.
Order orchestration/order-orchestrationTrips, quotations, purchase orders, inbound events, configuration, monitoring.
Order operations/oms-opsOrder lines, payments and allocation, balances, changes and refunds, groups, disruption and mass change, service recovery, care views, the outbox.
Repricing/repricingPost-booking repricing proposals and bulk moves.
Group agreements/group-agreements, /travel-partiesGroup agreements and travel parties.
Group sales/group-salesBlock requests and party quotes.

Each surface is enabled per tenant. A surface that is not enabled answers 404 with a stable code such as not_enabled or oms_ops_not_enabled.

Where to go next​