v1 önceden sipariş özelliği

Kullanıcıların teslim alma ve adrese teslim yemek siparişlerini önceden planlamaları için sipariş karşılama bölümünüze destek ekleyebilirsiniz. Sipariş karşılamada bu desteği uygulamadan önce, envanter feed'i şemasında (AdvanceServiceDeliveryHoursSpecification) açıklandığı gibi, kullanıcıların ön sipariş verme saatlerini belirten bir hizmet envanteri feed'i oluşturun.

Gelişmiş sipariş slotları

Google, bir restoranın veya hizmetin sipariş karşılama sürelerine (AdvanceServiceDeliveryHoursSpecification'te tanımlandığı şekilde) bağlı olarak 15 dakikalık artışlarla, en fazla 7 gün için önceden sipariş aralıkları önerir.

Önerilen önceden sipariş slotlarını almak için ödeme sırasında FoodCartExtension nesnesinin fulfillmentPreference alanındaki şu değerleri kullanın:

  • PickupInfo.pickupTimeIso8601
  • DeliveryInfo.deliveryTimeIso8601

Ödeme sırasında ön siparişleri uygulayın

Aşağıdaki tabloda, kullanıcılar sipariş vermeye çalıştıklarında ödeme sırasında sipariş karşılama yanıtınızı uygulayabileceğiniz yöntemler listelenmiştir.

Senaryo Sipariş karşılama davranışı
İstenen alan için ön sipariş karşılanabilir. P0M ("en kısa sürede") veya FUTURE_SLOT alışveriş sepetini, aynı yuvayla bir ProposedOrder oluşturarak kabul edin. Slot kabul eden bir ödeme yanıtı örneği için bu kod snippet'ine bakın.
İstenen alan için ön sipariş yerine getirilemiyor. Sipariş karşılama işleminiz şunları yapmalıdır:
  1. İstenen P0M veya FUTURE_SLOT alışveriş sepetini reddedin ve siparişin neden karşılanamadığını FoodErrorExtension nesnesinde belirtin.
    • Sipariş kapasite nedeniyle yerine getirilemiyorsa NO_CAPACITY hata türünde FoodOrderError değerini belirtin.
    • Restoran kapalı olduğu için sipariş yerine getirilemezse CLOSED hata türünde bir FoodOrderError belirtin.
    • Sipariş başka bir nedenden dolayı yerine getirilemiyorsa UNAVAILABLE_SLOT hata türünde FoodOrderError belirtin.
  2. Mümkünse correctedProposedOrder öğesinde alternatif P0M veya FUTURE_SLOT değerleri sağlayın. Bu değerler, mevcut saatten başlayarak sonraki 7 gün için geçerli tüm sipariş karşılama aralıkları olmalıdır. Uygun durumlarda P0M slotunu ekleyin.

Alternatif slotlar öneren bir ödeme yanıtı örneği için bu kod snippet'ine bakın.

Sipariş karşılama için alternatif slotlar

Ödeme sırasında, Google tarafından önerilen önceden sipariş slotları uygun değilse karşılamanız, CheckoutResponseMessage nesnesini kullanarak alternatifler önerebilir.

Alternatif ön sipariş aralıkları belirtmek için ödeme isteğine FoodErrorExtension ile yanıt verin ve aşağıdaki değerleri ayarlayın:

  1. foodOrderErrors parametresinde hata türünü belirtin (ör. UNAVAILABLE_SLOT, NO_CAPACITY veya CLOSED).
  2. correctedProposedOrder parametresinde, availableFulfillmentOptions aracılığıyla alternatif P0M veya FUTURE_SLOT değerleri sağlayın.

Alternatif aralıklar, siparişin verildiği tarihten itibaren sonraki 7 gün için olmalı ve kullanıcının istediği alışveriş sepetinin karşılanabileceği tüm aralıkları içermelidir.

Örneğin, öğle yemeği spesiyallerinin yalnızca pazartesiden cumaya 11:00 ile 13:00 arasında sunulduğunu varsayalım. Daha sonra kullanıcı, öğle yemeği spesiyallerini alışveriş sepetine eklemeye çalışıyor ancak seçtiği zaman aralığı kullanılamıyor. Bu durumda, sipariş verdiğiniz siparişte öğle yemeği spesiyalleri bulunmalı ve sonraki 7 gün boyunca yalnızca 11:00-13:00 saatleri arasında yer almalıdır.

Yanıtınızda correctedProposedOrder.Cart.fulfillmentPreference nesnesini atlamalısınız.

Kullanılabilir slot yoksa veya restoran ya da hizmet ön siparişleri desteklemiyorsa correctedProposedOrder sağlamanız gerekmez.

Restoran veya hizmet ön sipariş almaya uygun olduğunda, ödeme isteği ve ön siparişler için yanıt akışı sırasında sipariş karşılama ve Google arasındaki JSON mesajları için aşağıdaki örneklere bakın.

Örnek: Teslimat alanına sahip CheckoutRequest

Aşağıdaki snippet'te ön sipariş teslimat aralığı olan bir ödeme isteği örneği gösterilmektedir.

{
  "inputs": [
    {
      "intent": "actions.foodordering.intent.CHECKOUT",
      "arguments": [
        {
          "extension": {
            "@type": "type.googleapis.com/google.actions.v2.orders.Cart",
            "merchant": {
              "id": "https://www.exampleprovider.com/merchant/id1",
              "name": "Cucina Venti"
            },
            "lineItems": [
              {
                "name": "Sizzling Prawns Dinner",
                "type": "REGULAR",
                "id": "sample_item_offer_id_1",
                "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                "quantity": 1,
                "price": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "16",
                    "nanos": 750000000
                  }
                },
              }
            ],
            "extension": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
              "fulfillmentPreference": {
                "fulfillmentInfo": {
                  "delivery": {
                    // Deliver at 6:30PM.
                    "deliveryTimeIso8601": "2017-12-14T18:30:00-07:00"
                  }
                }
              },
              "location": {
                ...
              }
            }
          }
        }
      ]
    }
  ]
}

