Skip to main content

Repricing

Post-booking repricing proposals and bulk moves, applied to purchase orders as order changes.

OperationEndpoint
Move many bookings to another product with price protectionPOST /repricing/bulk-moves
Propose a repricing for a booking changePOST /repricing/handovers/{handoverId}/proposals
Read the repricing matrixGET /repricing/matrix
Read a repricing proposalGET /repricing/proposals/{id}
Confirm a repricing proposalPOST /repricing/proposals/{id}/confirm
Reject a repricing proposalPOST /repricing/proposals/{id}/reject

Move many bookings to another product with price protection​

POST/repricing/bulk-moves

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

Request body

FieldTypeRequiredNotes
actorstringyesmin 1 chars
attribute_overridesmap of string
bookingsarray of objectyesat least 1; at most 5000
bookings[].booking_refstringyesmin 1 chars
bookings[].handover_idstringyesmin 1 chars
discount_percentnumber≥ 0; ≤ 100
product_mapmap of stringyes
protectionenum: same_price, new_price_with_discount, new_price_with_upgradeyes
reasonstringyesmin 1 chars
upgradeobject
upgrade.attributestringyesmin 1 chars
upgrade.mapmap of stringyes

Schema: apps/journeys/src/repricing/contracts.ts (BulkMoveRequestSchema)

Response 200

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.
404baseline_not_foundThe handover baseline does not exist.
404repricing_not_enabledRepricing is not enabled for the tenant.
409idempotency_in_progressA request with this Idempotency-Key is still running. Retry after the Retry-After interval.
422idempotency_key_reusedThe Idempotency-Key was used for a different request.
500internalUnexpected failure. Retry with the same Idempotency-Key.

Propose a repricing for a booking change​

POST/repricing/handovers/{handoverId}/proposals

Parameters

NameInRequiredNotes
handoverIdpathyes

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

Request body

FieldTypeRequiredNotes
actorstringyesmin 1 chars
booking_refstringyesmin 1 chars
booking_statusstringyesmin 1 chars
change_datestring (date-time)
changesarray of objectyesat least 1; at most 100
changes[].actionenum: modify, add, removeyes
changes[].idstringyesmin 1 chars
changes[].itemobject
changes[].item.attributesmap of string
changes[].item.componentmap of object
changes[].item.external_priceobject
changes[].item.inventory_refstringmin 1 chars
changes[].item.nightsinteger≥ 0
changes[].item.offerobject
changes[].item.passengersinteger> 0
changes[].item.product_idstringmin 1 chars
changes[].item.product_typestringmin 1 chars
changes[].item.quantityinteger> 0
changes[].line_idstringyesmin 1 chars
changes[].typestringyesmin 1 chars
reference_datestring (date-time)

Schema: apps/journeys/src/repricing/contracts.ts (RepriceRequestSchema)

Response 201

{ proposal } with old and new amounts per line and each promotion's outcome.

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.
404baseline_not_foundThe handover baseline does not exist.
404repricing_not_enabledRepricing is not enabled for the tenant.
409idempotency_in_progressA request with this Idempotency-Key is still running. Retry after the Retry-After interval.
422idempotency_key_reusedThe Idempotency-Key was used for a different request.
500internalUnexpected failure. Retry with the same Idempotency-Key.

Read the repricing matrix​

GET/repricing/matrix

Response 200

{ matrix }: change types and the price outcome rules per type.

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.
404repricing_not_enabledRepricing is not enabled for the tenant.
500internalUnexpected failure. Retry with the same Idempotency-Key.

Read a repricing proposal​

GET/repricing/proposals/{id}

Parameters

NameInRequiredNotes
idpathyes

Response 200

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.
404proposal_not_foundThe repricing proposal does not exist.
404repricing_not_enabledRepricing is not enabled for the tenant.
500internalUnexpected failure. Retry with the same Idempotency-Key.

Confirm a repricing proposal​

POST/repricing/proposals/{id}/confirm

Parameters

NameInRequiredNotes
idpathyes

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

Request body

FieldTypeRequiredNotes
acknowledgeAlertsboolean

Response 200

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.
404proposal_not_foundThe repricing proposal does not exist.
404repricing_not_enabledRepricing is not enabled for the tenant.
409idempotency_in_progressA request with this Idempotency-Key is still running. Retry after the Retry-After interval.
422idempotency_key_reusedThe Idempotency-Key was used for a different request.
500internalUnexpected failure. Retry with the same Idempotency-Key.

Reject a repricing proposal​

POST/repricing/proposals/{id}/reject

Parameters

NameInRequiredNotes
idpathyes

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

Response 200

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.
404proposal_not_foundThe repricing proposal does not exist.
404repricing_not_enabledRepricing is not enabled for the tenant.
409idempotency_in_progressA request with this Idempotency-Key is still running. Retry after the Retry-After interval.
422idempotency_key_reusedThe Idempotency-Key was used for a different request.
500internalUnexpected failure. Retry with the same Idempotency-Key.