Skip to main content

Quotations

Quotation tracking on the order engine. A quotation links a saved quote to a trip, groups alternatives under one intent and converts into the booking purchase order.

OperationEndpoint
Create a quotationPOST /order-orchestration/quotations
Resume a quotationGET /order-orchestration/quotations/{ref}
Convert a quotation into a purchase orderPOST /order-orchestration/quotations/{ref}/convert
Quotation conversion reportGET /order-orchestration/quotations/report

Create a quotation​

POST/order-orchestration/quotations

Tracks a saved quote on the order engine. Opens a trip in status quotation unless tripId is given. Pass intentId to group alternatives for the same customer intent.

Headers: Idempotency-Key, plus X-Request-Id.

Request body

FieldTypeRequiredNotes
agencyRefstringmax 200 chars
anchorobjectyes
anchor.departureAtstring (date-time)yes
anchor.marketstringmax 60 chars
anchor.productIdstringyes1–200 chars
anchor.productTypestringyesmin 1 chars
anchor.reservationRefstringmax 200 chars
anchor.returnAtstring (date-time)yes
anchor.unitRefstringmax 200 chars
channelstringyesmin 1 chars
createdByobjectyes
createdBy.actorRefstringyes1–200 chars
createdBy.kindenum: customer, agent, agencyyes
customerRefstringmax 200 chars
intentIdstringmax 64 chars
marketstringmax 60 chars
passengersinteger> 0
quoteobjectyes
quote.currencystringyespattern ^[A-Z]{3}$
quote.offerIdstring
quote.promotionIdsarray of string
quote.quoteRefstringyesmin 1 chars
quote.quoteVersioninteger≥ 0; default 0
quote.totalMinorinteger
quote.validUntilstring (date-time)
tripIdstring

Schema: apps/journeys/src/order-orchestration/contracts.ts (CreateQuotationInputSchema)

Response 201

POST/order-orchestration/quotationsTrack the quote on a new trip
Request
curl -X POST "$BASE/order-orchestration/quotations" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Request-Id: req-0001" \
-H "Idempotency-Key: efaf1029-bfb3-4618-ae20-12191c8878bb" \
-H "Content-Type: application/json" \
-d '{
"channel": "web",
"market": "IT",
"createdBy": {
"actorRef": "CUST-20419",
"kind": "customer"
},
"customerRef": "CUST-20419",
"anchor": {
"productType": "cruise",
"productId": "MED7-2027-04-12",
"unitRef": "BALCONY-B2",
"departureAt": "2027-04-12T17:00:00Z",
"returnAt": "2027-04-19T08:00:00Z",
"market": "IT"
},
"passengers": 2,
"quote": {
"quoteRef": "Q-2027-58213",
"quoteVersion": 2,
"currency": "EUR",
"totalMinor": 268800,
"validUntil": "2026-11-09T23:59:59Z",
"offerId": "ALL-INCLUSIVE-2027",
"promotionIds": [
"EARLY-BOOKING-10"
]
}
}'
Response
HTTP/1.1 201
X-Request-Id: req-0001
{
"quotationRef": "QT-E419E9088B0D",
"tripId": "TRP-B2BD5A9771E4",
"intentId": "INT-E7814BE45E5F",
"status": "open",
"channel": "web",
"market": "IT",
"productCode": "MED7-2027-04-12",
"createdBy": {
"actorRef": "CUST-20419",
"kind": "customer"
},
"customerRef": "CUST-20419",
"agencyRef": null,
"passengers": 2,
"quote": {
"quoteRef": "Q-2027-58213",
"quoteVersion": 2,
"currency": "EUR",
"totalMinor": 268800,
"validUntil": "2026-11-09T23:59:59Z",
"offerId": "ALL-INCLUSIVE-2027",
"promotionIds": [
"EARLY-BOOKING-10"
]
},
"conversion": null,
"createdAt": "2026-11-02T09:05:37.000Z",
"updatedAt": "2026-11-02T09:05:37.000Z",
"lastAccessedAt": "2026-11-02T09:05:37.000Z"
}
Errors
StatusCodeMeaning
400invalid_requestThe request failed validation. The message names the first failing field; oms-ops and group surfaces also return every issue in details.
401unauthenticatedThe bearer token is missing, invalid, expired or minted for another purpose.
403scope_forbiddenThe token is scoped to an agency or an access scope; this surface requires an unscoped tenant token.
404not_foundThe trip, purchase order, quotation or configuration item does not exist.
404not_enabledOrder orchestration is not enabled for the tenant.
409idempotency_in_progressA request with this Idempotency-Key is still running. Retry after the Retry-After interval.
422unknown_channelThe channel is not in the orchestration configuration.
422missing_fieldsFields required for the channel are missing.
422not_an_anchorThe product type may not anchor a trip.
422invalid_datesThe return date is not after the departure date.
422second_anchorThe trip already has an anchor product.
422idempotency_key_reusedThe Idempotency-Key was used for a different request.
500internalUnexpected failure. Retry with the same Idempotency-Key.