Örnek: CheckoutResponse'un yuvayı kabul etmesi

Aşağıdaki snippet'te, sipariş karşılama işleminizin önerilen ön sipariş alanlarını kabul ettiği bir ödeme yanıtı örneği gösterilmektedir.

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "checkoutResponse": {
              "proposedOrder": {
                "id": "sample_proposed_order_id_1",
                "cart": {
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Falafel Bite"
                  },
                  "lineItems": [
                    {
                      "name": "Sizzling Prawns Dinner",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "16",
                          "nanos": 750000000
                        }
                      },
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "delivery": {
                          // Same as the time in the request.
                          "deliveryTimeIso8601": "2017-12-14T18:30:00-07:00"
                        }
                      }
                    },
                    "location": {
                      ...
                     }
                   }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    // Represents $16.75
                    "currencyCode": "USD",
                    "units": "16",
                    "nanos": 750000000
                  }
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  // Send whole proposed order back.
                  "availableFulfillmentOptions": [
                    "fulfillmentInfo": {
                      "delivery": {
                        // Same as the time in the request.
                        "deliveryTimeIso8601": "2017-12-14T18:30:00-07:00"
                      }
                    }
                  ]
                }
              },
              "paymentOptions": {
                ...
              }
            }
          }
        }
      ]
    }
  }
}

Örnek: Alternatif yuvalara sahip CheckoutResponse

