Save and reopen a seller proposal

  • Proposals
  • Booking
  • 3 routes
How can a seller save a proposal and reopen it later?

This scenario explains how a seller can extend proposal persistence, find saved proposals later and reopen one proposal in detail. It fits assisted sales journeys where a quote needs to remain available beyond the initial session and be retrieved from a seller workspace.

The flow starts from an existing proposal_id, applies the extend_persistence operation, then lists saved proposals and finally opens the detailed proposal content for reuse.

Overview

This scenario helps a seller-facing application keep a proposal available over time and retrieve it later from a saved proposals list.

Prerequisites

  • An existing proposal_id.
  • A valid x-api-key. Some retrieval steps also require an authorization header.
  • The save action relies on the extend_persistence PATCH operation.

Expected result

The seller can save a proposal for later reuse, list the saved proposals and reopen one proposal with its pricing, households and commercial details.

Process workflow

Legend:
Mandatory
Optional
1

Extend proposal persistence

Mandatory

This route updates a proposal by applying an operation to it. Swagger lists the available operations on /proposals as apply_promo_code, remove_options, extend_persistence, remove_promo_code, and auto_optionable. In this scenario, the operation used is extend_persistence with parameters: true.

Prerequisites

  • Have a valid proposal_id.
  • Send accept-language and x-api-key.
  • Use extend_persistence only on a proposal that must remain reusable over time.

Calling CURL

curl -X 'PATCH' \
  'https://api.clubmed.com/v0/proposals/123456' \
  -H 'accept: application/json' \
  -H 'accept-language: en-US' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "operation": "extend_persistence",
    "parameters": true
  }'

Example answer

HTTP/1.1 204 No Content

info: Swagger states that extend_persistence allows a proposal to stay alive for up to six months.


Response codes

  • OK Response (200): not documented in Swagger. The successful contract is 204 No Content, so no response body is returned.
  • Error (400): the payload is invalid, incomplete or not valid JSON.
  • Error (401): not documented in Swagger.
  • Error (404): the proposal was not found.
  • Error (409): the requested update cannot be applied to the current proposal state.
PATCH/v0/proposals/{proposal_id}
See more
2

List saved proposals

Mandatory

Use this route to list the proposals that have been saved for later reuse in the seller workspace.

Prerequisites

  • Send authorization and x-api-key.
  • Add search filters such as customer_last_name, product_id, min_departure_date or discount_id only if they help narrow the result set.
  • Reuse one returned proposal id in the detail step.

Calling CURL

curl -X 'GET' \
  'https://api.clubmed.com/v0/proposals/saved?customer_last_name=Smith&page=1&limit=10' \
  -H 'accept: application/json' \
  -H 'authorization: Bearer YOUR_TOKEN' \
  -H 'x-api-key: YOUR_API_KEY'

Example answer

[
  {
    "id": "123456",
    "product_id": "MPAC",
    "product_label": "Chamonix Mont-Blanc",
    "customer_id": "123456789",
    "first_name": "Michael",
    "last_name": "Jackson",
    "resort_arrival_date": "2022-04-15",
    "reservation_date": "2022-04-15"
  }
]

info: The returned id is the proposal_id to reuse to reopen the saved proposal in detail.


Response codes

  • OK Response (200): returns the saved proposals that match the requested seller filters.
  • Error (400): one filter or input value is invalid.
  • Error (401): authentication is missing, invalid or expired.
  • Error (404): not documented in Swagger.
  • Error (206): the response is partial and should be paginated or retried with narrower filters.
GET/v0/proposals/saved
See more
3

Open proposal details

Mandatory

Use this route to reopen one saved proposal in detail after identifying it in the saved proposals list.

Prerequisites

  • Reuse the proposal_id returned by GET/v0/proposals/saved.
  • Send x-api-key.
  • Call this step when the seller needs to inspect pricing, households and commercial options before resuming the journey.

Calling CURL

curl -X 'GET' \
  'https://api.clubmed.com/v2/proposals/123456' \
  -H 'accept: application/json' \
  -H 'x-api-key: YOUR_API_KEY'

Example answer

{
  "id": "123456",
  "booking_id": 123456,
  "label": "Proposal with one club room",
  "price": {
    "total": 9815.4,
    "currency": "EUR",
    "is_transfer_included": true
  },
  "households": [
    {
      "attendees": [
        {
          "id": "A",
          "customer_id": "string"
        }
      ]
    }
  ],
  "option_available": true,
  "extend_persistence": false,
  "is_bookable": false
}

info: Review option_available, extend_persistence and is_bookable before deciding whether the saved proposal can be reused as-is.


Response codes

  • OK Response (200): returns the detailed content of the saved proposal with price and household information.
  • Error (400): the proposal identifier or another input value is invalid.
  • Error (401): not documented in Swagger.
  • Error (404): not documented in Swagger.
  • Error (409): the economic control or proposal criteria are no longer valid.
GET/v2/proposals/{proposal_id}
See more