Structurer la disponibilité dans vos flux

Choisir un format de disponibilité

Il existe deux façons de spécifier des données de disponibilité: (1) Places disponibles ou (2) Récurrence. Choisissez une seule méthode à utiliser pour l'ensemble de vos marchands et services. Une fois que vous avez sélectionné une méthode, vous devez vous y tenir pour l'ensemble de l'intégration (flux, serveur de réservation et mises à jour en temps réel).

Utilisez le guide suivant pour déterminer le format de disponibilité le plus adapté:

  • Dans votre système, stockez-vous la disponibilité sous forme de créneaux explicites, par exemple de 8h à 8h30 ?
  • Dans votre système, stockez-vous la disponibilité sous un format récurrent, c'est-à-dire que les marchands proposent des services à une fréquence régulière avec peu d'écarts ? Par exemple, les créneaux se répètent toutes les 15 minutes de 9h00 à 17h00, et un seul siège est disponible à chaque incrément de 15 minutes.
  • Pour les services de vos marchands, peut-il y avoir plusieurs places disponibles à la fois ? (par exemple, 30 places disponibles pour un cours)
  • Aucune des réponses ci-dessus ne s'applique-t-elle ?
    • Utiliser Spots Open
    • Remarque: Bien que l'utilisation de la récurrence soit plus efficace et puisse réduire la taille des flux, si votre modèle de données n'est pas compatible avec la récurrence en mode natif, nous vous déconseillons de l'utiliser, car vous devrez recalculer l'ensemble des emplacements récurrents de la journée pour chaque mise à jour en temps réel.

    Spots Open

    Définitions des paramètres:

    • spots_open: nombre de créneaux actuellement disponibles pour cette entrée de disponibilité.
    • spots_total: nombre total de spots dont dispose le marchand pour cette configuration, y compris ceux qui ne sont pas disponibles.

    La méthode "Spots Open" indique explicitement la disponibilité de chaque créneau et est compatible avec le modèle de plusieurs créneaux pour le même service. Ces deux paramètres fonctionnent ensemble pour créer une représentation numérique de la capacité du service.

    Lorsqu'une réservation est effectuée, le nombre de places disponibles doit diminuer de 1 via une mise à jour en temps réel (le nombre de places totales doit rester le même). Une fois que spots_open est défini sur 0, l'emplacement ne doit plus s'afficher.

    Exemples de services

    Un cours de yoga ou un institut de beauté ont les plans d'étage suivants et aucune réservation active.

    Figure 1:Plan d'étage sans réservations actives

    Le flux de disponibilité pour deux créneaux chez ces marchands se présente comme suit:

    JSON
        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
        }
        

    Exemples de services avec une réservation

    Figure 2:Plan d'étage avec une réservation active

    Un utilisateur réserve l'une des places. Lorsqu'une réservation est effectuée, une mise à jour en temps réel est effectuée pour mettre à jour la disponibilité. Cette réservation devrait apparaître dans le prochain flux de disponibilités quotidien. Dans le flux de disponibilité de ces marchands, le nombre de places disponibles (spots_open) est diminué de 1 pour le créneau du 1er septembre 2018 à 16h00 GMT. L'heure de début de la période de transition (20h GMT le 1er septembre 2018) reste inchangée.

    Extrait de flux avec une réservation

    JSON
        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 5,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
    }
        

    Récurrence

    Définitions des paramètres

    • recurrence (récurrence) : représentation des créneaux de disponibilité qui se répètent de manière cohérente.
    • repeat_until_sec: code temporel UTC de l'heure de fin du dernier créneau jusqu'auquel la disponibilité se répète.
    • repeat_every_sec: nombre de secondes entre les créneaux de disponibilité successifs. Par exemple, si repeat_every_sec = 1800 (30 minutes) et que start_sec commence à 9h00, les créneaux se répètent toutes les 30 minutes à 9h00, 9h30, 10h00, etc.
      • Remarque: Vous n'avez pas besoin de spécifier les valeurs spots_open et spots_total. Elles sont toutes deux supposées être égales à 1, sauf en cas d'exception de calendrier.

    La méthode de récurrence indique la disponibilité quotidienne des services qui se produisent à intervalles réguliers, par exemple un service qui se produit toutes les 30 minutes de 9h à 17h chaque jour. Avec la récurrence, vous spécifiez la durée de l'intervalle, la première fois qu'il se produit dans la journée, la fréquence à laquelle il doit se répéter et le moment où il doit cesser de se répéter le même jour. Remarque: Vous devez spécifier un nouvel ensemble d'emplacements récurrents pour chaque jour. Si un créneau est déjà réservé pendant la période, vous devez spécifier une exception de planification. Par exemple, répétez toutes les demi-heures de 9h à 21h, sauf de 11h à 11h30. Chaque service aura sa propre récurrence et ses propres exceptions de planification.

    Exemples de services

    Un institut de beauté dispose du plan d'étage suivant et n'a aucune réservation active.

    Figure 3:Plans d'étage sans réservations actives. Supposons qu'il n'y ait qu'une seule place disponible par service (par exemple, Sally propose des coupes de cheveux toutes les 30 minutes, mais ne peut s'occuper que d'un seul client à la fois).

    Le flux de disponibilité pour un créneau chez ces marchands se présente comme suit:

    Extrait de flux:

    JSON
        {
        "availability": [
              {
                "merchant_id": "1001",
                "service_id": "1001",  # haircut
                "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                "duration_sec": 1800,
                "recurrence": {
                  "repeat_every_sec": 1800,
                  "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                }
              }
            ]
        }
        

    Exemples de services avec une réservation

    Figure 4:Plans d'étage avec une réservation active. Supposons qu'il n'y ait qu'une seule place disponible par service (par exemple, Sally propose des coupes de cheveux toutes les 30 minutes, mais ne peut s'occuper que d'un seul client à la fois).

    Imaginons maintenant qu'un utilisateur réserve un rendez-vous de coiffure avec Sally à 12h30. Lorsqu'une réservation est effectuée, une mise à jour en temps réel est envoyée pour modifier la disponibilité. Cette réservation devrait apparaître dans le prochain flux de disponibilités quotidien. Le flux de disponibilité de ces marchands comporterait une exception de planification entre 12h30 et 13h00 pour un service d'une durée de 30 minutes.

    Extrait de flux avec une réservation:

    JSON
        {
          "availability": [
                {
                  "merchant_id": "1001",
                  "service_id": "1001",
                  "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                  "duration_sec": 1800,
                  "recurrence": {
                    "repeat_every_sec": 1800,
                    "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                  },
                  "schedule_exception": [
                    {
                      "time_range": {
                        "begin_sec": 1493901000, # May 4, 2017 12:30:00 PM GMT
                        "end_sec": 1493902800 # May 4, 2017 1:00:00 PM GMT
                      }
                    }
                  ],
                }
              ]
        }