Aşağıdaki snippet'te, karşılama işleminizin alternatif ön sipariş alanları önerdiği bir ödeme yanıtı örneği gösterilmektedir. Yanıtınızda correctedProposedOrder.Cart.fulfillmentPreference nesnesinin atlanması gerektiğini unutmayın.

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "error": {
              "@type": "type.googleapis.com/google.actions.v2.orders.FoodErrorExtension",
              "foodOrderErrors": [
                {
                  "error": "UNAVAILABLE_SLOT", // Cart level error
                  "description": "The restaurant is closed."
                }
              ],
              "correctedProposedOrder": {
                // Send whole original cart back,
                // without the fulfillmentPreference.
                "cart": {
                  ...
                },
                "otherItems": {
                  ...
                },
                "totalPrice": {
                  ...
                },
                "extension": {
                  "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension",
                  "availableFulfillmentOptions": [
                    "fulfillmentInfo": {
                      "delivery": {
                        "deliveryTimeIso8601": "2017-12-14T19:00:00-07:00"
                      }
                    },
                    "fulfillmentInfo": {
                      "delivery": {
                        "deliveryTimeIso8601": "2017-12-14T19:30:00-07:00"
                      }
                    },
                    "fulfillmentInfo": {
                      "delivery": {
                        "deliveryTimeIso8601": "2017-12-14T20:00:00-07:00"
                      }
                    }
                  ]
                }
              },
              "paymentOptions": {
                ...
              }
            }
          }
        }
      ]
    }
  }
}

Sipariş gönderiminde ön siparişleri uygulayın

Sipariş gönderimi sırasında ön sipariş slotlarıyla ilgili bir sorun varsa SubmitOrderResponseMessage öğeniz, nedeni (ör. UNAVAILABLE_SLOT veya UNKNOWN) RejectionInfo nesnesine eklemelidir.

Sipariş sağlayıcı tarafından kabul edildiğinde OrderState nesnesinde siparişin CREATED olan durumunu CONFIRMED olarak güncelleyin. Seçilen zaman aralığını kullanıcıya gönderdiğiniz onay e-postasına ekleyin.

Sipariş karşılama işleminiz, siparişi daha sonra restorana gönderirse Eşzamansız Sipariş Güncelleme İşlemi'ni kullanarak Google'a bir güncelleme gönderin.

Karşılamanızın sipariş gönderme yanıtının veya daha sonraki eşzamansız sipariş güncellemelerinin OrderUpdate nesnesine, değeri aşağıdaki gibi ayarlanmış bir estimatedFulfillmentTimeIso8601 ekleyin:

  • Sipariş durumu CREATED veya CONFIRMED olduğunda değeri, kullanıcının ön siparişi için planladığı teslimat veya teslim alma zamanı olarak ayarlayın.
  • Restorandan veya hizmetten daha doğru bir tahmini teslimat süresi olduğunda değeri teslimat veya teslim alma için tahmini süreye ayarlayın.

Örnek: Gönderim slotuylaSubmitOrderRequest

Aşağıdaki snippet'te, kullanıcının seçtiği ilerleme sırası alanını belirten bir sipariş gönderme isteği örneği gösterilmektedir.

