Save a proposal to a customer account

  • Booking
  • Booking
  • 4 routes
How do I save a proposal and retrieve it from the customer account?

This scenario explains how to create a proposal, identify the attendees, save the proposal under a customer account, and optionally list saved proposals later.

It is useful when a customer needs to pause the journey and reopen the saved proposal from their account.

Overview

The journey creates a proposal, enriches it with attendee data, stores it in the customer account, and optionally retrieves the saved proposal list afterward.

Prerequisites

  • Have the booking criteria required to create the proposal.
  • Know the customer_id of the account that will store the proposal.
  • Keep the proposal_id returned by the proposal creation step.

Process workflow

Legend:
Mandatory
Optional
1

Create the proposal

Mandatory

Use POST/v3/proposals/search to create the proposal.

Prerequisites

Prepare the parameters required by the call. Keep x-api-key and, when the route is customer-scoped, a valid bearer token. Validate the request body before the call to avoid a validation error.

Calling CURL

curl -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "accept-language: en-US" \
  -H "Content-Type: application/json" \
  -d '{"product_id": "product-1", "start_date": "2026-07-05", "end_date": "2026-07-12", "attendees": [{"birthdate": "1990-03-12"}]}' \
  "https://api.clubmed.com/v3/proposals/search"

Example answer

[
  {
    "id": "proposal-1",
    "product_id": "product-1",
    "price": {
      "amount": 2890,
      "currency": "EUR"
    },
    "remaining_stock": 4
  }
]

info: Keep the returned proposal_id to attach this proposal to the targeted customer account in the next step.


Response codes

  • 200 OK: the operation succeeds and the resource is returned.
  • 400 Bad Request: the body or parameters are invalid.
  • 404 Not Found: the target resource cannot be found.
POST/v3/proposals/search
See more
2

Identify the attendees

Mandatory

Use PUT/v3/proposals/{proposal_id}/attendees to identify the attendees.

Prerequisites

Prepare proposal_id. Keep x-api-key and, when the route is customer-scoped, a valid bearer token. Validate the request body before the call to avoid a validation error.

Calling CURL

curl -X PUT \
  -H "x-api-key: YOUR_API_KEY" \
  -H "accept-language: en-US" \
  -H "Content-Type: application/json" \
  -d '{"attendees": [{"id": "attendee-1", "first_name": "Jane", "last_name": "Doe", "birthdate": "1990-03-12"}]}' \
  "https://api.clubmed.com/v3/proposals/{proposal_id}/attendees"

Example answer

HTTP/1.1 204 No Content

info: Success may be returned without a response body. Read the resource again afterwards if you need to display the final state.


Response codes

  • 204 No Content: the operation is applied successfully.
  • 400 Bad Request: the body or parameters are invalid.
  • 404 Not Found: the target resource cannot be found.
PUT/v3/proposals/{proposal_id}/attendees
See more
3

Save the proposal

Mandatory

Use POST/v0/customers/{customer_id}/proposals_summary to save the proposal.

Prerequisites

Prepare customer_id. Keep x-api-key and, when the route is customer-scoped, a valid bearer token. Validate the request body before the call to avoid a validation error.

Calling CURL

curl -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "accept-language: en-US" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"proposal_id": "proposal-1"}' \
  "https://api.clubmed.com/v0/customers/{customer_id}/proposals_summary"

Example answer

HTTP/1.1 204 No Content

info: Success may be returned without a response body. Read the resource again afterwards if you need to display the final state.


Response codes

  • 204 No Content: the operation is applied successfully.
  • 400 Bad Request: the body or parameters are invalid.
  • 401 Unauthorized: the token is missing or invalid.
  • 403 Forbidden: access is denied in this context.
  • 404 Not Found: the target resource cannot be found.
POST/v0/customers/{customer_id}/proposals_summary
See more
4

List saved proposals

Optional

Use GET/v0/customers/{customer_id}/proposals_summary to list saved proposals.

Prerequisites

Prepare customer_id. Keep x-api-key and, when the route is customer-scoped, a valid bearer token.

Calling CURL

curl -X GET \
  -H "x-api-key: YOUR_API_KEY" \
  -H "accept-language: en-US" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  "https://api.clubmed.com/v0/customers/{customer_id}/proposals_summary?limit=20&page=1"

Example answer

[
  {
    "proposal_id": "proposal-1",
    "label": "Valmorel family stay",
    "updated_at": "2026-04-03T09:00:00Z"
  }
]

info: Use this summary to find an existing proposal before reopening it or attaching it to a customer account.


Response codes

  • 200 OK: the expected data is returned.
  • 400 Bad Request: the request is invalid or incomplete.
  • 401 Unauthorized: the token is missing or invalid.
  • 403 Forbidden: access is denied in this context.
  • 404 Not Found: the requested resource cannot be found.
GET/v0/customers/{customer_id}/proposals_summary
See more