Resume a quotation​

GET/order-orchestration/quotations/{ref}

Returns the quotation, its trip and its alternatives. Only the creator may resume it, identified by actorRef or by the matching customerRef.

Parameters

NameInRequiredNotes
refpathyes
customerRefqueryThe customer the quotation was created for.
actorRefqueryThe actor who created the quotation.

Response 200

GET/order-orchestration/quotations/QT-E419E9088B0DResume the saved quotation
Request
curl -X GET "$BASE/order-orchestration/quotations/QT-E419E9088B0D?customerRef=CUST-20419" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Request-Id: req-0002"
Response
HTTP/1.1 200
X-Request-Id: req-0002
{
"quotation": {
"quote": {
"offerId": "ALL-INCLUSIVE-2027",
"currency": "EUR",
"quoteRef": "Q-2027-58213",
"totalMinor": 268800,
"validUntil": "2026-11-09T23:59:59Z",
"promotionIds": [
"EARLY-BOOKING-10"
],
"quoteVersion": 2
},
"market": "IT",
"status": "open",
"tripId": "TRP-B2BD5A9771E4",
"channel": "web",
"intentId": "INT-E7814BE45E5F",
"agencyRef": null,
"createdAt": "2026-11-02T09:05:37.000Z",
"createdBy": {
"kind": "customer",
"actorRef": "CUST-20419"
},
"updatedAt": "2026-11-02T09:05:37.000Z",
"conversion": null,
"passengers": 2,
"customerRef": "CUST-20419",
"productCode": "MED7-2027-04-12",
"quotationRef": "QT-E419E9088B0D",
"lastAccessedAt": "2026-11-02T09:06:14.000Z"
},
"trip": {
"endAt": "2027-04-19T08:00:00Z",
"anchor": {
"market": "IT",
"unitRef": "BALCONY-B2",
"returnAt": "2027-04-19T08:00:00Z",
"productId": "MED7-2027-04-12",
"departureAt": "2027-04-12T17:00:00Z",
"productType": "cruise"
},
"status": "quotation",
"tripId": "TRP-B2BD5A9771E4",
"changes": [],
"startAt": "2027-04-12T17:00:00Z",
"version": 2,
"tenantId": "meridian",
"createdAt": "2026-11-02T09:05:37.000Z",
"updatedAt": "2026-11-02T09:05:37.000Z",
"customerRef": "CUST-20419",
"quotationRefs": [
"QT-E419E9088B0D"
],
"purchaseOrderIds": []
},
"alternatives": []
}
Errors
StatusCodeMeaning
400invalid_requestThe request failed validation. The message names the first failing field; oms-ops and group surfaces also return every issue in details.
401unauthenticatedThe bearer token is missing, invalid, expired or minted for another purpose.
403not_creatorOnly the customer or agent who created the quotation may resume it.
403scope_forbiddenThe token is scoped to an agency or an access scope; this surface requires an unscoped tenant token.
404not_foundThe trip, purchase order, quotation or configuration item does not exist.
404not_enabledOrder orchestration is not enabled for the tenant.
500internalUnexpected failure. Retry with the same Idempotency-Key.

