Ajouter des services de garde d'enfants à une proposition

  • Réservation
  • Option activité
  • 6 routes
Comment ajouter un service de garde d'enfants avant la réservation ?

Ce scénario explique comment partir d'une proposition, identifier les services de garde d'enfants disponibles pour les participants concernés, puis les ajouter avant de transformer la proposition en réservation.

Il couvre la recherche de proposition, la découverte des services additionnels de type CHILDCARE, la mise à jour des services et la vérification finale du contenu de la proposition.

Vue d'ensemble

Ce parcours permet d'enrichir une proposition avec des services de garde d'enfants avant la création de la réservation. Il s'appuie sur les services additionnels disponibles pour chaque participant et sur le mécanisme de mise à jour des services de la proposition.

Prérequis

  • Disposer d'une proposition valide contenant au moins un enfant éligible.
  • Conserver le proposal_id renvoyé par la recherche de proposition.
  • Lors de la mise à jour, transmettre la liste complète des services à conserver, car l'appel fonctionne en remplacement total.

Process workflow

Legend:
Obligatoire
Optionnel
1

Créer la proposition initiale

Obligatoire

Cette route recherche les propositions de départ du parcours et retourne le proposal_id à réutiliser dans les étapes suivantes.

Prerequis

  • Disposer des critères de séjour et des participants du dossier.
  • Inclure l'enfant concerné dès cette recherche si vous ciblez ensuite des services CHILDCARE.

Calling CURL

curl -X 'POST' \
  'https://api.clubmed.com/v3/proposals/search' \
  -H 'accept: application/json' \
  -H 'accept-language: fr-FR' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ ... }'

Example answer

[
  {
    "id": "123456",
    "product_id": "MPAC",
    "package_id": "AI",
    "price": {
      "total": 9815.4,
      "currency": "EUR"
    },
    "package_options": [
      {
        "type": "CHILDCARE",
        "amount": 152.25
      }
    ],
    "is_bookable": false
  }
]

info: conservez le proposal_id et réutilisez la même locale jusqu'à la création du booking.


Codes de reponse

  • OK Response (200): retourne une liste de propositions tarifées.
  • Error (400): participants dupliqués, hébergements incohérents, aucune proposition tarifable, payload invalide.
  • Error (401): unauthorized.
  • Error (404): Unknown Product.
  • Error (409): The proposal criteria are no longer valid.
Cliquez pour agrandir
POST/v3/proposals/search
Voir plus
2

Lister les services de garde d'enfants disponibles

Obligatoire

Cette route liste les services additionnels disponibles pour une proposition et permet de filtrer uniquement la garde d'enfants avec types=CHILDCARE.

Prerequis

  • Disposer d'un proposal_id valide.
  • Utiliser le filtre types=CHILDCARE pour ne récupérer que les services de garde d'enfants.

Calling CURL

curl -X 'GET' \
  'https://api.clubmed.com/v0/additional_services?proposal_id=123456&types=CHILDCARE' \
  -H 'accept: application/json' \
  -H 'accept-language: fr-FR' \
  -H 'x-api-key: YOUR_API_KEY'

Example answer

[
  {
    "id": "VMOSK1",
    "type": "CHILDCARE",
    "time_slot": "MORNING",
    "age_in_months": {
      "min": 12,
      "max": 48
    },
    "schedules": [
      {
        "remaining_stock": 2,
        "attendees": [
          {
            "id": "A",
            "price": 88
          }
        ]
      }
    ]
  }
]

info: vérifiez sold_only_with et not_compatible_with avant de composer la sélection finale de services.


Codes de reponse

  • OK Response (200): retourne la liste des services disponibles pour la proposition.
  • Error (400): proposition invalide, état non accepté, client incohérent, payload invalide.
  • Error (401): unauthorized.
  • Error (404): Booking/Proposal not found.
  • Error (206): partial_content.
  • Error (403): pays non autorisé ou authentification manquante avec booking_id et customer_id.
  • Error (409): The proposal criteria are no longer valid.
  • Error (416): Requested range not satisfiable.
GET/v0/additional_services
Voir plus
3

Appliquer les services à la proposition

Obligatoire

Cette route modifie la liste des services associés à une proposition. Le Swagger précise que la sélection envoyée doit être construite à partir de la ressource de recherche des services et des services déjà présents sur la proposition. Comme il s'agit d'une route cancel & replace, chaque appel doit contenir l'ensemble des services additionnels que vous souhaitez conserver.

Prérequis

  • Disposer d'un proposal_id valide.
  • Préparer la liste complète des services à conserver à partir de la recherche de services et de l'état courant de la proposition.
  • Envoyer accept-language et x-api-key. Ajoutez authorization si votre contexte d'intégration l'utilise.

Calling CURL

curl -X 'PUT' \
  'https://api.clubmed.com/v0/proposals/123456/services' \
  -H 'accept: application/json' \
  -H 'accept-language: fr-FR' \
  -H 'authorization: Bearer YOUR_TOKEN' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '[ ... ]'

Example answer

HTTP/1.1 204 No Content