{
  "inputs": [
    {
      "intent": "actions.intent.TRANSACTION_DECISION",
      "arguments": [
        {
          "transactionDecisionValue": {
            "order": {
              "finalOrder": {
                "cart": {
                  "notes": "Guest prefers their food to be hot when it is delivered.",
                  "merchant": {
                    "id": "https://www.exampleprovider.com/merchant/id1",
                    "name": "Cucina Venti"
                  },
                  "lineItems": [
                    {
                      "name": "Sizzling Prawns Dinner",
                      "type": "REGULAR",
                      "id": "sample_item_offer_id_1",
                      "offerId": "https://www.exampleprovider.com/menu/item/offer/id1",
                      "quantity": 1,
                      "price": {
                        "type": "ESTIMATE",
                        "amount": {
                          "currencyCode": "USD",
                          "units": "16",
                          "nanos": 750000000
                        }
                      }
                    }
                  ],
                  "extension": {
                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                    "fulfillmentPreference": {
                      "fulfillmentInfo": {
                        "delivery": {
                          "deliveryTimeIso8601": "2017-12-14T18:30:00-07:00"
                        }
                      }
                    }
                    "contact": {
                      ...
                    }
                  }
                },
                "totalPrice": {
                  "type": "ESTIMATE",
                  "amount": {
                    "currencyCode": "USD",
                    "units": "16",
                    "nanos": 750000000
                  }
                },
                "id": "sample_final_order_id",
                "extension": {
                  // Send whole proposed order back.
                  "availableFulfillmentOptions": [
                    "fulfillmentInfo": {
                      "delivery": {
                        "deliveryTimeIso8601": "2017-12-14T18:30:00-07:00"
                      }
                   ]
                }
              },
              "googleOrderId": "sample_google_order_id",
              "orderDate": "2017-07-17T12:00:00Z",
              "paymentInfo": {
                ...
              }
            }
          }
        }
      ]
    }
  ]
}

Örnek: SubmitOrderResponse siparişi kabul etme

Aşağıdaki snippet'te, sipariş karşılama işleminizin kullanıcının ön siparişini kabul ettiğini onayladığı bir sipariş gönderme yanıtı örneği gösterilmektedir.

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "orderUpdate": {
              "actionOrderId": "sample_action_order_id",
              "orderState": {
                "state": "CREATED",
                "label": "Order placed"
              },
              "receipt": {
                "userVisibleOrderId": "userVisibleId1234"
              },
              "updateTime": "2017-07-17T12:00:00Z",
              "orderManagementActions": [
                ...
              ],
              "infoExtension": {
                 "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
                 // Same as the user selected time.
                 "estimatedFulfillmentTimeIso8601": "2017-12-14T18:30:00-07:00"
              }
            }
          }
        }
      ]
    }
  }
}

Örnek: SubmitOrderResponse, slot kullanılamadığı için siparişi reddediyor

Aşağıdaki snippet'te, sipariş karşılama işleminizin uygun olmayan alan nedeniyle kullanıcının ön siparişini reddettiği bir sipariş gönderme yanıtı örneği gösterilmektedir.

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "orderUpdate": {
              "actionOrderId": "sample_action_order_id",
              "orderState": {
                "state": "REJECTED",
                "label": "Unavailable slot"
              },
              "rejectionInfo": {
                // Note that this UNAVAILABLE_SLOT is different from the enum
                // with the same name proposed for FoodOrderError.
                "state": "UNAVAILABLE_SLOT",
                "label": "Unavailable slot"
              },
              "updateTime": "2017-07-17T12:00:00Z",
              "orderManagementActions": [
                ...
              ]
            }
          }
        }
      ]
    }
  }
}

Ön sipariş örnekleri

AdvanceServiceDeliveryHoursSpecification türü, kullanıcıların siparişlerini önceden planlamaları için teslimat veya teslim alma saatlerini belirtmek amacıyla kullanılabilir.

Not: Hizmetin karşılanması için belirtmeniz gereken iki ayrı zaman aralığı vardır: kullanıcıların ne zaman sipariş verebileceğini belirten sipariş aralığı ve siparişin ne zaman karşılanacağını belirten sipariş karşılama aralığı. OpeningHoursSpecification nesnesi, kullanıcının siparişi ne zaman verebileceğini tanımlar. Alt sipariş karşılama süreleri (ServiceDeliveryHoursSpecification veya AdvanceServiceDeliveryHoursSpecification) siparişin ne zaman karşılanabileceğini tanımlar.

Aşağıdaki örnekte bir hizmetin 15 dakikalık hizmet aralıklarıyla ön siparişleri kabul etmek için kullandığı saatler tanımlanmaktadır.

