Propositions : ajouter ou modifier des hébergements

  • Création option
  • 4 routes
Comment ajouter des chambres ou modifier la répartition d'hébergement dans une proposition ?

Ce guide décrit le parcours permettant d'ajouter des chambres ou de modifier la répartition d'hébergement d'une proposition avant sa confirmation.

Le processus commence par la récupération d'une proposition exploitable, poursuit avec la consultation du catalogue d'hébergements du produit et des répartitions disponibles pour la proposition, puis se termine par l'application de la répartition retenue.

Vue d'ensemble

Ce parcours permet de faire évoluer l'hébergement d'une proposition existante sans sortir du flux de réservation. Il combine une lecture du catalogue produit et une lecture de la disponibilité propre à la proposition.

Les deux lectures n'ont pas le même rôle :

Prérequis

  • Disposer d'un proposal_id valide, ou être en mesure d'en générer un via POST/v3/proposals/search.
  • Disposer d'un product_id valide pour consulter le catalogue du produit.
  • Envoyer accept-language et x-api-key sur chaque route du parcours.
  • Vérifier que la proposition est toujours valide avant d'appliquer une nouvelle répartition.

Points d'attention

  • Le catalogue produit ne garantit pas la disponibilité au niveau de la proposition.
  • La mise à jour finale modifie la proposition en place.
  • Le détail exact du body attendu par PUT/v1/proposals/{proposal_id}/accommodations_arrangement n'est pas vérifiable avec les sources consultées.

Process workflow

Legend:
Obligatoire
Optionnel
1

Générer une proposition de départ

Obligatoire

Cette route crée une proposition de référence à partir des critères du séjour.

Prérequis

Préparez les critères de recherche principaux: produit, dates, participants et éventuels filtres commerciaux.

Calling CURL

curl -X POST \
  -H "x-api-key: $API_KEY" \
  -H "accept-language: fr-FR" \
  -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"}, {"birthdate": "1992-08-03"}]}' \
  "https://api.clubmed.com/v3/proposals/search"

Example answer

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

info: La proposition obtenue sert de base pour explorer les hébergements puis appliquer une nouvelle répartition de chambres.


Codes de réponse

  • 200 OK : une ou plusieurs propositions sont renvoyées.
  • 400 Bad Request : critères invalides, JSON invalide ou contraintes incohérentes.
  • 401 Unauthorized : jeton d'accès manquant ou invalide.
  • 403 Forbidden : contexte commercial non autorisé.
  • 404 Not Found : produit introuvable.
  • 409 Conflict : critères devenus invalides au moment du calcul.
POST/v3/proposals/search
Voir plus
2

Explorer le catalogue des hébergements du produit

Optionnel

Cette route retourne le catalogue d'hébergements disponible pour le produit ciblé.

Prérequis

Munissez-vous de l'identifiant produit. Ajoutez stay_date si vous voulez filtrer les hébergements pour une date précise.

Calling CURL

curl -X GET \
  -H "x-api-key: $API_KEY" \
  -H "accept-language: fr-FR" \
  "https://api.clubmed.com/v2/products/{product_id}/accommodations?stay_date=2026-07-05"

Example answer

[
  {
    "id": "room-1",
    "label": "Superior Room",
    "capacity": {
      "adults": 2
    },
    "availability": "AVAILABLE"
  }
]

info: Le catalogue vous aide à identifier les catégories ou labels de chambres à rechercher ensuite dans la proposition.


Codes de réponse

  • 200 OK : la liste des hébergements du produit est renvoyée.
  • 400 Bad Request : paramètres invalides ou requête mal formée.
  • 403 Forbidden : accès refusé.
  • 404 Not Found : produit introuvable.
GET/v2/products/{product_id}/accommodations
Voir plus
3

Comparer les répartitions de chambres disponibles

Obligatoire

Cette route compare les répartitions de chambres compatibles avec la proposition en cours.

Prérequis

Passez proposal_id dans la query string et envoyez la structure d'occupation attendue dans le body.

Calling CURL

curl -X POST \
  -H "x-api-key: $API_KEY" \
  -H "accept-language: fr-FR" \
  -H "Content-Type: application/json" \
  -d '{"occupancies": [{"adults": 2}]}' \
  "https://api.clubmed.com/v1/accommodations_arrangement/search?proposal_id={proposal_id}"

Example answer

[
  {
    "remaining_stock": 3,
    "is_upgradable_online": true,
    "accommodation_arrangement": [
      {
        "room_id": "room-1",
        "label": "Deluxe Room",
        "attendees": [
          "attendee-1",
          "attendee-2"
        ]
      }
    ],
    "differential_prices": {
      "amount": 180,
      "currency": "EUR"
    }
  }
]

info: Le différentiel de prix permet d'anticiper le surcoût ou l'économie avant la validation finale.


Codes de réponse

  • 200 OK : des répartitions alternatives sont renvoyées.
  • 400 Bad Request : proposition invalide, critères incohérents ou JSON invalide.
  • 401 Unauthorized : jeton d'accès manquant ou invalide.
  • 404 Not Found : booking ou proposition introuvable.
  • 409 Conflict : la proposition n'est plus valide dans son état courant.
POST/v1/accommodations_arrangement/search
Voir plus
4

Appliquer la répartition de chambres sélectionnée

Obligatoire

Cette route applique la répartition de chambres retenue sur la proposition.

Prérequis

Réutilisez une répartition validée et associez chaque chambre aux bons participants dans le body.

Calling CURL

curl -X PUT \
  -H "x-api-key: $API_KEY" \
  -H "accept-language: fr-FR" \
  -H "Content-Type: application/json" \
  -d '{"accommodation_arrangement": [{"room_id": "room-1", "attendees": ["attendee-1", "attendee-2"]}]}' \
  "https://api.clubmed.com/v1/proposals/{proposal_id}/accommodations_arrangement"

Example answer

HTTP/1.1 204 No Content

info: Le succès est retourné sans body. Relisez ensuite la proposition si vous devez afficher la nouvelle configuration complète.


Codes de réponse

  • 204 No Content : la répartition est appliquée.
  • 400 Bad Request : participants manquants, doublons, critères invalides ou JSON invalide.
  • 403 Forbidden : accès refusé à la proposition.
PUT/v1/proposals/{proposal_id}/accommodations_arrangement
Voir plus