info: Rejouez ensuite GET/v0/proposals/{proposal_id}/services pour contrôler le résultat effectivement appliqué sur la proposition.


Codes de réponse

  • OK Response (200): non documenté dans le Swagger.
  • Error (400): services incompatibles, service obligatoire manquant, payload invalide.
  • Error (401): unauthorized.
  • Error (404): Proposal not found.
  • Success (204): no_content.
  • Error (409): The economic control of this proposition is no longer valid.
Cliquez pour agrandir
PUT/v0/proposals/{proposal_id}/services
Voir plus
4

Contrôler les services appliqués

Obligatoire

Cette route relit les services actuellement attachés à la proposition pour vérifier que la garde d'enfants a bien été appliquée.

Prerequis

  • Avoir déjà appliqué les services sur la proposition.
  • Connaître le proposal_id à contrôler.

Calling CURL

curl -X 'GET' \
  'https://api.clubmed.com/v0/proposals/123456/services?filter=type==CHILDCARE' \
  -H 'accept: application/json' \
  -H 'x-api-key: YOUR_API_KEY'

Example answer

[
  {
    "id": "AHSI01",
    "type": "RENTAL",
    "time_slot": "MORNING",
    "currency": "EUR",
    "schedules": [
      {
        "attendees": [
          {
            "id": "A",
            "price": 250,
            "price_without_discount": 300
          }
        ]
      }
    ]
  }
]

info: le filtre permet de cibler CHILDCARE, mais l'exemple Swagger reste générique et peut montrer un autre type de service.


Codes de reponse

  • OK Response (200): retourne les services actuellement associés à la proposition.
  • Error (400): bad_request ou validation_error.
  • Error (401): non documente dans le Swagger.
  • Error (404): non documente dans le Swagger.
Cliquez pour agrandir
GET/v0/proposals/{proposal_id}/services
Voir plus
5

Renseigner les participants de la proposition

Obligatoire

Utilisez PUT/v3/proposals/{proposal_id}/attendees pour compléter ou corriger les voyageurs rattachés à la proposition avant la création de la réservation.

Prerequis

  • Disposer d'un proposal_id valide.
  • Fournir pour chaque voyageur les données d'identité attendues et, si besoin, les documents de voyage.
  • Vous pouvez ajouter call_id en query pour tracer le motif d'appel côté front ou centre de contact.

Calling CURL

curl -X 'PUT' \
  'https://api.clubmed.com/v3/proposals/123456/attendees?call_id=1234567890' \
  -H 'accept: application/json' \
  -H 'accept-language: fr-FR' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '[{
    "id": "A",
    "customer_id": "123456789",
    "partner_type": "ADULT",
    "travel_documents": []
  }]'

Example answer

[
  {
    "id": "A",
    "customer_id": "123456789",
    "customer_status": "EXISTING_CUSTOMER",
    "loyalty_status": "GOLD",
    "partner_type": "ADULT"
  }
]

info: la version v3 reprend le même objectif métier que la route historique, mais ajoute call_id pour tracer le contexte d'appel quand vous alimentez la proposition.


Codes de reponse

  • OK Response (200): retourne la liste des participants mise à jour sur la proposition.
  • Error (400): données voyageurs invalides, document déjà utilisé, contrainte passeport non respectée ou payload invalide.
  • Error (401): l'authentification est absente, invalide ou expirée.
  • Error (403): au moins un client ajouté n'est pas autorisé à poursuivre la réservation.
  • Error (404): non documente dans le Swagger.
  • Error (409): le contrôle économique de la proposition n'est plus valide.
Cliquez pour agrandir
PUT/v3/proposals/{proposal_id}/attendees
Voir plus
6

Créer la réservation à partir de la proposition

Obligatoire

Cette route crée la réservation finale à partir de la proposition enrichie avec les participants et les services sélectionnés.

Prerequis

  • La proposition doit déjà contenir les participants et les services retenus.
  • Conserver la même valeur accept-language que lors de la création de la proposition.

Calling CURL

curl -X 'POST' \
  'https://api.clubmed.com/v3/bookings' \
  -H 'accept: application/json' \
  -H 'accept-language: fr-FR' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ ... }'

Example answer

{
  "booking_id": "654321",
  "households": [
    {
      "attendees": [
        {
          "customer_id": 987654,
          "type": "MAIN"
        }
      ]
    }
  ],
  "option_durability": {
    "is_reliable": true,
    "expiration_date_time": "20160415T10:23:00.234Z"
  }
}

info: selon le contexte, le succès peut être retourné en 200 ou en 201.


Codes de reponse

  • OK Response (200): retourne le booking_id, les participants du foyer et l'option_durability.
  • Error (400): document déjà utilisé, ville de départ invalide, contrainte passeport, payload invalide.
  • Error (401): unauthorized.
  • Error (404): non documente dans le Swagger.
  • Error (403): utilisateur non autorisé, booking déjà créé depuis la proposition, option ou promotion interdite.
  • Error (409): tarif, promotion, transport, hébergement ou dépendance de service devenus invalides.
  • Error (419): Flight no longer available.
Cliquez pour agrandir
POST/v3/bookings
Voir plus