{
  "hoursAvailable": [
    {
      "@type": "OpeningHoursSpecification",
      "opens": "T00:00:00", // Ordering available 24 hours
      "closes": "T23:59:59",
      "deliveryHours": [
        {
          "@type": "ServiceDeliveryHoursSpecification",
          "opens": "T09:00:00", // ASAP orders b/w 9am and 8:59:59pm
          "closes": "T21:00:00",
          "deliveryLeadTime": {
            "value": "60",
            "unitCode": "MIN"
          }
        },
        {
          "@type": "AdvanceServiceDeliveryHoursSpecification",
          "opens": "T10:00:00",  // Delivery between 10AM and 7:59:59PM
          "closes": "T20:00:00",
          "serviceTimeInterval": "PT15M", // in slots spaced 15 minutes apart (ISO8601)
          "advanceBookingRequirement": {
            "minValue": 60,   // The slot should be at least 60 mins away
            "maxValue": 8640, // but not more than 6 days away
            "unitCode": "MIN"
          }
        }
      ]
    }
  ]
}

Aşağıdaki örnekte, hizmetin Noel günü aynı gün siparişler için açık, ancak o gün için planlanan gelişmiş siparişlerde kapalı olduğunu nasıl belirtebileceğiniz gösterilmektedir. Bu örnek aşağıdaki senaryoları destekler:

  • Kullanıcılar 25 Aralık'ta aynı gün teslimat için sipariş verebilir.
  • Kullanıcılar, 27 Aralık olarak planlanan teslimat için 25 Aralık'ta ön sipariş verebilir.
  • Kullanıcılar, 25 Aralık'ta planlanan teslimat için 22 Aralık'tan önce sipariş veremez.
{
  "specialOpeningHoursSpecification": {
    "@type": "AdvanceServiceDeliveryHoursSpecification",
    "validFrom": "2018-12-25T00:00:00-07:00",
    "validThrough": "2018-12-26T00:00:00-07:00",
    "opens": "T00:00:00", // No advance ordering
    "closes": "T00:00:00"
  }
}

Aşağıdaki örnekte, hizmetin Noel günü için planlanmış aynı gün verilen siparişler veya ön siparişler için kapalı olduğunu, ancak ileri bir gün için planlanan gelişmiş siparişler için açık olduğunu nasıl belirtebileceğiniz gösterilmektedir. Bu örnek aşağıdaki senaryoları destekler:

  • Kullanıcılar 25 Aralık'ta aynı gün teslimat için sipariş veremez.
  • Kullanıcılar, 27 Aralık olarak planlanan teslimat için 25 Aralık'ta ön sipariş verebilir.
  • Kullanıcılar, 25 Aralık'ta planlanan teslimat için 22 Aralık'tan önce sipariş veremez.
{
  "specialOpeningHoursSpecification": [
    {
      "@type": "ServiceDeliveryHoursSpecification",
      "validFrom": "2018-12-25T00:00:00-07:00",
      "validThrough": "2018-12-26T00:00:00-07:00",
      "opens": "T00:00:00", // No ASAP ordering on Christmas
      "closes": "T00:00:00"
    },
    {
      "@type": "AdvanceServiceDeliveryHoursSpecification",
      "validFrom": "2018-12-25T00:00:00-07:00",
      "validThrough": "2018-12-26T00:00:00-07:00",
      "opens": "T00:00:00", // Orders cannot be scheduled for Christmas
      "closes": "T00:00:00"
    }
  ]
}

Aşağıdaki örnek Hizmet, 7/24 siparişleri kabul eder ve hafta içi 10:00-14:59:59 saatleri arasında teslim edilir:

...
{
  "@type": "OpeningHoursSpecification",
  "opens": "T00:00:00",
  "closes": "T23:59:59",
  "deliveryHours": {
    "@type": "AdvanceServiceDeliveryHoursSpecification",
    "opens": "T10:00:00", // Delivery starts at 10:00AM
    "closes": "T15:00:00", // Delivery ends at 3:00PM. Delivery from 10AM-2:59:59PM.
    "dayOfWeek": [
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday"
    ],
    "serviceTimeInterval": "PT15M", // in slots spaced 15 minutes apart
    "advanceBookingRequirement": {
      "minValue": 60,   // The slot should be at least 60 mins away
      "maxValue": 8640, // but not more than 6 days away
      "unitCode": "MIN"
    }
  }
}
...

