Modifier la chambre d'une proposition

  • Chambres
  • Réservation
  • 4 routes
Comment changer la répartition des chambres d'une proposition existante ?

Ce scénario explique comment consulter la répartition actuelle des chambres d'une proposition, rechercher des alternatives, valider une combinaison sélectionnée, puis appliquer la nouvelle répartition à la proposition.

Il est conçu pour les parcours avancés de gestion d'hébergement où le voyageur ou le vendeur veut réaffecter les participants et les chambres avant la transformation de la proposition en booking.

Vue d'ensemble

Utilisez ce scénario lorsque vous devez modifier la répartition des chambres d'une proposition existante. Le parcours complet commence par la lecture de l'allocation actuelle, poursuit avec la recherche d'alternatives, valide la combinaison choisie, puis applique cette nouvelle répartition à la proposition.

C'est la bonne séquence lorsque vous souhaitez conserver le contexte de la proposition tout en modifiant la composition des chambres et la distribution des participants.

Prérequis

  • Disposer d'un x-api-key valide.
  • Utiliser une valeur accept-language retournée par GET/v0/locales pour les routes qui l'exigent.
  • Connaître le proposal_id.
  • Vérifier que la proposition est encore valide et accepte des changements d'hébergement.
  • Avoir en tête que certains détails de payload ne sont pas visibles dans les sources disponibles pour les opérations de recherche, de validation et d'application.

Notes fonctionnelles

  • Lire d'abord la répartition actuelle permet de comparer l'état existant avec l'état cible.
  • La route de recherche renvoie des répartitions alternatives avec le stock disponible et les écarts de prix.
  • La route de validation est recommandée avant la mise à jour finale car elle vérifie la combinaison choisie dans le contexte courant de la proposition.
  • Le PUT final applique la nouvelle répartition et peut échouer si des participants sont dupliqués, manquants, ou si la chambre n'est plus disponible.

Process workflow

Legend:
Obligatoire
Optionnel
1

Consulter la répartition actuelle des chambres

Obligatoire

Cette route retourne la répartition actuelle des chambres et des participants dans la proposition.

Prérequis

Ayez l'identifiant de la proposition et une clé API valide. Ajoutez merge_accommodations=true si vous voulez agréger les chambres équivalentes.

Calling CURL

curl -X GET \
  -H "x-api-key: $API_KEY" \
  -H "accept-language: fr-FR" \
  "https://api.clubmed.com/v1/proposals/{proposal_id}/accommodations_arrangement?merge_accommodations=true"

Example answer

[
  {
    "id": "accommodation-1",
    "label": "Deluxe Room",
    "occupancy": 2,
    "quantity": 1,
    "shared_room": false,
    "attendees": [
      {
        "id": "attendee-1",
        "first_name": "Jane"
      },
      {
        "id": "attendee-2",
        "first_name": "John"
      }
    ],
    "accommodation_categories": [
      {
        "id": "DLX",
        "label": "Deluxe"
      }
    ]
  }
]

info: Utilisez cette réponse comme point de départ avant de rechercher ou de valider une nouvelle répartition.


Codes de réponse

  • 200 OK : la répartition actuelle est renvoyée.
  • 400 Bad Request : paramètres invalides ou requête mal formée.
  • 403 Forbidden : la proposition n'est pas accessible avec ce contexte.
GET/v1/proposals/{proposal_id}/accommodations_arrangement
Voir plus
2

Rechercher des répartitions de chambres alternatives

Obligatoire

Cette route recherche des répartitions alternatives et les trie par différentiel de prix croissant.

Prérequis

Passez proposal_id dans la query string. Vous pouvez aussi utiliser booking_id et customer_id selon le contexte.

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: La réponse permet de comparer les combinaisons de chambres et le différentiel de prix avant validation.


Codes de réponse

  • 200 OK : des répartitions compatibles 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
3

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

Obligatoire

Cette route vérifie qu'une répartition sélectionnée est encore disponible et cohérente avant application.

Prérequis

Envoyez la répartition candidate dans le body et passez proposal_id dans la query string.

Calling CURL

curl -X POST \
  -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/accommodations_arrangement/check?proposal_id={proposal_id}"

Example answer

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

info: Si cette étape renvoie un différentiel de prix ou un stock mis à jour, réutilisez ces valeurs avant l'application finale.


Codes de réponse

  • 200 OK : la répartition sélectionnée est validée.
  • 400 Bad Request : chambre indisponible, critères invalides ou JSON invalide.
  • 401 Unauthorized : jeton d'accès manquant ou invalide.
  • 404 Not Found : booking ou proposition introuvable.
POST/v1/accommodations_arrangement/check
Voir plus
4

Appliquer la nouvelle répartition des chambres

Obligatoire

Cette route applique la nouvelle répartition des chambres sur la proposition.

Prérequis

Réutilisez une répartition validée et l'identifiant de proposition. Le body doit associer chaque chambre aux bons participants.

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. Conservez la répartition envoyée côté client si vous devez l'afficher juste après l'appel.


Codes de réponse

  • 204 No Content : la nouvelle répartition est enregistrée.
  • 400 Bad Request : participants manquants, doublons, critères invalides ou JSON invalide.
  • 403 Forbidden : la proposition n'est pas accessible avec cette clé.
PUT/v1/proposals/{proposal_id}/accommodations_arrangement
Voir plus