Convert a quotation into a purchase order​

POST/order-orchestration/quotations/{ref}/convert

Creates the booked purchase order from the frozen conditions of the accepted quote. Other open alternatives of the same intent are superseded. Repeating the same conversion returns the same order.

Parameters

NameInRequiredNotes
refpathyes

Headers: Idempotency-Key, plus X-Request-Id.

Request body

FieldTypeRequiredNotes
frozenobjectyes
frozen.channelstringyesmin 1 chars
frozen.configVersionone of several shapes
frozen.currencystringyespattern ^[A-Z]{3}$
frozen.customerRefstringmax 200 chars
frozen.frozenAtstring (date-time)yes
frozen.linesarray of objectyesat least 1
frozen.lines[].amountMinorintegeryes
frozen.lines[].beneficiaryRefstringmax 200 chars
frozen.lines[].descriptionstringmax 500 chars
frozen.lines[].explanationarray of object
frozen.lines[].lineRefstringyesmin 1 chars
frozen.lines[].offerIdstringmax 200 chars
frozen.lines[].passengerIdsarray of string
frozen.lines[].productCodestringyesmin 1 chars
frozen.lines[].productTypestringyesmin 1 chars
frozen.lines[].promotionIdsarray of string
frozen.lines[].quantityinteger> 0; default 1
frozen.lines[].sellingConditionsobject
frozen.lines[].serviceDatestring (date-time)
frozen.marketstringmax 60 chars
frozen.promotionsarray of object
frozen.promotions[].postBookingPolicyenum: keep, recalculate, loseyes
frozen.promotions[].promotionIdstringyesmin 1 chars
frozen.promotions[].versioninteger≥ 0
frozen.quoteRefstringyesmin 1 chars
frozen.quoteVersionintegeryes≥ 0
frozen.storeVersionone of several shapes
frozen.totalMinorintegeryes
actorRefstringyesmin 1 chars
momentstringyesPurchase moment code from the orchestration configuration.; min 1 chars
bookerobject
booker.displayNamestringmax 200 chars
booker.kindenum: customer, agency, agent, companyyes
booker.refstringyes1–200 chars
payerobject
payer.displayNamestringmax 200 chars
payer.kindenum: customer, agency, agent, companyyes
payer.refstringyes1–200 chars
typestring
fullPaymentboolean

Response 200

