Party quotes
Quotes for a travel party that books several units together, with a preview of converting to group terms.
| Operation | Endpoint |
|---|---|
| List party quotes | GET /group-sales/party-quotes |
| Quote a travel party | POST /group-sales/party-quotes |
| Read a party quote | GET /group-sales/party-quotes/{id} |
| Book a party quote | POST /group-sales/party-quotes/{id}/book |
| Preview individual versus group terms | POST /group-sales/party-quotes/{id}/conversion-preview |
List party quotes
GET
/group-sales/party-quotesResponse 200
Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | The request failed validation. The message names the first failing field; oms-ops and group surfaces also return every issue in details. |
| 401 | unauthenticated | The bearer token is missing, invalid, expired or minted for another purpose. |
| 403 | scope_forbidden | The token is scoped to an agency or an access scope; this surface requires an unscoped tenant token. |
| 404 | group_sales_not_enabled | Group sales are not enabled for the tenant. |
| 500 | internal | Unexpected failure. Retry with the same Idempotency-Key. |
Quote a travel party
POST
/group-sales/party-quotesHeaders: Idempotency-Key, plus X-Request-Id.
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
actor | object | yes | |
actor.channel | string | max 60 chars | |
actor.id | string | yes | 1–200 chars |
actor.name | string | max 200 chars | |
actor.role | string | yes | 1–100 chars |
at | string (date-time) | ||
attributes | map of string | ||
currency | string | yes | pattern ^[A-Z]{3}$ |
itemAttributes | map of string | ||
leadContact | object | yes | |
leadContact.contact | string | max 320 chars | |
leadContact.name | string | max 200 chars | |
leadContact.ref | string | yes | 1–200 chars |
name | string | yes | 1–200 chars |
payer | object | ||
payer.contact | string | max 320 chars | |
payer.name | string | max 200 chars | |
payer.ref | string | yes | 1–200 chars |
product | object | yes | |
product.attributes | map of string | ||
product.departureRef | string | 1–200 chars | |
product.label | string | max 200 chars | |
product.nights | integer | yes | > 0 |
product.productId | string | yes | 1–200 chars |
sharedRequests | object | default {"notes":[]} | |
sharedRequests.adjacentUnits | boolean | ||
sharedRequests.dining | string | max 200 chars | |
sharedRequests.notes | array of string | ||
travelDate | string | yes | pattern ^\d{4}-\d{2}-\d{2}$ |
units | array of object | yes | at least 1 |
units[].category | string | yes | 1–60 chars |
units[].guests | array of object | yes | at least 1 |
units[].guests[].ageBand | string | yes | 1–40 chars |
units[].guests[].id | string | yes | 1–200 chars |
units[].guests[].name | string | yes | 1–200 chars |
units[].label | string | max 200 chars | |
units[].unitId | string | yes | 1–200 chars |
Schema: apps/journeys/src/group-sales/contracts.ts (PartyQuoteRequestSchema)
Response 201
Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | The request failed validation. The message names the first failing field; oms-ops and group surfaces also return every issue in details. |
| 401 | unauthenticated | The bearer token is missing, invalid, expired or minted for another purpose. |
| 403 | scope_forbidden | The token is scoped to an agency or an access scope; this surface requires an unscoped tenant token. |
| 404 | group_sales_not_enabled | Group sales are not enabled for the tenant. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. Retry after the Retry-After interval. |
| 422 | idempotency_key_reused | The Idempotency-Key was used for a different request. |
| 500 | internal | Unexpected failure. Retry with the same Idempotency-Key. |
Read a party quote
GET
/group-sales/party-quotes/{id}Parameters
| Name | In | Required | Notes |
|---|---|---|---|
id | path | yes |
Response 200
Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | The request failed validation. The message names the first failing field; oms-ops and group surfaces also return every issue in details. |
| 401 | unauthenticated | The bearer token is missing, invalid, expired or minted for another purpose. |
| 403 | scope_forbidden | The token is scoped to an agency or an access scope; this surface requires an unscoped tenant token. |
| 404 | group_sales_not_enabled | Group sales are not enabled for the tenant. |
| 500 | internal | Unexpected failure. Retry with the same Idempotency-Key. |
Book a party quote
POST
/group-sales/party-quotes/{id}/bookCreates one trip per unit and a travel party linking them.
Parameters
| Name | In | Required | Notes |
|---|---|---|---|
id | path | yes |
Headers: Idempotency-Key, plus X-Request-Id.
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
actor | object | yes | |
actor.channel | string | max 60 chars | |
actor.id | string | yes | 1–200 chars |
actor.name | string | max 200 chars | |
actor.role | string | yes | 1–100 chars |
expectedVersion | integer | > 0 |
Schema: apps/journeys/src/group-sales/contracts.ts (BookPartyQuoteSchema)
Response 200
Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | The request failed validation. The message names the first failing field; oms-ops and group surfaces also return every issue in details. |
| 401 | unauthenticated | The bearer token is missing, invalid, expired or minted for another purpose. |
| 403 | scope_forbidden | The token is scoped to an agency or an access scope; this surface requires an unscoped tenant token. |
| 404 | group_sales_not_enabled | Group sales are not enabled for the tenant. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. Retry after the Retry-After interval. |
| 422 | idempotency_key_reused | The Idempotency-Key was used for a different request. |
| 500 | internal | Unexpected failure. Retry with the same Idempotency-Key. |
Preview individual versus group terms
POST
/group-sales/party-quotes/{id}/conversion-previewParameters
| Name | In | Required | Notes |
|---|---|---|---|
id | path | yes |
Headers: Idempotency-Key, plus X-Request-Id.
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
agreementType | string | 1–60 chars | |
groupFare | array of object | ||
groupFare[].categoryRef | string | yes | 1–200 chars |
groupFare[].groupFareMinor | integer | yes | > 0 |
groupRequestId | string | 1–200 chars |
Schema: apps/journeys/src/group-sales/contracts.ts (ConversionPreviewSchema)
Response 200
Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | The request failed validation. The message names the first failing field; oms-ops and group surfaces also return every issue in details. |
| 401 | unauthenticated | The bearer token is missing, invalid, expired or minted for another purpose. |
| 403 | scope_forbidden | The token is scoped to an agency or an access scope; this surface requires an unscoped tenant token. |
| 404 | group_sales_not_enabled | Group sales are not enabled for the tenant. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. Retry after the Retry-After interval. |
| 422 | idempotency_key_reused | The Idempotency-Key was used for a different request. |
| 500 | internal | Unexpected failure. Retry with the same Idempotency-Key. |