Aşağıdaki örnek Hizmet, her gün 08:00-16:59:59 saatleri arasında verilen siparişleri kabul eder. Müşteriler bir saat içinde teslimat yapmayı veya aşağıdaki aralıklardan birini seçebilir:

...
{
  "@type": "OpeningHoursSpecification",
  "opens": "T08:00:00",  // Ordering opens at 8:00AM
  "closes": "T17:00:00",  // Ordering closes at 5:00PM, last order at 4:59:59PM
  "deliveryHours": [
    {
      "@type": "ServiceDeliveryHoursSpecification",
      "opens": "T08:00:00",
      "closes": "T17:00:00",
      "deliveryLeadTime": {
        "@type": "QuantitativeValue",
        "value": "60", // If no exact deliveryLeadTime, put a maximum time
        "unitCode": "MIN"
      }
    },
    {
      "@type": "AdvanceServiceDeliveryHoursSpecification",
      "opens": "T08:00:00",
      "closes": "T17:00:00",
      "serviceTimeInterval": "PT15M", // in slots spaced 15 minutes apart
      "advanceBookingRequirement": {
        "minValue": 90,   // The slot should be at least 90 mins away
        "maxValue": 8640, // but not more than 6 days away
        "unitCode": "MIN"
      }
    }
  ]
}
...

Aşağıdaki örnekte, mağazanın hafta içi 08:00-16:59:59 saatleri arasında, hafta sonları ise 08:00-18:59 saatleri arasında açıldığı bir durum gösterilmektedir. Siparişler 7/24 kabul edilmez.

...
{
  // On weekdays, ordering open from 8AM-4:59:59PM.
  "@type": "OpeningHoursSpecification",
  "opens": "T08:00:00",
  "closes": "T17:00:00",
  "dayOfWeek": [
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday"
  ],
  "deliveryHours": [
    {
      // Fulfillment between 8AM-4:59:59PM on weekdays.
      "@type": "AdvanceServiceDeliveryHoursSpecification",
      "opens": "T08:00:00",
      "closes": "T17:00:00",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "serviceTimeInterval": "PT15M",
      "advanceBookingRequirement": {
        "minValue": 60,
        "maxValue": 8640,
        "unitCode": "MIN"
      }
    },
    {
      // Fulfillment between 8AM-6:59:59PM on weekends (even for orders placed on a
      // weekday).
      "@type": "AdvanceServiceDeliveryHoursSpecification",
      "opens": "T08:00:00",
      "closes": "T19:00:00",
      "dayOfWeek": [
        "Saturday",
        "Sunday"
      ],
      "serviceTimeInterval": "PT15M",
      "advanceBookingRequirement": {
        "minValue": 60,
        "maxValue": 8640,
        "unitCode": "MIN"
      }
    }
  ]
},
{
  // On weekends, one can place orders upto 6:59:59PM.
  "@type": "OpeningHoursSpecification",
  "opens": "T08:00:00",
  "closes": "T19:00:00",
  "dayOfWeek": [
    "Saturday",
    "Sunday"
  ],
  "deliveryHours": [
    {
      // But fulfillment on weekdays is only till 4:59:59PM.
      "@type": "AdvanceServiceDeliveryHoursSpecification",
      "opens": "T08:00:00",
      "closes": "T17:00:00",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "serviceTimeInterval": "PT15M",
      "advanceBookingRequirement": {
        "minValue": 60,
        "maxValue": 8640,
        "unitCode": "MIN"
      }
    },
    {
      // Fulfillment on weekends is till 6:59:59PM.
      "@type": "AdvanceServiceDeliveryHoursSpecification",
      "opens": "T08:00:00",
      "closes": "T19:00:00",
      "dayOfWeek": [
        "Saturday",
        "Sunday"
      ],
      "serviceTimeInterval": "PT15M",
      "advanceBookingRequirement": {
        "minValue": 60,
        "maxValue": 8640,
        "unitCode": "MIN"
      }
    }
  ]
}
...