POST/order-orchestration/quotations/QT-E419E9088B0D/convertConvert the quotation into the booking purchase order
Request
curl -X POST "$BASE/order-orchestration/quotations/QT-E419E9088B0D/convert" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Request-Id: req-0003" \
-H "Idempotency-Key: 7ac926d7-5cf4-478b-abdc-a05e8298b52c" \
-H "Content-Type: application/json" \
-d '{
"frozen": {
"quoteRef": "Q-2027-58213",
"quoteVersion": 2,
"frozenAt": "2026-11-02T09:04:00Z",
"currency": "EUR",
"market": "IT",
"channel": "web",
"configVersion": 9,
"storeVersion": 14,
"customerRef": "CUST-20419",
"lines": [
{
"lineRef": "q-line-1",
"productType": "cruise",
"productCode": "MED7-2027-04-12",
"description": "7-night Western Mediterranean, balcony cabin, 2 guests",
"quantity": 1,
"passengerIds": [
"PAX-01",
"PAX-02"
],
"amountMinor": 238000,
"offerId": "ALL-INCLUSIVE-2027",
"promotionIds": [
"EARLY-BOOKING-10"
],
"explanation": [
{
"layer": "base",
"ruleId": "base-balcony",
"mode": "select",
"basis": "passenger",
"input": 0,
"contribution": 264400,
"runningTotal": 264400,
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"flag": "public",
"reason": {
"key": "layer.base",
"params": {}
}
},
{
"layer": "promotion",
"ruleId": "EARLY-BOOKING-10",
"mode": "adjust",
"basis": "booking",
"input": 264400,
"contribution": -26400,
"runningTotal": 238000,
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"flag": "public",
"reason": {
"key": "layer.promotion",
"params": {}
}
}
],
"sellingConditions": {
"refundable": true,
"depositPercent": 20
}
},
{
"lineRef": "q-line-2",
"productType": "beverage",
"productCode": "DRINKS-CLASSIC-7N",
"description": "Classic drinks package, 7 nights",
"quantity": 2,
"passengerIds": [
"PAX-01",
"PAX-02"
],
"amountMinor": 30800,
"offerId": "ALL-INCLUSIVE-2027",
"promotionIds": [],
"explanation": []
}
],
"promotions": [
{
"promotionId": "EARLY-BOOKING-10",
"version": 3,
"postBookingPolicy": "keep"
}
],
"totalMinor": 268800
},
"actorRef": "CUST-20419",
"moment": "booking",
"booker": {
"kind": "customer",
"ref": "CUST-20419",
"displayName": "Giulia Rossi"
},
"payer": {
"kind": "customer",
"ref": "CUST-20419",
"displayName": "Giulia Rossi"
}
}'
Response
HTTP/1.1 200
X-Request-Id: req-0003
{
"quotation": {
"quote": {
"offerId": "ALL-INCLUSIVE-2027",
"currency": "EUR",
"quoteRef": "Q-2027-58213",
"totalMinor": 268800,
"validUntil": "2026-11-09T23:59:59Z",
"promotionIds": [
"EARLY-BOOKING-10"
],
"quoteVersion": 2
},
"market": "IT",
"status": "converted",
"tripId": "TRP-B2BD5A9771E4",
"channel": "web",
"intentId": "INT-E7814BE45E5F",
"agencyRef": null,
"createdAt": "2026-11-02T09:05:37.000Z",
"createdBy": {
"kind": "customer",
"actorRef": "CUST-20419"
},
"updatedAt": "2026-11-02T09:06:51.000Z",
"conversion": {
"poId": "PO-5BEE8AAD2A57",
"convertedAt": "2026-11-02T09:06:51.000Z",
"convertedBy": "CUST-20419"
},
"passengers": 2,
"customerRef": "CUST-20419",
"productCode": "MED7-2027-04-12",
"quotationRef": "QT-E419E9088B0D",
"lastAccessedAt": "2026-11-02T09:06:14.000Z"
},
"purchaseOrder": {
"poId": "PO-5BEE8AAD2A57",
"type": "standard",
"lines": [
{
"lineId": "L-A610167BDD4D",
"status": {
"billing": "not_billed",
"payment": "not_due",
"commercial": "booked",
"fulfilment": "requested"
},
"offerId": "ALL-INCLUSIVE-2027",
"currency": "EUR",
"quantity": 1,
"ownership": {
"ruleId": "anchor-reservation",
"process": "create"
},
"amountMinor": 238000,
"description": "7-night Western Mediterranean, balcony cabin, 2 guests",
"explanation": [
{
"flag": "public",
"mode": "select",
"basis": "passenger",
"input": 0,
"layer": "base",
"reason": {
"key": "layer.base",
"params": {}
},
"ruleId": "base-balcony",
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"contribution": 264400,
"runningTotal": 264400
},
{
"flag": "public",
"mode": "adjust",
"basis": "booking",
"input": 264400,
"layer": "promotion",
"reason": {
"key": "layer.promotion",
"params": {}
},
"ruleId": "EARLY-BOOKING-10",
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"contribution": -26400,
"runningTotal": 238000
}
],
"externalRef": "RSV-66D6FC0F-000001",
"productCode": "MED7-2027-04-12",
"productType": "cruise",
"passengerIds": [
"PAX-01",
"PAX-02"
],
"promotionIds": [
"EARLY-BOOKING-10"
],
"quoteLineRef": "q-line-1",
"sourceSystem": "reservation",
"sellingConditions": {
"refundable": true,
"depositPercent": 20
}
},
{
"lineId": "L-BB4F731FB7C8",
"status": {
"billing": "not_billed",
"payment": "not_due",
"commercial": "booked",
"fulfilment": "requested"
},
"offerId": "ALL-INCLUSIVE-2027",
"currency": "EUR",
"quantity": 2,
"ownership": {
"ruleId": "beverage-phase1",
"process": "create"
},
"amountMinor": 30800,
"description": "Classic drinks package, 7 nights",
"explanation": [],
"productCode": "DRINKS-CLASSIC-7N",
"productType": "beverage",
"passengerIds": [
"PAX-01",
"PAX-02"
],
"promotionIds": [],
"quoteLineRef": "q-line-2",
"sourceSystem": "onboard"
}
],
"payer": {
"ref": "CUST-20419",
"kind": "customer",
"displayName": "Giulia Rossi"
},
"terms": {},
"booker": {
"ref": "CUST-20419",
"kind": "customer",
"displayName": "Giulia Rossi"
},
"market": "IT",
"moment": "booking",
"origin": {
"channel": "web",
"actorRef": "CUST-20419"
},
"status": {
"billing": "not_billed",
"payment": "not_due",
"commercial": "booked",
"fulfilment": "requested"
},
"tripId": "TRP-B2BD5A9771E4",
"channel": "web",
"version": 3,
"currency": "EUR",
"sequence": 1,
"createdAt": "2026-11-02T09:06:51.000Z",
"revisions": [],
"updatedAt": "2026-11-02T09:06:51.000Z",
"totalMinor": 268800,
"attribution": {},
"fullPayment": false,
"finalisation": {
"at": "2026-11-02T09:06:51.000Z",
"channel": "web"
},
"quotationRef": "QT-E419E9088B0D",
"partiesLocked": true,
"frozenConditions": {
"document": {
"lines": [
{
"lineRef": "q-line-1",
"offerId": "ALL-INCLUSIVE-2027",
"quantity": 1,
"amountMinor": 238000,
"description": "7-night Western Mediterranean, balcony cabin, 2 guests",
"explanation": [
{
"flag": "public",
"mode": "select",
"basis": "passenger",
"input": 0,
"layer": "base",
"reason": {
"key": "layer.base",
"params": {}
},
"ruleId": "base-balcony",
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"contribution": 264400,
"runningTotal": 264400
},
{
"flag": "public",
"mode": "adjust",
"basis": "booking",
"input": 264400,
"layer": "promotion",
"reason": {
"key": "layer.promotion",
"params": {}
},
"ruleId": "EARLY-BOOKING-10",
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"contribution": -26400,
"runningTotal": 238000
}
],
"productCode": "MED7-2027-04-12",
"productType": "cruise",
"passengerIds": [
"PAX-01",
"PAX-02"
],
"promotionIds": [
"EARLY-BOOKING-10"
],
"sellingConditions": {
"refundable": true,
"depositPercent": 20
}
},
{
"lineRef": "q-line-2",
"offerId": "ALL-INCLUSIVE-2027",
"quantity": 2,
"amountMinor": 30800,
"description": "Classic drinks package, 7 nights",
"explanation": [],
"productCode": "DRINKS-CLASSIC-7N",
"productType": "beverage",
"passengerIds": [
"PAX-01",
"PAX-02"
],
"promotionIds": []
}
],
"market": "IT",
"channel": "web",
"currency": "EUR",
"frozenAt": "2026-11-02T09:04:00Z",
"quoteRef": "Q-2027-58213",
"promotions": [
{
"version": 3,
"promotionId": "EARLY-BOOKING-10",
"postBookingPolicy": "keep"
}
],
"totalMinor": 268800,
"customerRef": "CUST-20419",
"quoteVersion": 2,
"storeVersion": 14,
"configVersion": 9
},
"frozenAt": "2026-11-02T09:04:00Z",
"quoteRef": "Q-2027-58213",
"quoteVersion": 2,
"storeVersion": 14,
"configVersion": 9
}
}
}
POST/order-orchestration/quotations/QT-E419E9088B0D/convertRetry the conversion with the same Idempotency-Key
Request
curl -X POST "$BASE/order-orchestration/quotations/QT-E419E9088B0D/convert" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Request-Id: req-0004" \
-H "Idempotency-Key: 7ac926d7-5cf4-478b-abdc-a05e8298b52c" \
-H "Content-Type: application/json" \
-d '{
"frozen": {
"quoteRef": "Q-2027-58213",
"quoteVersion": 2,
"frozenAt": "2026-11-02T09:04:00Z",
"currency": "EUR",
"market": "IT",
"channel": "web",
"configVersion": 9,
"storeVersion": 14,
"customerRef": "CUST-20419",
"lines": [
{
"lineRef": "q-line-1",
"productType": "cruise",
"productCode": "MED7-2027-04-12",
"description": "7-night Western Mediterranean, balcony cabin, 2 guests",
"quantity": 1,
"passengerIds": [
"PAX-01",
"PAX-02"
],
"amountMinor": 238000,
"offerId": "ALL-INCLUSIVE-2027",
"promotionIds": [
"EARLY-BOOKING-10"
],
"explanation": [
{
"layer": "base",
"ruleId": "base-balcony",
"mode": "select",
"basis": "passenger",
"input": 0,
"contribution": 264400,
"runningTotal": 264400,
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"flag": "public",
"reason": {
"key": "layer.base",
"params": {}
}
},
{
"layer": "promotion",
"ruleId": "EARLY-BOOKING-10",
"mode": "adjust",
"basis": "booking",
"input": 264400,
"contribution": -26400,
"runningTotal": 238000,
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"flag": "public",
"reason": {
"key": "layer.promotion",
"params": {}
}
}
],
"sellingConditions": {
"refundable": true,
"depositPercent": 20
}
},
{
"lineRef": "q-line-2",
"productType": "beverage",
"productCode": "DRINKS-CLASSIC-7N",
"description": "Classic drinks package, 7 nights",
"quantity": 2,
"passengerIds": [
"PAX-01",
"PAX-02"
],
"amountMinor": 30800,
"offerId": "ALL-INCLUSIVE-2027",
"promotionIds": [],
"explanation": []
}
],
"promotions": [
{
"promotionId": "EARLY-BOOKING-10",
"version": 3,
"postBookingPolicy": "keep"
}
],
"totalMinor": 268800
},
"actorRef": "CUST-20419",
"moment": "booking",
"booker": {
"kind": "customer",
"ref": "CUST-20419",
"displayName": "Giulia Rossi"
},
"payer": {
"kind": "customer",
"ref": "CUST-20419",
"displayName": "Giulia Rossi"
}
}'
Response
HTTP/1.1 200
X-Request-Id: req-0004
Idempotent-Replayed: true
{
"quotation": {
"quote": {
"offerId": "ALL-INCLUSIVE-2027",
"currency": "EUR",
"quoteRef": "Q-2027-58213",
"totalMinor": 268800,
"validUntil": "2026-11-09T23:59:59Z",
"promotionIds": [
"EARLY-BOOKING-10"
],
"quoteVersion": 2
},
"market": "IT",
"status": "converted",
"tripId": "TRP-B2BD5A9771E4",
"channel": "web",
"intentId": "INT-E7814BE45E5F",
"agencyRef": null,
"createdAt": "2026-11-02T09:05:37.000Z",
"createdBy": {
"kind": "customer",
"actorRef": "CUST-20419"
},
"updatedAt": "2026-11-02T09:06:51.000Z",
"conversion": {
"poId": "PO-5BEE8AAD2A57",
"convertedAt": "2026-11-02T09:06:51.000Z",
"convertedBy": "CUST-20419"
},
"passengers": 2,
"customerRef": "CUST-20419",
"productCode": "MED7-2027-04-12",
"quotationRef": "QT-E419E9088B0D",
"lastAccessedAt": "2026-11-02T09:06:14.000Z"
},
"purchaseOrder": {
"poId": "PO-5BEE8AAD2A57",
"type": "standard",
"lines": [
{
"lineId": "L-A610167BDD4D",
"status": {
"billing": "not_billed",
"payment": "not_due",
"commercial": "booked",
"fulfilment": "requested"
},
"offerId": "ALL-INCLUSIVE-2027",
"currency": "EUR",
"quantity": 1,
"ownership": {
"ruleId": "anchor-reservation",
"process": "create"
},
"amountMinor": 238000,
"description": "7-night Western Mediterranean, balcony cabin, 2 guests",
"explanation": [
{
"flag": "public",
"mode": "select",
"basis": "passenger",
"input": 0,
"layer": "base",
"reason": {
"key": "layer.base",
"params": {}
},
"ruleId": "base-balcony",
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"contribution": 264400,
"runningTotal": 264400
},
{
"flag": "public",
"mode": "adjust",
"basis": "booking",
"input": 264400,
"layer": "promotion",
"reason": {
"key": "layer.promotion",
"params": {}
},
"ruleId": "EARLY-BOOKING-10",
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"contribution": -26400,
"runningTotal": 238000
}
],
"externalRef": "RSV-66D6FC0F-000001",
"productCode": "MED7-2027-04-12",
"productType": "cruise",
"passengerIds": [
"PAX-01",
"PAX-02"
],
"promotionIds": [
"EARLY-BOOKING-10"
],
"quoteLineRef": "q-line-1",
"sourceSystem": "reservation",
"sellingConditions": {
"refundable": true,
"depositPercent": 20
}
},
{
"lineId": "L-BB4F731FB7C8",
"status": {
"billing": "not_billed",
"payment": "not_due",
"commercial": "booked",
"fulfilment": "requested"
},
"offerId": "ALL-INCLUSIVE-2027",
"currency": "EUR",
"quantity": 2,
"ownership": {
"ruleId": "beverage-phase1",
"process": "create"
},
"amountMinor": 30800,
"description": "Classic drinks package, 7 nights",
"explanation": [],
"productCode": "DRINKS-CLASSIC-7N",
"productType": "beverage",
"passengerIds": [
"PAX-01",
"PAX-02"
],
"promotionIds": [],
"quoteLineRef": "q-line-2",
"sourceSystem": "onboard"
}
],
"payer": {
"ref": "CUST-20419",
"kind": "customer",
"displayName": "Giulia Rossi"
},
"terms": {},
"booker": {
"ref": "CUST-20419",
"kind": "customer",
"displayName": "Giulia Rossi"
},
"market": "IT",
"moment": "booking",
"origin": {
"channel": "web",
"actorRef": "CUST-20419"
},
"status": {
"billing": "not_billed",
"payment": "not_due",
"commercial": "booked",
"fulfilment": "requested"
},
"tripId": "TRP-B2BD5A9771E4",
"channel": "web",
"version": 3,
"currency": "EUR",
"sequence": 1,
"createdAt": "2026-11-02T09:06:51.000Z",
"revisions": [],
"updatedAt": "2026-11-02T09:06:51.000Z",
"totalMinor": 268800,
"attribution": {},
"fullPayment": false,
"finalisation": {
"at": "2026-11-02T09:06:51.000Z",
"channel": "web"
},
"quotationRef": "QT-E419E9088B0D",
"partiesLocked": true,
"frozenConditions": {
"document": {
"lines": [
{
"lineRef": "q-line-1",
"offerId": "ALL-INCLUSIVE-2027",
"quantity": 1,
"amountMinor": 238000,
"description": "7-night Western Mediterranean, balcony cabin, 2 guests",
"explanation": [
{
"flag": "public",
"mode": "select",
"basis": "passenger",
"input": 0,
"layer": "base",
"reason": {
"key": "layer.base",
"params": {}
},
"ruleId": "base-balcony",
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"contribution": 264400,
"runningTotal": 264400
},
{
"flag": "public",
"mode": "adjust",
"basis": "booking",
"input": 264400,
"layer": "promotion",
"reason": {
"key": "layer.promotion",
"params": {}
},
"ruleId": "EARLY-BOOKING-10",
"source": {
"kind": "store",
"version": 14,
"timestamp": "2026-10-30T00:00:00Z"
},
"contribution": -26400,
"runningTotal": 238000
}
],
"productCode": "MED7-2027-04-12",
"productType": "cruise",
"passengerIds": [
"PAX-01",
"PAX-02"
],
"promotionIds": [
"EARLY-BOOKING-10"
],
"sellingConditions": {
"refundable": true,
"depositPercent": 20
}
},
{
"lineRef": "q-line-2",
"offerId": "ALL-INCLUSIVE-2027",
"quantity": 2,
"amountMinor": 30800,
"description": "Classic drinks package, 7 nights",
"explanation": [],
"productCode": "DRINKS-CLASSIC-7N",
"productType": "beverage",
"passengerIds": [
"PAX-01",
"PAX-02"
],
"promotionIds": []
}
],
"market": "IT",
"channel": "web",
"currency": "EUR",
"frozenAt": "2026-11-02T09:04:00Z",
"quoteRef": "Q-2027-58213",
"promotions": [
{
"version": 3,
"promotionId": "EARLY-BOOKING-10",
"postBookingPolicy": "keep"
}
],
"totalMinor": 268800,
"customerRef": "CUST-20419",
"quoteVersion": 2,
"storeVersion": 14,
"configVersion": 9
},
"frozenAt": "2026-11-02T09:04:00Z",
"quoteRef": "Q-2027-58213",
"quoteVersion": 2,
"storeVersion": 14,
"configVersion": 9
}
}
}
Errors
StatusCodeMeaning
400invalid_requestThe request failed validation. The message names the first failing field; oms-ops and group surfaces also return every issue in details.
401unauthenticatedThe bearer token is missing, invalid, expired or minted for another purpose.
403scope_forbiddenThe token is scoped to an agency or an access scope; this surface requires an unscoped tenant token.
404not_foundThe trip, purchase order, quotation or configuration item does not exist.
404not_enabledOrder orchestration is not enabled for the tenant.
409already_convertedThe quotation has already been converted to a different quote version.
409not_openThe quotation is not open.
409quote_mismatchThe frozen conditions belong to a different quote than the quotation tracks.
409frozen_conditions_mismatchThe frozen money posted differs from the accepted quote (tenants with verify_frozen_conditions).
409idempotency_in_progressA request with this Idempotency-Key is still running. Retry after the Retry-After interval.
422unknown_momentThe purchase moment is not in the orchestration configuration.
422idempotency_key_reusedThe Idempotency-Key was used for a different request.
500internalUnexpected failure. Retry with the same Idempotency-Key.
503handover_source_unavailableThe quote store could not be reached to verify frozen conditions.

Quotation conversion report​

GET/order-orchestration/quotations/report

Volume, conversion rate and ageing of quotations by market, channel and product.

Response 200

GET/order-orchestration/quotations/reportQuotation conversion report
Request
curl -X GET "$BASE/order-orchestration/quotations/report" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Request-Id: req-0029"
Response
HTTP/1.1 200
X-Request-Id: req-0029
[
{
"market": "IT",
"channel": "web",
"productCode": "MED7-2027-04-12",
"total": 1,
"converted": 1,
"open": 0,
"superseded": 0,
"conversionRate": 1,
"ageing": {
"d0_7": 0,
"d8_30": 0,
"d31_plus": 0
}
}
]
Errors
StatusCodeMeaning
400invalid_requestThe request failed validation. The message names the first failing field; oms-ops and group surfaces also return every issue in details.
401unauthenticatedThe bearer token is missing, invalid, expired or minted for another purpose.
403scope_forbiddenThe token is scoped to an agency or an access scope; this surface requires an unscoped tenant token.
404not_enabledOrder orchestration is not enabled for the tenant.
500internalUnexpected failure. Retry with the same Idempotency-Key.