v1 önceden sipariş özelliği

Kullanıcıların yemek siparişlerini önceden planlayabilmesi için sipariş tamamlama adımınıza destek ekleyebilirsiniz. Bu desteği sipariş tamamlama işlemine uygulamadan önce, envanter feed'i şemasında (AdvanceServiceDeliveryHoursSpecification) açıklandığı gibi, kullanıcıların ön sipariş verebileceği saatleri belirten bir hizmet envanteri feed'i oluşturun.

Ön sipariş aralıkları

Google, bir restoran veya hizmetin teslimat sürelerine (AdvanceServiceDeliveryHoursSpecification bölümünde tanımlandığı şekilde) göre 7 güne kadar ileri tarihli, 15 dakikalık aralıklarla erken sipariş aralıkları önerir.

Ön sipariş için önerilen zaman aralıklarını almak üzere ödeme sırasında FoodCartExtension nesnesinin fulfillmentPreference alanında aşağıdaki değerleri kullanın:

  • PickupInfo.pickupTimeIso8601
  • DeliveryInfo.deliveryTimeIso8601

Ödeme aşamasında ön siparişleri uygulama

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

Senaryo Sipariş karşılama davranışı
İstenilen aralık için ön sipariş verilebilir. Aynı yuvada bir ProposedOrder oluşturarak P0M ("en kısa sürede") veya FUTURE_SLOT arabasını kabul edin. Bir alanı kabul eden ödeme yanıtı örneği için bu kod snippet'ine bakın.
İstenen aralık için ön sipariş karşılanamıyor. Sağlayıcınız aşağıdakileri yapmalıdır:
  1. İstenen P0M veya FUTURE_SLOT alışveriş sepetini reddedin ve siparişin yerine getirilememe nedenini FoodErrorExtension nesnesinde belirtin.
    • Sipariş, kapasite nedeniyle karşılanamıyorsa NO_CAPACITY hata türüne sahip bir FoodOrderError belirtin.
    • Restoran kapalı olduğu için sipariş karşılanamıyorsa CLOSED hata türü için bir FoodOrderError belirtin.
    • Sipariş başka bir nedenle yerine getirilemiyorsa UNAVAILABLE_SLOT hata türü için bir FoodOrderError belirtin.
  2. Mümkünse correctedProposedOrder öğesinde alternatif P0M veya FUTURE_SLOT değerleri sağlayın. Bu değerler, geçerli zamandan itibaren sonraki 7 gün için geçerli tüm sipariş tamamlama Mümkün olduğunda P0M yuvasını ekleyin.

Alternatif aralık ö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ş verme aralıkları uygun değilse sipariş karşılama ekibiniz CheckoutResponseMessage nesnesini kullanarak alternatifler önerebilir.

Alternatif ön sipariş aralıklarını 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ü (ör. UNAVAILABLE_SLOT, NO_CAPACITY veya CLOSED) belirtin.
  2. correctedProposedOrder parametresinde, availableFulfillmentOptions aracılığıyla alternatif P0M veya FUTURE_SLOT değerleri sağlayın.

Alternatif aralık, sipariş verme tarihinden sonraki 7 gün için geçerli olmalı ve kullanıcının istediği sepetin karşılanabileceği tüm aralıkları içermelidir.

Örneğin, öğle yemeği spesiyallerinin yalnızca pazartesiden cumaya 11:00-13:00 saatleri arasında sunulduğunu varsayalım. Kullanıcı daha sonra alışveriş sepetine özel öğle yemeği eklemeye çalışır ancak seçtiği zaman aralığı doludur. Bu durumda, öğle yemeği spesiyalleri sepette tutulmalı ve önümüzdeki 7 gün için yalnızca 11:00-13:00 arasındaki zaman aralıkları döndürülmelidir.

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

Kullanılabilir zaman aralığı yoksa veya restoran ya da hizmet önceden siparişleri desteklemiyorsa correctedProposedOrder sağlamanıza gerek yoktur.

Restoran veya hizmetin ön sipariş almaya hazır olduğu durumlarda, ön sipariş için ödeme isteği ve yanıt akışı sırasında sipariş karşılama hizmetiniz ile Google arasında geçen JSON mesajları için aşağıdaki örneklere bakın.

Örnek: Teslimat aralığı içeren CheckoutRequest

Aşağıdaki snippet'te, ön sipariş teslimat aralığı içeren 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, aralığı kabul ediyor

Aşağıdaki snippet'te, sipariş karşılama ekibinizin önerilen ön sipariş aralıkları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 slotlar içeren CheckoutResponse

Aşağıdaki snippet'te, sipariş karşılama ekibinizin alternatif ön sipariş aralıkları ö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önderirken ön siparişleri uygulama

Sipariş gönderiminde, ön sipariş aralıklarında bir sorun varsa SubmitOrderResponseMessage, RejectionInfo nesnesinde nedeni (UNAVAILABLE_SLOT veya UNKNOWN gibi) içermelidir.

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

Sipariş karşılama ekibiniz siparişi restorana daha sonra gönderirse Asenkron Sipariş Güncelleme İşlemi'ni kullanarak Google'a bir güncelleme gönderin.

Siparişin yerine getirilmesiyle ilgili sipariş gönderme yanıtınızın veya sonraki eşzamansız sipariş güncellemelerinizin 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ına ayarlayın.
  • Restoran veya servisten daha doğru bir tahmini teslimat süresi olduğunda değeri, teslimat veya teslim alma süresi olarak ayarlayın.

Örnek: Teslimat aralığı içeren SubmitOrderRequest

Aşağıdaki snippet'te, kullanıcının seçtiği ön sipariş aralığını gösteren 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: Siparişi kabul eden SubmitOrderResponse

Aşağıdaki snippet'te, sipariş gönderme yanıtı örneği gösterilmektedir. Bu örnekte, sipariş karşılama hizmetiniz kullanıcının ön siparişini kabul ettiğini onaylamaktadır.

{
  "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: Açılış olmaması nedeniyle siparişi reddeden SubmitOrderResponse

Aşağıdaki snippet'te, sipariş karşılama hizmetinizin müsait olmayan bir zaman aralığı 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: Hizmet karşılama 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 karşılama aralığı. OpeningHoursSpecification nesnesi, kullanıcının ne zaman sipariş verebileceğini tanımlar. Alt öğelerin 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ı ile ön sipariş kabul etme saatleri 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 teslimat için açık, ancak aynı gün için planlanmış ileri siparişler için 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 seçeneğiyle sipariş verebilir.
  • Kullanıcılar 27 Aralık'ta teslim edilmesi planlanan ürünler için 25 Aralık'ta ön sipariş verebilir.
  • Kullanıcılar 22 Aralık'ta 25 Aralık'ta teslimat için ön 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 aynı gün teslimat veya Noel günü için planlanmış ön siparişler için kapalı, daha sonraki bir gün için planlanmış ön 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 seçeneğiyle sipariş veremez.
  • Kullanıcılar 27 Aralık'ta teslim edilmesi planlanan ürünler için 25 Aralık'ta ön sipariş verebilir.
  • Kullanıcılar 22 Aralık'ta 25 Aralık'ta teslimat için ön 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, siparişleri 7/24 kabul eder ve hafta içi 10:00-23:59:59 arasında teslimat yapar:

...
{
  "@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 hizmette siparişler her gün 08:00-20:59:59 arasında kabul edilir. Müşteriler bir saat içinde teslimat seçebilir veya aşağıdaki aralıklardan birini tercih edebilir:

...
{
  "@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, hafta sonları ise 08:00-18:59 arasında açık olduğu 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"
      }
    }
  ]
}
...