Travel parties
Families and friends travelling together on separate trips, without group commercial terms.
| Operation | Endpoint |
|---|---|
| List travel parties | GET /travel-parties |
| Create a travel party | POST /travel-parties |
| Read a travel party | GET /travel-parties/{id} |
| Preview converting a party to group terms | POST /travel-parties/{id}/conversion-preview |
| Add a trip to a travel party | POST /travel-parties/{id}/trips |
| Remove a trip from a travel party | DELETE /travel-parties/{id}/trips/{tripId} |
List travel parties
GET
/travel-partiesParameters
| Name | In | Required | Notes |
|---|---|---|---|
tripId | query | The party this trip belongs to. |
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_bookings_not_enabled | Group bookings are not enabled for the tenant. |
| 500 | internal | Unexpected failure. Retry with the same Idempotency-Key. |
Create a travel party
POST
/travel-partiesHeaders: 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 |
defaultPayer | object | ||
defaultPayer.contact | string | max 320 chars | |
defaultPayer.name | string | max 200 chars | |
defaultPayer.ref | string | yes | 1–200 chars |
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 |
partyId | string | 1–200 chars | |
sharedRequests | object | default {"notes":[]} | |
sharedRequests.adjacentUnits | boolean | ||
sharedRequests.dining | string | max 200 chars | |
sharedRequests.notes | array of string | ||
tripIds | array of string |
Schema: apps/journeys/src/group-agreements/contracts.ts (CreatePartySchema)
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_bookings_not_enabled | Group bookings 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 travel party
GET
/travel-parties/{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 | party_not_found | The travel party does not exist. |
| 404 | group_bookings_not_enabled | Group bookings are not enabled for the tenant. |
| 500 | internal | Unexpected failure. Retry with the same Idempotency-Key. |
Preview converting a party to group terms
POST
/travel-parties/{id}/conversion-previewParameters
| Name | In | Required | Notes |
|---|---|---|---|
id | path | yes |
Headers: Idempotency-Key, plus X-Request-Id.
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
groupFare | array of object | ||
groupFare[].bestAvailableMinor | integer | > 0 | |
groupFare[].categoryRef | string | yes | 1–200 chars |
groupFare[].groupFareMinor | integer | yes | > 0 |
groupFare[].label | string | max 200 chars |
Schema: apps/journeys/src/group-agreements/contracts.ts (PartyConversionSchema)
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_bookings_not_enabled | Group bookings 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. |
Add a trip to a travel party
POST
/travel-parties/{id}/tripsParameters
| 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 |
tripId | string | yes | 1–200 chars |
Schema: apps/journeys/src/group-agreements/contracts.ts (LinkPartyTripSchema)
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_bookings_not_enabled | Group bookings 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. |
Remove a trip from a travel party
DELETE
/travel-parties/{id}/trips/{tripId}Parameters
| Name | In | Required | Notes |
|---|---|---|---|
id | path | yes | |
tripId | path | yes |
Headers: Idempotency-Key, plus X-Request-Id.
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_bookings_not_enabled | Group bookings 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. |